123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- "use strict";
- (function ExtensionRouterClosure() {
- var VIEWER_URL = chrome.extension.getURL("content/web/viewer.html");
- var CRX_BASE_URL = chrome.extension.getURL("/");
- var schemes = [
- "http",
- "https",
- "ftp",
- "file",
- "chrome-extension",
- "blob",
- "data",
-
- "filesystem",
-
- "drive",
- ];
-
- function parseExtensionURL(url) {
- url = url.substring(CRX_BASE_URL.length);
-
- var schemeIndex = url.search(/:|%3A/i);
- if (schemeIndex === -1) {
- return undefined;
- }
- var scheme = url.slice(0, schemeIndex).toLowerCase();
- if (schemes.includes(scheme)) {
- url = url.split("#")[0];
- if (url.charAt(schemeIndex) === ":") {
- url = encodeURIComponent(url);
- }
- return url;
- }
- return undefined;
- }
-
-
-
-
- chrome.webRequest.onBeforeRequest.addListener(
- function (details) {
-
-
- var url = parseExtensionURL(details.url);
- if (url) {
- url = VIEWER_URL + "?file=" + url;
- var i = details.url.indexOf("#");
- if (i > 0) {
- url += details.url.slice(i);
- }
- console.log("Redirecting " + details.url + " to " + url);
- return { redirectUrl: url };
- }
- return undefined;
- },
- {
- types: ["main_frame", "sub_frame"],
- urls: schemes.map(function (scheme) {
-
- return CRX_BASE_URL + scheme + "*";
- }),
- },
- ["blocking"]
- );
-
-
-
-
- chrome.tabs.query(
- {
- url: CRX_BASE_URL + "*:*",
- },
- function (tabsFromLastSession) {
- for (const { id } of tabsFromLastSession) {
- chrome.tabs.reload(id);
- }
- }
- );
- console.log("Set up extension URL router.");
- Object.keys(localStorage).forEach(function (key) {
-
- var parsedKey = /^unload-(\d+)-(true|false)-(.+)/.exec(key);
- if (parsedKey) {
- var timeStart = parseInt(parsedKey[1], 10);
- var isHidden = parsedKey[2] === "true";
- var url = parsedKey[3];
- if (Date.now() - timeStart < 3000) {
-
-
- chrome.tabs.create({
- url:
- chrome.runtime.getURL("restoretab.html") +
- "?" +
- encodeURIComponent(url) +
- "#" +
- encodeURIComponent(localStorage.getItem(key)),
- active: !isHidden,
- });
- }
- localStorage.removeItem(key);
- }
- });
- })();
|