Browse Source

Prevent the Document Properties from being empty when the dialog is opened before the file has started loading

Jonas Jenwald 11 years ago
parent
commit
025f340228
  1. 27
      web/document_properties.js
  2. 2
      web/viewer.js

27
web/document_properties.js

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
/* globals PDFView, mozL10n, getPDFFileNameFromURL */ /* globals PDFView, Promise, mozL10n, getPDFFileNameFromURL */
'use strict'; 'use strict';
@ -60,6 +60,10 @@ var DocumentProperties = {
options.closeButton.addEventListener('click', this.hide.bind(this)); 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). // Bind the event listener for the Esc key (to close the dialog).
window.addEventListener('keydown', window.addEventListener('keydown',
function (e) { function (e) {
@ -77,14 +81,15 @@ var DocumentProperties = {
// Get the file size. // Get the file size.
PDFView.pdfDocument.getDownloadInfo().then(function(data) { 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. // Get the other document properties.
PDFView.pdfDocument.getMetadata().then(function(data) { PDFView.pdfDocument.getMetadata().then(function(data) {
var fields = [ var fields = [
{ field: self.fileNameField, content: self.fileName }, { 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.titleField, content: data.info.Title },
{ field: self.authorField, content: data.info.Author }, { field: self.authorField, content: data.info.Author },
{ field: self.subjectField, content: data.info.Subject }, { field: self.subjectField, content: data.info.Subject },
@ -102,12 +107,15 @@ var DocumentProperties = {
// Show the properties in the dialog. // Show the properties in the dialog.
for (var item in fields) { for (var item in fields) {
var element = fields[item]; var element = fields[item];
if (element.field && element.content !== undefined && this.updateUI(element.field, element.content);
element.content !== '') {
element.field.textContent = element.content;
} }
}.bind(this));
},
updateUI: function documentPropertiesUpdateUI(field, content) {
if (field && content !== undefined && content !== '') {
field.textContent = content;
} }
});
}, },
setFileSize: function documentPropertiesSetFileSize(fileSize) { setFileSize: function documentPropertiesSetFileSize(fileSize) {
@ -132,7 +140,10 @@ var DocumentProperties = {
this.visible = true; this.visible = true;
this.overlayContainer.classList.remove('hidden'); this.overlayContainer.classList.remove('hidden');
this.overlayContainer.lastElementChild.classList.remove('hidden'); this.overlayContainer.lastElementChild.classList.remove('hidden');
this.dataAvailablePromise.then(function () {
this.getProperties(); this.getProperties();
}.bind(this));
}, },
hide: function documentPropertiesClose() { hide: function documentPropertiesClose() {

2
web/viewer.js

@ -887,6 +887,8 @@ var PDFView = {
this.pdfDocument = pdfDocument; this.pdfDocument = pdfDocument;
DocumentProperties.resolveDataAvailable();
pdfDocument.getDownloadInfo().then(function() { pdfDocument.getDownloadInfo().then(function() {
PDFView.loadingBar.hide(); PDFView.loadingBar.hide();
var outerContainer = document.getElementById('outerContainer'); var outerContainer = document.getElementById('outerContainer');

Loading…
Cancel
Save