From 80158f4f3a7753ef9306a8c3b7617ddb6fc94e7f Mon Sep 17 00:00:00 2001 From: Jan Henning Date: Sun, 13 Aug 2017 18:28:50 +0200 Subject: [PATCH] Bug 1389829 - Part 3 - Handle "View Page Source" on the JS side. r=esawin MozReview-Commit-ID: AOmTcNQ7qlj --HG-- extra : rebase_source : 24dcc129fa666980cc360afa2acd761768133171 --- mobile/android/chrome/content/browser.js | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index 61ac20cf99f8..bdc20ed354ae 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -126,6 +126,7 @@ var lazilyLoadedBrowserScripts = [ ["Linkifier", "chrome://browser/content/Linkify.js"], ["CastingApps", "chrome://browser/content/CastingApps.js"], ["RemoteDebugger", "chrome://browser/content/RemoteDebugger.js"], + ["gViewSourceUtils", "chrome://global/content/viewSourceUtils.js"], ]; if (!AppConstants.RELEASE_OR_BETA) { lazilyLoadedBrowserScripts.push( @@ -367,6 +368,7 @@ var BrowserApp = { "Tab:Closed", "Tab:Move", "Tab:OpenUri", + "Tab:ViewSource", ]); GlobalEventDispatcher.registerListener(this, [ @@ -1435,6 +1437,27 @@ var BrowserApp = { aTab.browser.dispatchEvent(evt); }, + viewSourceForTab(aTab) { + let browser = aTab.browser; + let outerWindowID = browser.outerWindowID; + let url = browser.currentURI.spec; + let args = { browser, outerWindowID, URL: url }; + + // `viewSourceInBrowser` will load the source content from the page + // descriptor for the tab (when possible) or fallback to the network if + // that fails. Either way, the view source module will manage the tab's + // location, so use "about:blank" here to avoid unnecessary redundant + // requests. + let tab = this.addTab("about:blank", { + selected: true, + parentId: aTab.id, + isPrivate: PrivateBrowsingUtils.isBrowserPrivate(aTab.browser) + }); + args.viewSourceBrowser = tab.browser; + + gViewSourceUtils.viewSourceInBrowser(args); + }, + quit: function quit(aClear = { sanitize: {}, dontSaveSession: false }) { // Notify all windows that an application quit has been requested. let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool); @@ -1948,6 +1971,10 @@ var BrowserApp = { case "Tab:Move": this._handleTabMove(data.fromTabId, data.fromPosition, data.toTabId, data.toPosition); break; + + case "Tab:ViewSource": + this.viewSourceForTab(this.getTabForId(data.tabId)); + break; } },