Backed out changeset e87075045bf3 (bug 1180495) for browser_purgehistory_clears_sh.js e10s permafails CLOSED TREE
authorWes Kocher <wkocher@mozilla.com>
Tue, 04 Aug 2015 15:51:45 -0700
changeset 256137 0c15668d85fb91c8f9938fc15a8e473717871249
parent 256136 3301c85aa6713f50caf3c8e63893b7e2904d3945
child 256138 41465ed1411f6dc02dec6ee3faa938f105821b56
push id14414
push userkwierso@gmail.com
push dateTue, 04 Aug 2015 22:51:52 +0000
treeherderfx-team@0c15668d85fb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1180495
milestone42.0a1
backs oute87075045bf3cf0f7a0ed8e1643c760cac731173
Backed out changeset e87075045bf3 (bug 1180495) for browser_purgehistory_clears_sh.js e10s permafails CLOSED TREE
browser/base/content/test/general/browser.ini
browser/base/content/test/general/browser_purgehistory_clears_sh.js
toolkit/content/browser-content.js
toolkit/content/widgets/browser.xml
toolkit/content/widgets/remote-browser.xml
--- a/browser/base/content/test/general/browser.ini
+++ b/browser/base/content/test/general/browser.ini
@@ -346,17 +346,16 @@ skip-if = buildapp == 'mulet'
 [browser_popup_blocker.js]
 skip-if = (os == 'linux') || (e10s && debug) # Frequent bug 1081925 and bug 1125520 failures
 [browser_printpreview.js]
 skip-if = buildapp == 'mulet' || e10s # Bug 1101973 - breaks the next test in e10s, and may be responsible for later timeout after logging "Error: Channel closing: too late to send/recv, messages will be lost"
 [browser_private_browsing_window.js]
 skip-if = buildapp == 'mulet'
 [browser_private_no_prompt.js]
 skip-if = buildapp == 'mulet'
-[browser_purgehistory_clears_sh.js]
 [browser_PageMetaData_pushstate.js]
 [browser_relatedTabs.js]
 [browser_remoteTroubleshoot.js]
 support-files =
   test_remoteTroubleshoot.html
 [browser_remoteWebNavigation_postdata.js]
 [browser_removeTabsToTheEnd.js]
 [browser_removeUnsafeProtocolsFromURLBarPaste.js]
deleted file mode 100644
--- a/browser/base/content/test/general/browser_purgehistory_clears_sh.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-const url = "http://example.org/browser/browser/base/content/test/general/dummy_page.html";
-
-add_task(function* purgeHistoryTest() {
-  let tab = yield BrowserTestUtils.withNewTab({
-    gBrowser,
-    url,
-  }, function* purgeHistoryTestInner(browser) {
-    let backButton = browser.ownerDocument.getElementById("Browser:Back");
-    let forwardButton = browser.ownerDocument.getElementById("Browser:Forward");
-
-    ok(!browser.webNavigation.canGoBack,
-       "Initial value for webNavigation.canGoBack");
-    ok(!browser.webNavigation.canGoForward,
-       "Initial value for webNavigation.canGoBack");
-    ok(backButton.hasAttribute("disabled"), "Back button is disabled");
-    ok(forwardButton.hasAttribute("disabled"), "Forward button is disabled");
-
-    let pushState = ContentTask.spawn(browser, null, function*() {
-      let startHistory = content.history.length;
-      content.history.pushState({}, "");
-      content.history.pushState({}, "");
-      content.history.back();
-      let newHistory = content.history.length;
-      return [startHistory, newHistory];
-    });
-
-    let [startHistory, newHistory] = yield pushState;
-
-    is(startHistory, 1, "Initial SHistory size");
-    is(newHistory, 3, "New SHistory size");
-
-    ok(browser.webNavigation.canGoBack, true,
-       "New value for webNavigation.canGoBack");
-    ok(browser.webNavigation.canGoForward, true,
-       "New value for webNavigation.canGoForward");
-    ok(!backButton.hasAttribute("disabled"), "Back button was enabled");
-    ok(!forwardButton.hasAttribute("disabled"), "Forward button was enabled");
-
-
-    let tmp = {};
-    Cc["@mozilla.org/moz/jssubscript-loader;1"]
-      .getService(Ci.mozIJSSubScriptLoader)
-      .loadSubScript("chrome://browser/content/sanitize.js", tmp);
-
-    let {Sanitizer} = tmp;
-    let sanitizer = new Sanitizer();
-
-    yield sanitizer.sanitize(["history"]);
-
-    let historyAfterPurge = yield ContentTask.spawn(browser, null, function*() {
-      return content.history.length;
-    });
-
-    is(historyAfterPurge, 1, "SHistory correctly cleared");
-
-    ok(!browser.webNavigation.canGoBack,
-       "webNavigation.canGoBack correctly cleared");
-    ok(!browser.webNavigation.canGoForward,
-       "webNavigation.canGoForward correctly cleared");
-    ok(backButton.hasAttribute("disabled"), "Back button was disabled");
-    ok(forwardButton.hasAttribute("disabled"), "Forward button was disabled");
-  });
-});
--- a/toolkit/content/browser-content.js
+++ b/toolkit/content/browser-content.js
@@ -719,32 +719,8 @@ let MediaPlaybackListener = {
     if (msg.name == "MediaPlaybackMute") {
       let utils = global.content.QueryInterface(Ci.nsIInterfaceRequestor)
                                 .getInterface(Ci.nsIDOMWindowUtils);
       utils.audioMuted = msg.data.type === "mute";
     }
   },
 };
 MediaPlaybackListener.init();
-
-addMessageListener("Browser:PurgeSessionHistory", function BrowserPurgeHistory() {
-  let sessionHistory = docShell.QueryInterface(Ci.nsIWebNavigation).sessionHistory;
-  if (!sessionHistory) {
-    return;
-  }
-
-  // place the entry at current index at the end of the history list, so it won't get removed
-  if (sessionHistory.index < sessionHistory.count - 1) {
-    let indexEntry = sessionHistory.getEntryAtIndex(sessionHistory.index, false);
-    sessionHistory.QueryInterface(Components.interfaces.nsISHistoryInternal);
-    indexEntry.QueryInterface(Components.interfaces.nsISHEntry);
-    sessionHistory.addEntry(indexEntry, true);
-  }
-
-  let purge = sessionHistory.count;
-  if (global.content.location.href != "about:blank") {
-    --purge; // Don't remove the page the user's staring at from shistory
-  }
-
-  if (purge > 0) {
-    sessionHistory.PurgeHistory(purge);
-  }
-});
--- a/toolkit/content/widgets/browser.xml
+++ b/toolkit/content/widgets/browser.xml
@@ -816,17 +816,17 @@
       <field name="mDestroyed">false</field>
 
       <constructor>
         <![CDATA[
           try {
             // |webNavigation.sessionHistory| will have been set by the frame
             // loader when creating the docShell as long as this xul:browser
             // doesn't have the 'disablehistory' attribute set.
-            if (!this.hasAttribute("disablehistory")) {
+            if (this.docShell && this.webNavigation.sessionHistory) {
               var os = Components.classes["@mozilla.org/observer-service;1"]
                                  .getService(Components.interfaces.nsIObserverService);
               os.addObserver(this, "browser:purge-session-history", false);
 
               // enable global history if we weren't told otherwise
               if (!this.hasAttribute("disableglobalhistory") && !this.isRemoteBrowser) {
                 try {
                   this.docShell.useGlobalHistory = true;
@@ -964,28 +964,33 @@
       </method>
 
       <method name="observe">
         <parameter name="aSubject"/>
         <parameter name="aTopic"/>
         <parameter name="aState"/>
         <body>
           <![CDATA[
-            if (aTopic != "browser:purge-session-history")
+            if (aTopic != "browser:purge-session-history" || !this.sessionHistory)
               return;
 
-            this.purgeSessionHistory();
-          ]]>
-        </body>
-      </method>
+            // place the entry at current index at the end of the history list, so it won't get removed
+            if (this.sessionHistory.index < this.sessionHistory.count - 1) {
+              var indexEntry = this.sessionHistory.getEntryAtIndex(this.sessionHistory.index, false);
+              this.sessionHistory.QueryInterface(Components.interfaces.nsISHistoryInternal);
+              indexEntry.QueryInterface(Components.interfaces.nsISHEntry);
+              this.sessionHistory.addEntry(indexEntry, true);
+            }
 
-      <method name="purgeSessionHistory">
-        <body>
-          <![CDATA[
-            this.messageManager.sendAsyncMessage("Browser:PurgeSessionHistory");
+            var purge = this.sessionHistory.count;
+            if (this.currentURI != "about:blank")
+              --purge; // Don't remove the page the user's staring at from shistory
+
+            if (purge > 0)
+              this.sessionHistory.PurgeHistory(purge);
           ]]>
         </body>
       </method>
 
       <field name="_AUTOSCROLL_SNAP">10</field>
       <field name="_scrolling">false</field>
       <field name="_startX">null</field>
       <field name="_startY">null</field>
--- a/toolkit/content/widgets/remote-browser.xml
+++ b/toolkit/content/widgets/remote-browser.xml
@@ -384,22 +384,13 @@
           if (this._controller) {
             this._controller.enableDisableCommands(aAction,
                                                    aEnabledLength, aEnabledCommands,
                                                    aDisabledLength, aDisabledCommands);
           }
         </body>
       </method>
 
-      <method name="purgeSessionHistory">
-        <body>
-          <![CDATA[
-            this.messageManager.sendAsyncMessage("Browser:PurgeSessionHistory");
-            this.webNavigation.canGoBack = false;
-            this.webNavigation.canGoForward = false;
-          ]]>
-        </body>
-      </method>
     </implementation>
 
   </binding>
 
 </bindings>