Bug 1201535 - Open view source tabs with about:blank. r=bz
authorJ. Ryan Stinnett <jryans@gmail.com>
Tue, 22 Sep 2015 13:33:55 -0500
changeset 264175 82fd00bfb1dd714660b060465642f103c2d72f08
parent 264174 8045d8fcbfe5474276037faccb5863746830326b
child 264176 83e1422aecc8b79316839b5bcbd16b859c2f0426
push id15338
push userjryans@gmail.com
push dateThu, 24 Sep 2015 17:39:21 +0000
treeherderfx-team@9efdda8b4a18 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbz
bugs1201535
milestone44.0a1
Bug 1201535 - Open view source tabs with about:blank. r=bz Loading a view source tab as "about:blank" gets us the fresh tab we need without making redundant requests. The view source module will retrieve the actual data as needed.
browser/base/content/browser.js
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -2368,28 +2368,32 @@ function BrowserViewSourceOfDocument(aAr
     args = { browser, outerWindowID, URL };
   } else {
     args = aArgsOrDocument;
   }
 
   let viewInternal = () => {
     let inTab = Services.prefs.getBoolPref("view_source.tab");
     if (inTab) {
-      let viewSourceURL = `view-source:${args.URL}`;
       let tabBrowser = gBrowser;
       // In the case of sidebars and chat windows, gBrowser is defined but null,
       // because no #content element exists.  For these cases, we need to find
       // the most recent browser window.
       // In the case of popups, we need to find a non-popup browser window.
       if (!tabBrowser || !window.toolbar.visible) {
         // This returns only non-popup browser windows by default.
         let browserWindow = RecentWindow.getMostRecentBrowserWindow();
         tabBrowser = browserWindow.gBrowser;
       }
-      let tab = tabBrowser.loadOneTab(viewSourceURL, {
+      // `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 = tabBrowser.loadOneTab("about:blank", {
         relatedToCurrent: true,
         inBackground: false
       });
       args.viewSourceBrowser = tabBrowser.getBrowserForTab(tab);
       top.gViewSourceUtils.viewSourceInBrowser(args);
     } else {
       top.gViewSourceUtils.viewSource(args);
     }