diff --git a/web/document_properties.js b/web/document_properties.js index 050865734..e5da09d8f 100644 --- a/web/document_properties.js +++ b/web/document_properties.js @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* globals PDFView, mozL10n, getPDFFileNameFromURL */ +/* globals PDFView, Promise, mozL10n, getPDFFileNameFromURL */ 'use strict'; @@ -60,6 +60,10 @@ var DocumentProperties = { options.closeButton.addEventListener('click', this.hide.bind(this)); } + this.dataAvailablePromise = new Promise(function (resolve) { + this.resolveDataAvailable = resolve; + }.bind(this)); + // Bind the event listener for the Esc key (to close the dialog). window.addEventListener('keydown', function (e) { @@ -77,14 +81,15 @@ var DocumentProperties = { // Get the file size. PDFView.pdfDocument.getDownloadInfo().then(function(data) { - self.setFileSize(data.length); - }); + this.setFileSize(data.length); + this.updateUI(this.fileSizeField, this.fileSize); + }.bind(this)); // Get the other document properties. PDFView.pdfDocument.getMetadata().then(function(data) { var fields = [ { field: self.fileNameField, content: self.fileName }, - { field: self.fileSizeField, content: self.fileSize }, + // The fileSize field is updated once getDownloadInfo is resolved. { field: self.titleField, content: data.info.Title }, { field: self.authorField, content: data.info.Author }, { field: self.subjectField, content: data.info.Subject }, @@ -102,12 +107,15 @@ var DocumentProperties = { // Show the properties in the dialog. for (var item in fields) { var element = fields[item]; - if (element.field && element.content !== undefined && - element.content !== '') { - element.field.textContent = element.content; - } + this.updateUI(element.field, element.content); } - }); + }.bind(this)); + }, + + updateUI: function documentPropertiesUpdateUI(field, content) { + if (field && content !== undefined && content !== '') { + field.textContent = content; + } }, setFileSize: function documentPropertiesSetFileSize(fileSize) { @@ -132,7 +140,10 @@ var DocumentProperties = { this.visible = true; this.overlayContainer.classList.remove('hidden'); this.overlayContainer.lastElementChild.classList.remove('hidden'); - this.getProperties(); + + this.dataAvailablePromise.then(function () { + this.getProperties(); + }.bind(this)); }, hide: function documentPropertiesClose() { diff --git a/web/viewer.js b/web/viewer.js index 0746b3bf9..b100f47f4 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -887,6 +887,8 @@ var PDFView = { this.pdfDocument = pdfDocument; + DocumentProperties.resolveDataAvailable(); + pdfDocument.getDownloadInfo().then(function() { PDFView.loadingBar.hide(); var outerContainer = document.getElementById('outerContainer');