Bug 1389829 - Part 3 - Handle "View Page Source" on the JS side. r=esawin

MozReview-Commit-ID: AOmTcNQ7qlj

--HG--
extra : rebase_source : 24dcc129fa666980cc360afa2acd761768133171
This commit is contained in:
Jan Henning 2017-08-13 18:28:50 +02:00
parent 91e8259ff4
commit 80158f4f3a

View File

@ -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;
}
},