Merge pull request #9821 from Snuffleupagus/onOpenWithURL-originalUrl

Set the correct document title when opening a new file in the `GENERIC` default viewer
This commit is contained in:
Tim van der Meij 2018-06-17 20:27:16 +02:00 committed by GitHub
commit 3b07147d98
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 12 deletions

View File

@ -593,13 +593,13 @@ let PDFViewerApplication = {
onOpenWithData(data) { onOpenWithData(data) {
PDFViewerApplication.open(data); PDFViewerApplication.open(data);
}, },
onOpenWithURL(url, length, originalURL) { onOpenWithURL(url, length, originalUrl) {
let file = url, args = null; let file = url, args = null;
if (length !== undefined) { if (length !== undefined) {
args = { length, }; args = { length, };
} }
if (originalURL !== undefined) { if (originalUrl !== undefined) {
file = { url, originalURL, }; file = { url, originalUrl, };
} }
PDFViewerApplication.open(file, args); PDFViewerApplication.open(file, args);
}, },
@ -615,7 +615,7 @@ let PDFViewerApplication = {
}); });
}, },
setTitleUsingUrl(url) { setTitleUsingUrl(url = '') {
this.url = url; this.url = url;
this.baseUrl = url.split('#')[0]; this.baseUrl = url.split('#')[0];
let title = getPDFFileNameFromURL(url, ''); let title = getPDFFileNameFromURL(url, '');
@ -1928,8 +1928,13 @@ if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {
let file = evt.fileInput.files[0]; let file = evt.fileInput.files[0];
if (URL.createObjectURL && !AppOptions.get('disableCreateObjectURL')) { if (URL.createObjectURL && !AppOptions.get('disableCreateObjectURL')) {
PDFViewerApplication.open(URL.createObjectURL(file)); let url = URL.createObjectURL(file);
if (file.name) {
url = { url, originalUrl: file.name, };
}
PDFViewerApplication.open(url);
} else { } else {
PDFViewerApplication.setTitleUsingUrl(file.name);
// Read the local file into a Uint8Array. // Read the local file into a Uint8Array.
let fileReader = new FileReader(); let fileReader = new FileReader();
fileReader.onload = function webViewerChangeFileReaderOnload(evt) { fileReader.onload = function webViewerChangeFileReaderOnload(evt) {
@ -1939,8 +1944,6 @@ if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {
fileReader.readAsArrayBuffer(file); fileReader.readAsArrayBuffer(file);
} }
PDFViewerApplication.setTitleUsingUrl(file.name);
// URL does not reflect proper document location - hiding some icons. // URL does not reflect proper document location - hiding some icons.
let appConfig = PDFViewerApplication.appConfig; let appConfig = PDFViewerApplication.appConfig;
appConfig.toolbar.viewBookmark.setAttribute('hidden', 'true'); appConfig.toolbar.viewBookmark.setAttribute('hidden', 'true');

View File

@ -201,7 +201,7 @@ function requestAccessToLocalFile(fileUrl, overlayManager, callback) {
let file = this.files[0]; let file = this.files[0];
if (file) { if (file) {
let originalFilename = decodeURIComponent(fileUrl.split('/').pop()); let originalFilename = decodeURIComponent(fileUrl.split('/').pop());
let originalURL = fileUrl; let originalUrl = fileUrl;
if (originalFilename !== file.name) { if (originalFilename !== file.name) {
let msg = 'The selected file does not match the original file.' + let msg = 'The selected file does not match the original file.' +
'\nOriginal: ' + originalFilename + '\nOriginal: ' + originalFilename +
@ -213,9 +213,9 @@ function requestAccessToLocalFile(fileUrl, overlayManager, callback) {
} }
// There is no way to retrieve the original URL from the File object. // There is no way to retrieve the original URL from the File object.
// So just generate a fake path. // So just generate a fake path.
originalURL = 'file:///fakepath/to/' + encodeURIComponent(file.name); originalUrl = 'file:///fakepath/to/' + encodeURIComponent(file.name);
} }
callback(URL.createObjectURL(file), file.size, originalURL); callback(URL.createObjectURL(file), file.size, originalUrl);
overlayManager.close('chromeFileAccessOverlay'); overlayManager.close('chromeFileAccessOverlay');
} }
}; };
@ -384,8 +384,8 @@ ChromeExternalServices.initPassiveLoading = function(callbacks) {
let { overlayManager, } = PDFViewerApplication; let { overlayManager, } = PDFViewerApplication;
// defaultUrl is set in viewer.js // defaultUrl is set in viewer.js
ChromeCom.resolvePDFFile(AppOptions.get('defaultUrl'), overlayManager, ChromeCom.resolvePDFFile(AppOptions.get('defaultUrl'), overlayManager,
function(url, length, originalURL) { function(url, length, originalUrl) {
callbacks.onOpenWithURL(url, length, originalURL); callbacks.onOpenWithURL(url, length, originalUrl);
}); });
}; };
ChromeExternalServices.createDownloadManager = function(options) { ChromeExternalServices.createDownloadManager = function(options) {