1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | 'use strict';
|
23 |
|
24 | Object.defineProperty(exports, "__esModule", {
|
25 | value: true
|
26 | });
|
27 | exports.ChromeCom = undefined;
|
28 |
|
29 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
30 |
|
31 | var _app = require('./app');
|
32 |
|
33 | var _app_options = require('./app_options');
|
34 |
|
35 | var _preferences = require('./preferences');
|
36 |
|
37 | var _download_manager = require('./download_manager');
|
38 |
|
39 | var _genericl10n = require('./genericl10n');
|
40 |
|
41 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
42 |
|
43 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
44 |
|
45 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
46 |
|
47 | {
|
48 | throw new Error('Module "pdfjs-web/chromecom" shall not be used outside ' + 'CHROME build.');
|
49 | }
|
50 | var ChromeCom = {
|
51 | request: function request(action, data, callback) {
|
52 | var message = {
|
53 | action: action,
|
54 | data: data
|
55 | };
|
56 | if (!chrome.runtime) {
|
57 | console.error('chrome.runtime is undefined.');
|
58 | if (callback) {
|
59 | callback();
|
60 | }
|
61 | } else if (callback) {
|
62 | chrome.runtime.sendMessage(message, callback);
|
63 | } else {
|
64 | chrome.runtime.sendMessage(message);
|
65 | }
|
66 | },
|
67 | resolvePDFFile: function resolvePDFFile(file, overlayManager, callback) {
|
68 | file = file.replace(/^drive:/i, 'filesystem:' + location.origin + '/external/');
|
69 | if (/^https?:/.test(file)) {
|
70 | setReferer(file, function () {
|
71 | callback(file);
|
72 | });
|
73 | return;
|
74 | }
|
75 | if (/^file?:/.test(file)) {
|
76 | getEmbedderOrigin(function (origin) {
|
77 | if (origin && !/^file:|^chrome-extension:/.test(origin)) {
|
78 | _app.PDFViewerApplication.error('Blocked ' + origin + ' from loading ' + file + '. Refused to load a local file in a non-local page ' + 'for security reasons.');
|
79 | return;
|
80 | }
|
81 | isAllowedFileSchemeAccess(function (isAllowedAccess) {
|
82 | if (isAllowedAccess) {
|
83 | callback(file);
|
84 | } else {
|
85 | requestAccessToLocalFile(file, overlayManager);
|
86 | }
|
87 | });
|
88 | });
|
89 | return;
|
90 | }
|
91 | callback(file);
|
92 | }
|
93 | };
|
94 | function getEmbedderOrigin(callback) {
|
95 | var origin = window === top ? location.origin : location.ancestorOrigins[0];
|
96 | if (origin === 'null') {
|
97 | getParentOrigin(callback);
|
98 | } else {
|
99 | callback(origin);
|
100 | }
|
101 | }
|
102 | function getParentOrigin(callback) {
|
103 | ChromeCom.request('getParentOrigin', null, callback);
|
104 | }
|
105 | function isAllowedFileSchemeAccess(callback) {
|
106 | ChromeCom.request('isAllowedFileSchemeAccess', null, callback);
|
107 | }
|
108 | function isRuntimeAvailable() {
|
109 | try {
|
110 | if (chrome.runtime && chrome.runtime.getManifest()) {
|
111 | return true;
|
112 | }
|
113 | } catch (e) {}
|
114 | return false;
|
115 | }
|
116 | function reloadIfRuntimeIsUnavailable() {
|
117 | if (!isRuntimeAvailable()) {
|
118 | location.reload();
|
119 | }
|
120 | }
|
121 | var chromeFileAccessOverlayPromise = void 0;
|
122 | function requestAccessToLocalFile(fileUrl, overlayManager) {
|
123 | var onCloseOverlay = null;
|
124 | if (top !== window) {
|
125 | window.addEventListener('focus', reloadIfRuntimeIsUnavailable);
|
126 | onCloseOverlay = function onCloseOverlay() {
|
127 | window.removeEventListener('focus', reloadIfRuntimeIsUnavailable);
|
128 | reloadIfRuntimeIsUnavailable();
|
129 | overlayManager.close('chromeFileAccessOverlay');
|
130 | };
|
131 | }
|
132 | if (!chromeFileAccessOverlayPromise) {
|
133 | chromeFileAccessOverlayPromise = overlayManager.register('chromeFileAccessOverlay', document.getElementById('chromeFileAccessOverlay'), onCloseOverlay, true);
|
134 | }
|
135 | chromeFileAccessOverlayPromise.then(function () {
|
136 | var iconPath = chrome.runtime.getManifest().icons[48];
|
137 | document.getElementById('chrome-pdfjs-logo-bg').style.backgroundImage = 'url(' + chrome.runtime.getURL(iconPath) + ')';
|
138 | var i18nFileAccessLabel = {
|
139 | "am": '\u1208\u134B\u12ED\u120D \u12E9\u12A0\u122D\u12A4\u120D\u12CE\u127D \u1218\u12F3\u1228\u123B \u134D\u1240\u12F5',
|
140 | "ar": '\u200F\u0627\u0644\u0633\u0645\u0627\u062D \u0628\u0627\u0644\u062F\u062E\u0648\u0644 \u0625\u0644\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 URL \u0644\u0644\u0645\u0644\u0641\u0627\u062A',
|
141 | "bg": '\u0414\u0430 \u0441\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438 \u0434\u043E\u0441\u0442\u044A\u043F \u0434\u043E URL \u0430\u0434\u0440\u0435\u0441\u0438\u0442\u0435 \u043D\u0430 \u0444\u0430\u0439\u043B\u043E\u0432\u0435\u0442\u0435',
|
142 | "bn": '\u09AB\u09BE\u0987\u09B2 URL\u0997\u09C1\u09B2\u09BF\u09A4\u09C7 \u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8 \u09AE\u099E\u09CD\u099C\u09C1\u09B0 \u0995\u09B0\u09C1\u09A8',
|
143 | "ca": 'Permet l\'acc\xE9s als URL de fitxer',
|
144 | "cs": 'Umo\u017Enit p\u0159\xEDstup k adres\xE1m URL soubor\u016F',
|
145 | "da": 'Tillad adgang til webadresser p\xE5 filer',
|
146 | "de": "Zugriff auf Datei-URLs zulassen",
|
147 | "el": '\u039D\u03B1 \u03B5\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03B5\u03C4\u03B1\u03B9 \u03B7 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7 \u03C3\u03B5 \u03B4\u03B9\u03B5\u03C5\u03B8\u03CD\u03BD\u03C3\u03B5\u03B9\u03C2 URL \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD',
|
148 | "en-GB": "Allow access to file URLs",
|
149 | "es": "Permitir acceso a URL de archivo",
|
150 | "es-419": "Permitir el acceso a las URL del archivo",
|
151 | "et": 'Luba juurdep\xE4\xE4s failide URL-idele',
|
152 | "fa": '\u200F\u0627\u062C\u0627\u0632\u0647\u0654 \u062F\u0633\u062A\u0631\u0633\u06CC \u0628\u0647 URL \u0647\u0627\u06CC \u0641\u0627\u06CC\u0644',
|
153 | "fi": 'Salli tiedostojen URL-osoitteiden k\xE4ytt\xF6',
|
154 | "fil": "Payagan ang access na mag-file ng mga URL",
|
155 | "fr": 'Autoriser l\'acc\xE8s aux URL de fichier',
|
156 | "gu": 'URL \u0AAB\u0ABE\u0A87\u0AB2 \u0A95\u0AB0\u0AB5\u0ABE \u0A8D\u0A95\u0ACD\u0AB8\u0AC7\u0AB8\u0AA8\u0AC0 \u0AAE\u0A82\u0A9C\u0AC2\u0AB0\u0AC0 \u0A86\u0AAA\u0ACB',
|
157 | "hi": '\u092B\u093C\u093E\u0907\u0932 URL \u0924\u0915 \u092A\u0939\u0941\u0902\u091A\u0928\u0947 \u0915\u0940 \u0905\u0928\u0941\u092E\u0924\u093F \u0926\u0947\u0902',
|
158 | "hr": "Dozvoli pristup URL-ovima datoteke",
|
159 | "hu": 'F\xE1jl URL-ekhez val\xF3 hozz\xE1f\xE9r\xE9s enged\xE9lyez\xE9se',
|
160 | "id": "Izinkan akses ke URL file",
|
161 | "it": "Consenti l'accesso agli URL dei file",
|
162 | "iw": '\u05D0\u05E4\u05E9\u05E8 \u05D2\u05D9\u05E9\u05D4 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05D0\u05EA\u05E8\u05D9\u05DD \u05E9\u05DC \u05E7\u05D1\u05E6\u05D9\u05DD',
|
163 | "ja": '\u30D5\u30A1\u30A4\u30EB\u306E URL \u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u8A31\u53EF\u3059\u308B',
|
164 | "kn": 'URL \u0C97\u0CB3\u0CA8\u0CCD\u0CA8\u0CC1 \u0CAB\u0CC8\u0CB2\u0CCD\u200C\u0C97\u0CB3\u0CBF\u0C97\u0CC6 \u0CAA\u0CCD\u0CB0\u0CB5\u0CC7\u0CB6\u0CBF\u0CB8\u0CB2\u0CC1 \u0C85\u0CA8\u0CC1\u0CAE\u0CA4\u0CBF\u0CB8\u0CBF',
|
165 | "ko": '\uD30C\uC77C URL\uC5D0 \uB300\uD55C \uC561\uC138\uC2A4 \uD5C8\uC6A9',
|
166 | "lt": "Leisti pasiekti failo URL",
|
167 | "lv": 'At\u013Caut piek\u013Cuvi faila vietr\u0101\u017Eiem URL',
|
168 | "ml": 'URL \u0D15\u0D33\u0D4D\u200D\u200C \u0D2B\u0D2F\u0D32\u0D4D\u200D\u200C \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D28\u0D4D\u0D28\u0D24\u0D3F\u0D28\u0D4D \u0D06\u0D15\u0D4D\u200D\u0D38\u0D38\u0D4D\u0D38\u0D4D \u0D05\u0D28\u0D41\u0D35\u0D26\u0D3F\u0D15\u0D4D\u0D15\u0D41\u0D15',
|
169 | "mr": '\u092B\u093E\u0907\u0932 URL \u092E\u0927\u094D\u092F\u0947 \u092A\u094D\u0930\u0935\u0947\u0936\u093E\u0938 \u0905\u0928\u0941\u092E\u0924\u0940 \u0926\u094D\u092F\u093E',
|
170 | "ms": "Membenarkan akses ke URL fail",
|
171 | "nl": "Toegang tot bestand-URL's toestaan",
|
172 | "no": "Tillat tilgang til filnettadresser",
|
173 | "pl": 'Zezwalaj na dost\u0119p do adres\xF3w URL plik\xF3w',
|
174 | "pt-BR": "Permitir acesso aos URLs do arquivo",
|
175 | "pt-PT": "Permitir acesso a URLs de ficheiro",
|
176 | "ro": 'Permite accesul la adresele URL de fi\u0219iere',
|
177 | "ru": '\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0442\u044C \u0444\u0430\u0439\u043B\u044B \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0430\u043C',
|
178 | "sk": 'Povoli\u0165 pr\xEDstup k webov\xFDm adres\xE1m s\xFAboru',
|
179 | "sl": "Dovoli dostop do URL-jev datoteke",
|
180 | "sr": '\u0414\u043E\u0437\u0432\u043E\u043B\u0438 \u043F\u0440\u0438\u0441\u0442\u0443\u043F URL \u0430\u0434\u0440\u0435\u0441\u0430\u043C\u0430 \u0434\u0430\u0442\u043E\u0442\u0435\u043A\u0430',
|
181 | "sv": 'Till\xE5t \xE5tkomst till webbadresser i filen',
|
182 | "sw": "Ruhusu kufikia URL za faili",
|
183 | "ta": '\u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC1 URL\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B85\u0BA3\u0BC1\u0B95\u0BB2\u0BC8 \u0B85\u0BA9\u0BC1\u0BAE\u0BA4\u0BBF',
|
184 | "te": '\u0C2B\u0C48\u0C32\u0C4D URL\u0C32\u0C15\u0C41 \u0C2A\u0C4D\u0C30\u0C3E\u0C2A\u0C4D\u0C24\u0C3F\u0C28\u0C3F \u0C05\u0C28\u0C41\u0C2E\u0C24\u0C3F\u0C02\u0C1A\u0C41',
|
185 | "th": '\u0E2D\u0E19\u0E38\u0E0D\u0E32\u0E15\u0E43\u0E2B\u0E49\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07\u0E44\u0E1F\u0E25\u0E4C URL',
|
186 | "tr": 'Dosya URL\'lerine eri\u015Fime izin ver',
|
187 | "uk": '\u041D\u0430\u0434\u0430\u0432\u0430\u0442\u0438 \u0434\u043E\u0441\u0442\u0443\u043F \u0434\u043E URL-\u0430\u0434\u0440\u0435\u0441 \u0444\u0430\u0439\u043B\u0443',
|
188 | "vi": 'Cho ph\xE9p truy c\u1EADp v\xE0o c\xE1c URL c\u1EE7a t\u1EC7p',
|
189 | "zh-CN": '\u5141\u8BB8\u8BBF\u95EE\u6587\u4EF6\u7F51\u5740',
|
190 | "zh-TW": '\u5141\u8A31\u5B58\u53D6\u6A94\u6848\u7DB2\u5740'
|
191 | }[chrome.i18n.getUILanguage && chrome.i18n.getUILanguage()];
|
192 | if (i18nFileAccessLabel) {
|
193 | document.getElementById('chrome-file-access-label').textContent = i18nFileAccessLabel;
|
194 | }
|
195 | var link = document.getElementById('chrome-link-to-extensions-page');
|
196 | link.href = 'chrome://extensions/?id=' + chrome.runtime.id;
|
197 | link.onclick = function (e) {
|
198 | e.preventDefault();
|
199 | ChromeCom.request('openExtensionsPageForFileAccess', { newTab: e.ctrlKey || e.metaKey || e.button === 1 || window !== top });
|
200 | };
|
201 | document.getElementById('chrome-url-of-local-file').textContent = fileUrl;
|
202 | overlayManager.open('chromeFileAccessOverlay');
|
203 | });
|
204 | }
|
205 | if (window === top) {
|
206 | addEventListener('unload', function () {
|
207 | if (!isRuntimeAvailable()) {
|
208 | localStorage.setItem('unload-' + Date.now() + '-' + document.hidden + '-' + location.href, JSON.stringify(history.state));
|
209 | }
|
210 | });
|
211 | }
|
212 | var port = void 0;
|
213 | function setReferer(url, callback) {
|
214 | if (!port) {
|
215 | port = chrome.runtime.connect({ name: 'chromecom-referrer' });
|
216 | }
|
217 | port.onDisconnect.addListener(onDisconnect);
|
218 | port.onMessage.addListener(onMessage);
|
219 | port.postMessage({
|
220 | referer: window.history.state && window.history.state.chromecomState,
|
221 | requestUrl: url
|
222 | });
|
223 | function onMessage(referer) {
|
224 | if (referer) {
|
225 | var state = window.history.state || {};
|
226 | state.chromecomState = referer;
|
227 | window.history.replaceState(state, '');
|
228 | }
|
229 | onCompleted();
|
230 | }
|
231 | function onDisconnect() {
|
232 | port = null;
|
233 | callback();
|
234 | }
|
235 | function onCompleted() {
|
236 | port.onDisconnect.removeListener(onDisconnect);
|
237 | port.onMessage.removeListener(onMessage);
|
238 | callback();
|
239 | }
|
240 | }
|
241 | var storageArea = chrome.storage.sync || chrome.storage.local;
|
242 |
|
243 | var ChromePreferences = function (_BasePreferences) {
|
244 | _inherits(ChromePreferences, _BasePreferences);
|
245 |
|
246 | function ChromePreferences() {
|
247 | _classCallCheck(this, ChromePreferences);
|
248 |
|
249 | return _possibleConstructorReturn(this, (ChromePreferences.__proto__ || Object.getPrototypeOf(ChromePreferences)).apply(this, arguments));
|
250 | }
|
251 |
|
252 | _createClass(ChromePreferences, [{
|
253 | key: '_writeToStorage',
|
254 | value: function _writeToStorage(prefObj) {
|
255 | var _this2 = this;
|
256 |
|
257 | return new Promise(function (resolve) {
|
258 | if (prefObj === _this2.defaults) {
|
259 | var keysToRemove = Object.keys(_this2.defaults);
|
260 | storageArea.remove(keysToRemove, function () {
|
261 | resolve();
|
262 | });
|
263 | } else {
|
264 | storageArea.set(prefObj, function () {
|
265 | resolve();
|
266 | });
|
267 | }
|
268 | });
|
269 | }
|
270 | }, {
|
271 | key: '_readFromStorage',
|
272 | value: function _readFromStorage(prefObj) {
|
273 | var _this3 = this;
|
274 |
|
275 | return new Promise(function (resolve) {
|
276 | var getPreferences = function getPreferences(defaultPrefs) {
|
277 | if (chrome.runtime.lastError) {
|
278 | defaultPrefs = _this3.defaults;
|
279 | }
|
280 | storageArea.get(defaultPrefs, function (readPrefs) {
|
281 | resolve(readPrefs);
|
282 | });
|
283 | };
|
284 | if (chrome.storage.managed) {
|
285 | var defaultManagedPrefs = Object.assign({
|
286 | enableHandToolOnLoad: false,
|
287 | disableTextLayer: false,
|
288 | enhanceTextSelection: false
|
289 | }, _this3.defaults);
|
290 | chrome.storage.managed.get(defaultManagedPrefs, function (items) {
|
291 | items = items || defaultManagedPrefs;
|
292 | if (items.enableHandToolOnLoad && !items.cursorToolOnLoad) {
|
293 | items.cursorToolOnLoad = 1;
|
294 | }
|
295 | delete items.enableHandToolOnLoad;
|
296 | if (items.textLayerMode !== 1) {
|
297 | if (items.disableTextLayer) {
|
298 | items.textLayerMode = 0;
|
299 | } else if (items.enhanceTextSelection) {
|
300 | items.textLayerMode = 2;
|
301 | }
|
302 | }
|
303 | delete items.disableTextLayer;
|
304 | delete items.enhanceTextSelection;
|
305 | getPreferences(items);
|
306 | });
|
307 | } else {
|
308 | getPreferences(_this3.defaults);
|
309 | }
|
310 | });
|
311 | }
|
312 | }]);
|
313 |
|
314 | return ChromePreferences;
|
315 | }(_preferences.BasePreferences);
|
316 |
|
317 | var ChromeExternalServices = Object.create(_app.DefaultExternalServices);
|
318 | ChromeExternalServices.initPassiveLoading = function (callbacks) {
|
319 | var overlayManager = _app.PDFViewerApplication.overlayManager;
|
320 |
|
321 | ChromeCom.resolvePDFFile(_app_options.AppOptions.get('defaultUrl'), overlayManager, function (url, length, originalURL) {
|
322 | callbacks.onOpenWithURL(url, length, originalURL);
|
323 | });
|
324 | };
|
325 | ChromeExternalServices.createDownloadManager = function (options) {
|
326 | return new _download_manager.DownloadManager(options);
|
327 | };
|
328 | ChromeExternalServices.createPreferences = function () {
|
329 | return new ChromePreferences();
|
330 | };
|
331 | ChromeExternalServices.createL10n = function (options) {
|
332 | return new _genericl10n.GenericL10n(navigator.language);
|
333 | };
|
334 | _app.PDFViewerApplication.externalServices = ChromeExternalServices;
|
335 | exports.ChromeCom = ChromeCom; |
\ | No newline at end of file |