tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 5096c7c9bba153ee864c194652329f946491e4d7
parent 29e90175b7cfd49cc39655fd25db24c12c0cecb0
Author: Marco Bonardo <mbonardo@mozilla.com>
Date:   Tue,  4 Nov 2025 12:49:14 +0000

Bug 1997805 - Avoid loading clipboard data to enable cmd_paste in the Downloads view. r=Gijs

Differential Revision: https://phabricator.services.mozilla.com/D271066

Diffstat:
Mbrowser/components/downloads/content/allDownloadsView.js | 30++++++++++++++----------------
1 file changed, 14 insertions(+), 16 deletions(-)

diff --git a/browser/components/downloads/content/allDownloadsView.js b/browser/components/downloads/content/allDownloadsView.js @@ -18,6 +18,8 @@ ChromeUtils.defineESModuleGetters(this, { PlacesUtils: "resource://gre/modules/PlacesUtils.sys.mjs", }); +const CLIPBOARD_URL_FLAVORS = ["text/x-moz-url", "text/plain"]; + /** * A download element shell is responsible for handling the commands and the * displayed data for a single download view element. @@ -607,7 +609,11 @@ DownloadsPlacesView.prototype = { case "cmd_selectAll": return true; case "cmd_paste": - return this._canDownloadClipboardURL(); + // We check later whether content is valid for pasting, or ignore it. + return Services.clipboard.hasDataMatchingFlavors( + CLIPBOARD_URL_FLAVORS, + Ci.nsIClipboard.kGlobalClipboard + ); case "downloadsCmd_clearDownloads": return this.canClearDownloads(this._richlistbox); default: @@ -635,8 +641,7 @@ DownloadsPlacesView.prototype = { ); trans.init(null); - let flavors = ["text/x-moz-url", "text/plain"]; - flavors.forEach(trans.addDataFlavor); + CLIPBOARD_URL_FLAVORS.forEach(trans.addDataFlavor); Services.clipboard.getData(trans, Services.clipboard.kGlobalClipboard); @@ -655,18 +660,6 @@ DownloadsPlacesView.prototype = { return ["", ""]; }, - _canDownloadClipboardURL() { - let [url /* ,name */] = this._getURLFromClipboardData(); - return url != ""; - }, - - _downloadURLFromClipboard() { - let [url, name] = this._getURLFromClipboardData(); - let browserWin = BrowserWindowTracker.getTopWindow(); - let initiatingDoc = browserWin ? browserWin.document : document; - DownloadURL(url, name, initiatingDoc); - }, - // nsIController doCommand(aCommand) { // Commands may be invoked with keyboard shortcuts even if disabled. @@ -718,7 +711,12 @@ DownloadsPlacesView.prototype = { }, cmd_paste() { - this._downloadURLFromClipboard(); + let [url, name] = this._getURLFromClipboardData(); + if (url) { + let browserWin = BrowserWindowTracker.getTopWindow(); + let initiatingDoc = browserWin ? browserWin.document : document; + DownloadURL(url, name, initiatingDoc); + } }, downloadsCmd_clearDownloads() {