|
@@ -40,61 +40,62 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
|
|
{
|
|
|
throw new Error('Module "pdfjs-web/chromecom" shall not be used outside ' + 'CHROME build.');
|
|
|
}
|
|
|
-var ChromeCom = {};
|
|
|
-ChromeCom.request = function ChromeCom_request(action, data, callback) {
|
|
|
- var message = {
|
|
|
- action: action,
|
|
|
- data: data
|
|
|
- };
|
|
|
- if (!chrome.runtime) {
|
|
|
- console.error('chrome.runtime is undefined.');
|
|
|
- if (callback) {
|
|
|
- callback();
|
|
|
+var ChromeCom = {
|
|
|
+ request: function request(action, data, callback) {
|
|
|
+ var message = {
|
|
|
+ action: action,
|
|
|
+ data: data
|
|
|
+ };
|
|
|
+ if (!chrome.runtime) {
|
|
|
+ console.error('chrome.runtime is undefined.');
|
|
|
+ if (callback) {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ } else if (callback) {
|
|
|
+ chrome.runtime.sendMessage(message, callback);
|
|
|
+ } else {
|
|
|
+ chrome.runtime.sendMessage(message);
|
|
|
}
|
|
|
- } else if (callback) {
|
|
|
- chrome.runtime.sendMessage(message, callback);
|
|
|
- } else {
|
|
|
- chrome.runtime.sendMessage(message);
|
|
|
- }
|
|
|
-};
|
|
|
-ChromeCom.resolvePDFFile = function (file, overlayManager, callback) {
|
|
|
- file = file.replace(/^drive:/i, 'filesystem:' + location.origin + '/external/');
|
|
|
- if (/^filesystem:/.test(file) && !_pdf.PDFJS.disableWorker) {
|
|
|
- var resolveLocalFileSystemURL = window.resolveLocalFileSystemURL || window.webkitResolveLocalFileSystemURL;
|
|
|
- resolveLocalFileSystemURL(file, function onResolvedFSURL(fileEntry) {
|
|
|
- fileEntry.file(function (fileObject) {
|
|
|
- var blobUrl = URL.createObjectURL(fileObject);
|
|
|
- callback(blobUrl, fileObject.size);
|
|
|
+ },
|
|
|
+ resolvePDFFile: function resolvePDFFile(file, overlayManager, callback) {
|
|
|
+ file = file.replace(/^drive:/i, 'filesystem:' + location.origin + '/external/');
|
|
|
+ if (/^filesystem:/.test(file) && !_pdf.PDFJS.disableWorker) {
|
|
|
+ var resolveLocalFileSystemURL = window.resolveLocalFileSystemURL || window.webkitResolveLocalFileSystemURL;
|
|
|
+ resolveLocalFileSystemURL(file, function onResolvedFSURL(fileEntry) {
|
|
|
+ fileEntry.file(function (fileObject) {
|
|
|
+ var blobUrl = URL.createObjectURL(fileObject);
|
|
|
+ callback(blobUrl, fileObject.size);
|
|
|
+ });
|
|
|
+ }, function onFileSystemError(error) {
|
|
|
+ console.warn('Cannot resolve file ' + file + ', ' + error.name + ' ' + error.message);
|
|
|
+ callback(file);
|
|
|
});
|
|
|
- }, function onFileSystemError(error) {
|
|
|
- console.warn('Cannot resolve file ' + file + ', ' + error.name + ' ' + error.message);
|
|
|
- callback(file);
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- if (/^https?:/.test(file)) {
|
|
|
- setReferer(file, function () {
|
|
|
- callback(file);
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
- if (/^file?:/.test(file)) {
|
|
|
- getEmbedderOrigin(function (origin) {
|
|
|
- if (origin && !/^file:|^chrome-extension:/.test(origin)) {
|
|
|
- _app.PDFViewerApplication.error('Blocked ' + origin + ' from loading ' + file + '. Refused to load a local file in a non-local page ' + 'for security reasons.');
|
|
|
- return;
|
|
|
- }
|
|
|
- isAllowedFileSchemeAccess(function (isAllowedAccess) {
|
|
|
- if (isAllowedAccess) {
|
|
|
- callback(file);
|
|
|
- } else {
|
|
|
- requestAccessToLocalFile(file, overlayManager);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (/^https?:/.test(file)) {
|
|
|
+ setReferer(file, function () {
|
|
|
+ callback(file);
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (/^file?:/.test(file)) {
|
|
|
+ getEmbedderOrigin(function (origin) {
|
|
|
+ if (origin && !/^file:|^chrome-extension:/.test(origin)) {
|
|
|
+ _app.PDFViewerApplication.error('Blocked ' + origin + ' from loading ' + file + '. Refused to load a local file in a non-local page ' + 'for security reasons.');
|
|
|
+ return;
|
|
|
}
|
|
|
+ isAllowedFileSchemeAccess(function (isAllowedAccess) {
|
|
|
+ if (isAllowedAccess) {
|
|
|
+ callback(file);
|
|
|
+ } else {
|
|
|
+ requestAccessToLocalFile(file, overlayManager);
|
|
|
+ }
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
- return;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ callback(file);
|
|
|
}
|
|
|
- callback(file);
|
|
|
};
|
|
|
function getEmbedderOrigin(callback) {
|
|
|
var origin = window === top ? location.origin : location.ancestorOrigins[0];
|
|
@@ -123,7 +124,7 @@ function reloadIfRuntimeIsUnavailable() {
|
|
|
location.reload();
|
|
|
}
|
|
|
}
|
|
|
-var chromeFileAccessOverlayPromise;
|
|
|
+var chromeFileAccessOverlayPromise = void 0;
|
|
|
function requestAccessToLocalFile(fileUrl, overlayManager) {
|
|
|
var onCloseOverlay = null;
|
|
|
if (top !== window) {
|
|
@@ -214,7 +215,7 @@ if (window === top) {
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
-var port;
|
|
|
+var port = void 0;
|
|
|
function setReferer(url, callback) {
|
|
|
if (!port) {
|
|
|
port = chrome.runtime.connect({ name: 'chromecom-referrer' });
|