From bc4890d4d4cce1bf8d5ff32c8175dc4a96cf7167 Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Sun, 1 Sep 2024 22:05:06 +0200 Subject: [PATCH] [CRX] Remove restoretab.js logic restoretab.js was added in https://github.com/mozilla/pdf.js/pull/6233 with the purpose of restoring lost tabs when Chrome closes all extension tabs when it reloads the extension. This forced reload can happen when the user toggles the "Allow access to file URLs" option. This logic does not work any more, and since the use of localStorage is a blocker in migrating to MV3, this patch just drops the logic. --- extensions/chromium/extension-router.js | 24 ------------------- extensions/chromium/restoretab.html | 17 -------------- extensions/chromium/restoretab.js | 31 ------------------------- web/chromecom.js | 18 -------------- 4 files changed, 90 deletions(-) delete mode 100644 extensions/chromium/restoretab.html delete mode 100644 extensions/chromium/restoretab.js diff --git a/extensions/chromium/extension-router.js b/extensions/chromium/extension-router.js index bd0cdc875d265..6d64b41ac1742 100644 --- a/extensions/chromium/extension-router.js +++ b/extensions/chromium/extension-router.js @@ -100,28 +100,4 @@ limitations under the License. } ); console.log("Set up extension URL router."); - - Object.keys(localStorage).forEach(function (key) { - // The localStorage item is set upon unload by chromecom.js. - 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) { - // Is it a new item (younger than 3 seconds)? Assume that the extension - // just reloaded, so restore the tab (work-around for crbug.com/511670). - chrome.tabs.create({ - url: - chrome.runtime.getURL("restoretab.html") + - "?" + - encodeURIComponent(url) + - "#" + - encodeURIComponent(localStorage.getItem(key)), - active: !isHidden, - }); - } - localStorage.removeItem(key); - } - }); })(); diff --git a/extensions/chromium/restoretab.html b/extensions/chromium/restoretab.html deleted file mode 100644 index 6e6fa425dd559..0000000000000 --- a/extensions/chromium/restoretab.html +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/extensions/chromium/restoretab.js b/extensions/chromium/restoretab.js deleted file mode 100644 index 0f1c6c605140e..0000000000000 --- a/extensions/chromium/restoretab.js +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2015 Mozilla Foundation - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -/** - * This is part of the work-around for crbug.com/511670. - * - chromecom.js sets the URL and history state upon unload. - * - extension-router.js retrieves the saved state and opens restoretab.html - * - restoretab.html (this script) restores the URL and history state. - */ -"use strict"; - -var url = decodeURIComponent(location.search.slice(1)); -var historyState = decodeURIComponent(location.hash.slice(1)); - -historyState = historyState === "undefined" ? null : JSON.parse(historyState); - -history.replaceState(historyState, null, url); -location.reload(); diff --git a/web/chromecom.js b/web/chromecom.js index b41f13bce6bbd..4f72b2327e0a7 100644 --- a/web/chromecom.js +++ b/web/chromecom.js @@ -249,24 +249,6 @@ function requestAccessToLocalFile(fileUrl, overlayManager, callback) { }); } -if (window === top) { - // Chrome closes all extension tabs (crbug.com/511670) when the extension - // reloads. To counter this, the tab URL and history state is saved to - // localStorage and restored by extension-router.js. - // Unfortunately, the window and tab index are not restored. And if it was - // the only tab in an incognito window, then the tab is not restored either. - addEventListener("unload", function () { - // If the runtime is still available, the unload is most likely a normal - // tab closure. Otherwise it is most likely an extension reload. - if (!isRuntimeAvailable()) { - localStorage.setItem( - "unload-" + Date.now() + "-" + document.hidden + "-" + location.href, - JSON.stringify(history.state) - ); - } - }); -} - let dnrRequestId; // This port is used for several purposes: // 1. When disconnected, the background page knows that the frame has unload.