mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1180495 - [e10s] Ensure that clearing history also clears the session history of remote tabs. r=mconley
This commit is contained in:
parent
914dcacaf1
commit
1ae52a21b7
@ -353,6 +353,7 @@ skip-if = buildapp == 'mulet' || e10s # Bug 1101973 - breaks the next test in e1
|
||||
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]
|
||||
|
@ -0,0 +1,66 @@
|
||||
/* 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");
|
||||
});
|
||||
});
|
@ -724,3 +724,27 @@ let AudioPlaybackListener = {
|
||||
},
|
||||
};
|
||||
AudioPlaybackListener.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);
|
||||
}
|
||||
});
|
||||
|
@ -821,7 +821,7 @@
|
||||
// |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.docShell && this.webNavigation.sessionHistory) {
|
||||
if (!this.hasAttribute("disablehistory")) {
|
||||
var os = Components.classes["@mozilla.org/observer-service;1"]
|
||||
.getService(Components.interfaces.nsIObserverService);
|
||||
os.addObserver(this, "browser:purge-session-history", false);
|
||||
@ -879,7 +879,7 @@
|
||||
return;
|
||||
this.mDestroyed = true;
|
||||
|
||||
if (this.docShell && this.webNavigation.sessionHistory) {
|
||||
if (!this.hasAttribute("disablehistory")) {
|
||||
var os = Components.classes["@mozilla.org/observer-service;1"]
|
||||
.getService(Components.interfaces.nsIObserverService);
|
||||
try {
|
||||
@ -969,23 +969,18 @@
|
||||
<parameter name="aState"/>
|
||||
<body>
|
||||
<![CDATA[
|
||||
if (aTopic != "browser:purge-session-history" || !this.sessionHistory)
|
||||
if (aTopic != "browser:purge-session-history")
|
||||
return;
|
||||
|
||||
// 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);
|
||||
}
|
||||
this.purgeSessionHistory();
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
|
||||
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);
|
||||
<method name="purgeSessionHistory">
|
||||
<body>
|
||||
<![CDATA[
|
||||
this.messageManager.sendAsyncMessage("Browser:PurgeSessionHistory");
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
|
@ -389,6 +389,15 @@
|
||||
</body>
|
||||
</method>
|
||||
|
||||
<method name="purgeSessionHistory">
|
||||
<body>
|
||||
<![CDATA[
|
||||
this.messageManager.sendAsyncMessage("Browser:PurgeSessionHistory");
|
||||
this.webNavigation.canGoBack = false;
|
||||
this.webNavigation.canGoForward = false;
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
</implementation>
|
||||
|
||||
</binding>
|
||||
|
Loading…
Reference in New Issue
Block a user