From adf6ab3305ed006170bfede505674ecc0c8e2bfc Mon Sep 17 00:00:00 2001 From: He4eT Date: Mon, 22 Jan 2024 21:10:45 +0100 Subject: [PATCH] pages/search: prevent history pollution --- background.js | 13 +++++++++++++ manifest.json | 3 ++- pages/search/search.js | 5 ++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/background.js b/background.js index 0bbaf79..bb8ed45 100644 --- a/background.js +++ b/background.js @@ -2,3 +2,16 @@ browser.action.onClicked.addListener((() => browser.tabs.create({ url: '/pages/search/search.html' }))) + +browser.runtime.onMessage.addListener((message, sender) => { + switch (message.action) { + case 'closeSender': + Promise.resolve() + .then(() => browser.tabs.remove(sender.tab.id)) + .then(() => browser.sessions.getRecentlyClosed({maxResults: 1})) + .then(([sessionInfo]) => browser.sessions.forgetClosedTab( + sessionInfo.tab.windowId, + sessionInfo.tab.sessionId)) + break + } +}) diff --git a/manifest.json b/manifest.json index 0e15924..b653f3f 100644 --- a/manifest.json +++ b/manifest.json @@ -23,7 +23,8 @@ "manifest_version": 3, "name": "Tabswitcher", "permissions": [ - "tabs" + "tabs", + "sessions" ], "version": "1.0.0" } diff --git a/pages/search/search.js b/pages/search/search.js index f815007..54f31ef 100644 --- a/pages/search/search.js +++ b/pages/search/search.js @@ -6,7 +6,10 @@ const store = Store.init({ tabs: browser.tabs, windows: browser.windows, onStateUpdate: dom.updateSearchResults, - closeCurrentTab: () => window.close(), + closeCurrentTab: () => { + history.replaceState({}, '', '') + browser.runtime.sendMessage({action: 'closeSender'}) + }, }) void inputHandlers.attachInputHandlers(store)