summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/browser_687710_2.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/sessionstore/test/browser_687710_2.js')
-rw-r--r--browser/components/sessionstore/test/browser_687710_2.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/browser/components/sessionstore/test/browser_687710_2.js b/browser/components/sessionstore/test/browser_687710_2.js
new file mode 100644
index 000000000..c22e73750
--- /dev/null
+++ b/browser/components/sessionstore/test/browser_687710_2.js
@@ -0,0 +1,64 @@
+/* eslint-env mozilla/frame-script */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Test that the fix for bug 687710 isn't too aggressive -- shentries which are
+// cousins should be able to share bfcache entries.
+
+var stateBackup = ss.getBrowserState();
+
+var state = {entries:[
+ {
+ docIdentifier: 1,
+ url: "http://example.com?1",
+ children: [{ docIdentifier: 10,
+ url: "http://example.com?10" }]
+ },
+ {
+ docIdentifier: 1,
+ url: "http://example.com?1#a",
+ children: [{ docIdentifier: 10,
+ url: "http://example.com?10#aa" }]
+ }
+]};
+
+add_task(function* test() {
+ let tab = gBrowser.addTab("about:blank");
+ yield promiseTabState(tab, state);
+ yield ContentTask.spawn(tab.linkedBrowser, null, function() {
+ function compareEntries(i, j, history) {
+ let e1 = history.getEntryAtIndex(i, false)
+ .QueryInterface(Ci.nsISHEntry)
+ .QueryInterface(Ci.nsISHContainer);
+
+ let e2 = history.getEntryAtIndex(j, false)
+ .QueryInterface(Ci.nsISHEntry)
+ .QueryInterface(Ci.nsISHContainer);
+
+ ok(e1.sharesDocumentWith(e2),
+ `${i} should share doc with ${j}`);
+ is(e1.childCount, e2.childCount,
+ `Child count mismatch (${i}, ${j})`);
+
+ for (let c = 0; c < e1.childCount; c++) {
+ let c1 = e1.GetChildAt(c);
+ let c2 = e2.GetChildAt(c);
+
+ ok(c1.sharesDocumentWith(c2),
+ `Cousins should share documents. (${i}, ${j}, ${c})`);
+ }
+ }
+
+ let history = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsISHistory);
+
+ is(history.count, 2, "history.count");
+ for (let i = 0; i < history.count; i++) {
+ for (let j = 0; j < history.count; j++) {
+ compareEntries(i, j, history);
+ }
+ }
+ });
+
+ ss.setBrowserState(stateBackup);
+});