зеркало из https://github.com/mozilla/gecko-dev.git
Bug 940804 - Make session store tests use SSTabRestored when appropriate (r=ttaubert)
This commit is contained in:
Родитель
8ca3b453a7
Коммит
afa0ccbf61
|
@ -28,9 +28,10 @@ function duplicate(delta, msg, cb) {
|
||||||
var start = gBrowser.sessionHistory.index;
|
var start = gBrowser.sessionHistory.index;
|
||||||
|
|
||||||
duplicateTabIn(gBrowser.selectedTab, "tab", delta);
|
duplicateTabIn(gBrowser.selectedTab, "tab", delta);
|
||||||
|
let tab = gBrowser.selectedTab;
|
||||||
|
|
||||||
gBrowser.selectedBrowser.addEventListener("pageshow", function () {
|
tab.addEventListener("SSTabRestored", function tabRestoredListener() {
|
||||||
gBrowser.selectedBrowser.removeEventListener("pageshow", arguments.callee, false);
|
tab.removeEventListener("SSTabRestored", tabRestoredListener, false);
|
||||||
is(gBrowser.sessionHistory.index, start + delta, msg);
|
is(gBrowser.sessionHistory.index, start + delta, msg);
|
||||||
executeSoon(cb);
|
executeSoon(cb);
|
||||||
}, false);
|
}, false);
|
||||||
|
|
|
@ -119,7 +119,7 @@ function test() {
|
||||||
// verify tab: (A), in undo list
|
// verify tab: (A), in undo list
|
||||||
let tab_A_restored = test(function() ss.undoCloseTab(aWin, 0));
|
let tab_A_restored = test(function() ss.undoCloseTab(aWin, 0));
|
||||||
ok(tab_A_restored, "a tab is in undo list");
|
ok(tab_A_restored, "a tab is in undo list");
|
||||||
whenBrowserLoaded(tab_A_restored.linkedBrowser, function() {
|
whenTabRestored(tab_A_restored, function() {
|
||||||
is(testURL, tab_A_restored.linkedBrowser.currentURI.spec,
|
is(testURL, tab_A_restored.linkedBrowser.currentURI.spec,
|
||||||
"it's the same tab that we expect");
|
"it's the same tab that we expect");
|
||||||
aWin.gBrowser.removeTab(tab_A_restored);
|
aWin.gBrowser.removeTab(tab_A_restored);
|
||||||
|
@ -137,14 +137,14 @@ function test() {
|
||||||
|
|
||||||
let tab_B = aWin.gBrowser.addTab(testURL2);
|
let tab_B = aWin.gBrowser.addTab(testURL2);
|
||||||
ss.setTabState(tab_B, JSON.stringify(state1));
|
ss.setTabState(tab_B, JSON.stringify(state1));
|
||||||
whenBrowserLoaded(tab_B.linkedBrowser, function() {
|
whenTabRestored(tab_B, function() {
|
||||||
// populate tab: (B) with different form data
|
// populate tab: (B) with different form data
|
||||||
for (let item in fieldList)
|
for (let item in fieldList)
|
||||||
setFormValue(tab_B, item, fieldList[item]);
|
setFormValue(tab_B, item, fieldList[item]);
|
||||||
|
|
||||||
// duplicate tab: (B)
|
// duplicate tab: (B)
|
||||||
let tab_C = aWin.gBrowser.duplicateTab(tab_B);
|
let tab_C = aWin.gBrowser.duplicateTab(tab_B);
|
||||||
whenBrowserLoaded(tab_C.linkedBrowser, function() {
|
whenTabRestored(tab_C, function() {
|
||||||
// verify the correctness of the duplicated tab
|
// verify the correctness of the duplicated tab
|
||||||
is(ss.getTabValue(tab_C, key1), value1,
|
is(ss.getTabValue(tab_C, key1), value1,
|
||||||
"tab successfully duplicated - correct state");
|
"tab successfully duplicated - correct state");
|
||||||
|
|
|
@ -11,15 +11,13 @@ function test() {
|
||||||
"browser/components/sessionstore/test/browser_339445_sample.html";
|
"browser/components/sessionstore/test/browser_339445_sample.html";
|
||||||
|
|
||||||
let tab = gBrowser.addTab(testURL);
|
let tab = gBrowser.addTab(testURL);
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = tab.linkedBrowser.contentDocument;
|
let doc = tab.linkedBrowser.contentDocument;
|
||||||
is(doc.getElementById("storageTestItem").textContent, "PENDING",
|
is(doc.getElementById("storageTestItem").textContent, "PENDING",
|
||||||
"sessionStorage value has been set");
|
"sessionStorage value has been set");
|
||||||
|
|
||||||
let tab2 = gBrowser.duplicateTab(tab);
|
let tab2 = gBrowser.duplicateTab(tab);
|
||||||
tab2.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab2, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc2 = tab2.linkedBrowser.contentDocument;
|
let doc2 = tab2.linkedBrowser.contentDocument;
|
||||||
is(doc2.getElementById("storageTestItem").textContent, "SUCCESS",
|
is(doc2.getElementById("storageTestItem").textContent, "SUCCESS",
|
||||||
"sessionStorage value has been duplicated");
|
"sessionStorage value has been duplicated");
|
||||||
|
@ -29,6 +27,6 @@ function test() {
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
|
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,14 +88,12 @@ function test() {
|
||||||
let rootDir = getRootDirectory(gTestPath);
|
let rootDir = getRootDirectory(gTestPath);
|
||||||
let testURL = rootDir + "browser_346337_sample.html";
|
let testURL = rootDir + "browser_346337_sample.html";
|
||||||
let tab = tabbrowser.addTab(testURL);
|
let tab = tabbrowser.addTab(testURL);
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
for (let xpath in fieldList)
|
for (let xpath in fieldList)
|
||||||
setFormValue(tab, xpath, fieldList[xpath]);
|
setFormValue(tab, xpath, fieldList[xpath]);
|
||||||
|
|
||||||
let tab2 = tabbrowser.duplicateTab(tab);
|
let tab2 = tabbrowser.duplicateTab(tab);
|
||||||
tab2.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab2, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
for (let xpath in fieldList)
|
for (let xpath in fieldList)
|
||||||
ok(compareFormValue(tab2, xpath, fieldList[xpath]),
|
ok(compareFormValue(tab2, xpath, fieldList[xpath]),
|
||||||
"The value for \"" + xpath + "\" was correctly restored");
|
"The value for \"" + xpath + "\" was correctly restored");
|
||||||
|
@ -105,8 +103,7 @@ function test() {
|
||||||
tabbrowser.removeTab(tab);
|
tabbrowser.removeTab(tab);
|
||||||
|
|
||||||
tab = undoCloseTab();
|
tab = undoCloseTab();
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
for (let xpath in fieldList)
|
for (let xpath in fieldList)
|
||||||
if (fieldList[xpath])
|
if (fieldList[xpath])
|
||||||
ok(!compareFormValue(tab, xpath, fieldList[xpath]),
|
ok(!compareFormValue(tab, xpath, fieldList[xpath]),
|
||||||
|
@ -120,7 +117,7 @@ function test() {
|
||||||
tabbrowser.addTab();
|
tabbrowser.addTab();
|
||||||
tabbrowser.removeTab(tab);
|
tabbrowser.removeTab(tab);
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,8 +71,7 @@ function test() {
|
||||||
// create a new tab
|
// create a new tab
|
||||||
let testURL = "about:";
|
let testURL = "about:";
|
||||||
tab = gBrowser.addTab(testURL);
|
tab = gBrowser.addTab(testURL);
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
// make sure that the next closed tab will increase getClosedTabCount
|
// make sure that the next closed tab will increase getClosedTabCount
|
||||||
gPrefService.setIntPref("browser.sessionstore.max_tabs_undo", max_tabs_undo + 1);
|
gPrefService.setIntPref("browser.sessionstore.max_tabs_undo", max_tabs_undo + 1);
|
||||||
|
|
||||||
|
@ -87,15 +86,14 @@ function test() {
|
||||||
tab = test(function() ss.undoCloseTab(window, 0));
|
tab = test(function() ss.undoCloseTab(window, 0));
|
||||||
ok(tab, "undoCloseTab doesn't throw")
|
ok(tab, "undoCloseTab doesn't throw")
|
||||||
|
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
is(tab.linkedBrowser.currentURI.spec, testURL, "correct tab was reopened");
|
||||||
is(this.currentURI.spec, testURL, "correct tab was reopened");
|
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
if (gPrefService.prefHasUserValue("browser.sessionstore.max_tabs_undo"))
|
if (gPrefService.prefHasUserValue("browser.sessionstore.max_tabs_undo"))
|
||||||
gPrefService.clearUserPref("browser.sessionstore.max_tabs_undo");
|
gPrefService.clearUserPref("browser.sessionstore.max_tabs_undo");
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,12 @@ function test() {
|
||||||
|
|
||||||
// restore a blank tab
|
// restore a blank tab
|
||||||
let tab = gBrowser.addTab("about:");
|
let tab = gBrowser.addTab("about:");
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
let history = tab.linkedBrowser.webNavigation.sessionHistory;
|
let history = tab.linkedBrowser.webNavigation.sessionHistory;
|
||||||
ok(history.count >= 1, "the new tab does have at least one history entry");
|
ok(history.count >= 1, "the new tab does have at least one history entry");
|
||||||
|
|
||||||
ss.setTabState(tab, JSON.stringify({ entries: [] }));
|
ss.setTabState(tab, JSON.stringify({ entries: [] }));
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
ok(history.count == 0, "the tab was restored without any history whatsoever");
|
ok(history.count == 0, "the tab was restored without any history whatsoever");
|
||||||
|
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
|
@ -33,6 +30,6 @@ function test() {
|
||||||
if (gPrefService.prefHasUserValue("browser.sessionstore.max_tabs_undo"))
|
if (gPrefService.prefHasUserValue("browser.sessionstore.max_tabs_undo"))
|
||||||
gPrefService.clearUserPref("browser.sessionstore.max_tabs_undo");
|
gPrefService.clearUserPref("browser.sessionstore.max_tabs_undo");
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,7 @@ function test() {
|
||||||
// create a new tab
|
// create a new tab
|
||||||
let tab = gBrowser.addTab(testURL);
|
let tab = gBrowser.addTab(testURL);
|
||||||
ss.setTabValue(tab, key, value);
|
ss.setTabValue(tab, key, value);
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
// get the tab's state
|
// get the tab's state
|
||||||
let state = ss.getTabState(tab);
|
let state = ss.getTabState(tab);
|
||||||
ok(state, "get the tab's state");
|
ok(state, "get the tab's state");
|
||||||
|
@ -30,7 +29,7 @@ function test() {
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
}, true);
|
});
|
||||||
|
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
// setTabState and duplicateTab //
|
// setTabState and duplicateTab //
|
||||||
|
@ -44,31 +43,30 @@ function test() {
|
||||||
let tab2 = gBrowser.addTab();
|
let tab2 = gBrowser.addTab();
|
||||||
// set the tab's state
|
// set the tab's state
|
||||||
ss.setTabState(tab2, JSON.stringify(state));
|
ss.setTabState(tab2, JSON.stringify(state));
|
||||||
tab2.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab2, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
// verify the correctness of the restored tab
|
// verify the correctness of the restored tab
|
||||||
ok(ss.getTabValue(tab2, key2) == value2 && this.currentURI.spec == testURL,
|
ok(ss.getTabValue(tab2, key2) == value2 && tab2.linkedBrowser.currentURI.spec == testURL,
|
||||||
"the tab's state was correctly restored");
|
"the tab's state was correctly restored");
|
||||||
|
|
||||||
// add text data
|
// add text data
|
||||||
let textbox = this.contentDocument.getElementById("textbox");
|
let textbox = tab2.linkedBrowser.contentDocument.getElementById("textbox");
|
||||||
textbox.value = value3;
|
textbox.value = value3;
|
||||||
|
|
||||||
// duplicate the tab
|
// duplicate the tab
|
||||||
let duplicateTab = ss.duplicateTab(window, tab2);
|
let duplicateTab = ss.duplicateTab(window, tab2);
|
||||||
gBrowser.removeTab(tab2);
|
gBrowser.removeTab(tab2);
|
||||||
|
|
||||||
duplicateTab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(duplicateTab, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
// verify the correctness of the duplicated tab
|
// verify the correctness of the duplicated tab
|
||||||
ok(ss.getTabValue(duplicateTab, key2) == value2 && this.currentURI.spec == testURL,
|
ok(ss.getTabValue(duplicateTab, key2) == value2 &&
|
||||||
|
duplicateTab.linkedBrowser.currentURI.spec == testURL,
|
||||||
"correctly duplicated the tab's state");
|
"correctly duplicated the tab's state");
|
||||||
let textbox = this.contentDocument.getElementById("textbox");
|
let textbox = duplicateTab.linkedBrowser.contentDocument.getElementById("textbox");
|
||||||
is(textbox.value, value3, "also duplicated text data");
|
is(textbox.value, value3, "also duplicated text data");
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
gBrowser.removeTab(duplicateTab);
|
gBrowser.removeTab(duplicateTab);
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,7 @@ function test() {
|
||||||
|
|
||||||
function testOpenCloseWindow(aIsPrivate, aTest, aCallback) {
|
function testOpenCloseWindow(aIsPrivate, aTest, aCallback) {
|
||||||
whenNewWindowLoaded({ private: aIsPrivate }, function(win) {
|
whenNewWindowLoaded({ private: aIsPrivate }, function(win) {
|
||||||
win.gBrowser.selectedBrowser.addEventListener("load", function onLoad() {
|
whenBrowserLoaded(win.gBrowser.selectedBrowser, function() {
|
||||||
win.gBrowser.selectedBrowser.removeEventListener("load", onLoad, true);
|
|
||||||
executeSoon(function() {
|
executeSoon(function() {
|
||||||
// Mark the window with some unique data to be restored later on.
|
// Mark the window with some unique data to be restored later on.
|
||||||
ss.setWindowValue(win, aTest.key, aTest.value);
|
ss.setWindowValue(win, aTest.key, aTest.value);
|
||||||
|
@ -37,7 +36,7 @@ function test() {
|
||||||
win.close();
|
win.close();
|
||||||
aCallback();
|
aCallback();
|
||||||
});
|
});
|
||||||
}, true);
|
});
|
||||||
win.gBrowser.selectedBrowser.loadURI(aTest.url);
|
win.gBrowser.selectedBrowser.loadURI(aTest.url);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,7 @@ function test() {
|
||||||
let testUrl = rootDir + "browser_408470_sample.html";
|
let testUrl = rootDir + "browser_408470_sample.html";
|
||||||
let tab = gBrowser.addTab(testUrl);
|
let tab = gBrowser.addTab(testUrl);
|
||||||
|
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
// enable all stylesheets and verify that they're correctly persisted
|
// enable all stylesheets and verify that they're correctly persisted
|
||||||
Array.forEach(tab.linkedBrowser.contentDocument.styleSheets, function(aSS, aIx) {
|
Array.forEach(tab.linkedBrowser.contentDocument.styleSheets, function(aSS, aIx) {
|
||||||
pendingCount++;
|
pendingCount++;
|
||||||
|
@ -21,8 +20,7 @@ function test() {
|
||||||
gPageStyleMenu.switchStyleSheet(ssTitle, tab.linkedBrowser.contentWindow);
|
gPageStyleMenu.switchStyleSheet(ssTitle, tab.linkedBrowser.contentWindow);
|
||||||
|
|
||||||
let newTab = gBrowser.duplicateTab(tab);
|
let newTab = gBrowser.duplicateTab(tab);
|
||||||
newTab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(newTab, function() {
|
||||||
newTab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let states = Array.map(newTab.linkedBrowser.contentDocument.styleSheets,
|
let states = Array.map(newTab.linkedBrowser.contentDocument.styleSheets,
|
||||||
function(aSS) !aSS.disabled);
|
function(aSS) !aSS.disabled);
|
||||||
let correct = states.indexOf(true) == aIx && states.indexOf(true, aIx + 1) == -1;
|
let correct = states.indexOf(true) == aIx && states.indexOf(true, aIx + 1) == -1;
|
||||||
|
@ -35,22 +33,21 @@ function test() {
|
||||||
gBrowser.removeTab(newTab);
|
gBrowser.removeTab(newTab);
|
||||||
if (--pendingCount == 0)
|
if (--pendingCount == 0)
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// disable all styles and verify that this is correctly persisted
|
// disable all styles and verify that this is correctly persisted
|
||||||
tab.linkedBrowser.markupDocumentViewer.authorStyleDisabled = true;
|
tab.linkedBrowser.markupDocumentViewer.authorStyleDisabled = true;
|
||||||
let newTab = gBrowser.duplicateTab(tab);
|
let newTab = gBrowser.duplicateTab(tab);
|
||||||
newTab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(newTab, function() {
|
||||||
newTab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
is(newTab.linkedBrowser.markupDocumentViewer.authorStyleDisabled, true,
|
is(newTab.linkedBrowser.markupDocumentViewer.authorStyleDisabled, true,
|
||||||
"disabled all stylesheets");
|
"disabled all stylesheets");
|
||||||
|
|
||||||
gBrowser.removeTab(newTab);
|
gBrowser.removeTab(newTab);
|
||||||
if (--pendingCount == 0)
|
if (--pendingCount == 0)
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
|
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,9 +27,7 @@ function test() {
|
||||||
|
|
||||||
newWin.gBrowser.loadURI(testURL, null, null);
|
newWin.gBrowser.loadURI(testURL, null, null);
|
||||||
|
|
||||||
newWin.gBrowser.addEventListener("load", function (aEvent) {
|
whenBrowserLoaded(newWin.gBrowser.selectedBrowser, function() {
|
||||||
newWin.gBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
// get the sessionstore state for the window
|
// get the sessionstore state for the window
|
||||||
let state = ss.getWindowState(newWin);
|
let state = ss.getWindowState(newWin);
|
||||||
|
|
||||||
|
@ -67,7 +65,7 @@ function test() {
|
||||||
cs.removeAll();
|
cs.removeAll();
|
||||||
newWin.close();
|
newWin.close();
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,17 +10,14 @@ function test() {
|
||||||
"browser/components/sessionstore/test/browser_447951_sample.html#";
|
"browser/components/sessionstore/test/browser_447951_sample.html#";
|
||||||
|
|
||||||
let tab = gBrowser.addTab();
|
let tab = gBrowser.addTab();
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
let tabState = { entries: [] };
|
let tabState = { entries: [] };
|
||||||
let max_entries = gPrefService.getIntPref("browser.sessionhistory.max_entries");
|
let max_entries = gPrefService.getIntPref("browser.sessionhistory.max_entries");
|
||||||
for (let i = 0; i < max_entries; i++)
|
for (let i = 0; i < max_entries; i++)
|
||||||
tabState.entries.push({ url: baseURL + i });
|
tabState.entries.push({ url: baseURL + i });
|
||||||
|
|
||||||
ss.setTabState(tab, JSON.stringify(tabState));
|
ss.setTabState(tab, JSON.stringify(tabState));
|
||||||
tab.addEventListener("SSTabRestored", function(aEvent) {
|
whenTabRestored(tab, function() {
|
||||||
tab.removeEventListener("SSTabRestored", arguments.callee, false);
|
|
||||||
tabState = JSON.parse(ss.getTabState(tab));
|
tabState = JSON.parse(ss.getTabState(tab));
|
||||||
is(tabState.entries.length, max_entries, "session history filled to the limit");
|
is(tabState.entries.length, max_entries, "session history filled to the limit");
|
||||||
is(tabState.entries[0].url, baseURL + 0, "... but not more");
|
is(tabState.entries[0].url, baseURL + 0, "... but not more");
|
||||||
|
@ -32,8 +29,15 @@ function test() {
|
||||||
0, 0, 0, 0, false, false, false, false, 0, null);
|
0, 0, 0, 0, false, false, false, false, 0, null);
|
||||||
doc.querySelector("a").dispatchEvent(event);
|
doc.querySelector("a").dispatchEvent(event);
|
||||||
|
|
||||||
executeSoon(function() {
|
function check() {
|
||||||
tabState = JSON.parse(ss.getTabState(tab));
|
tabState = JSON.parse(ss.getTabState(tab));
|
||||||
|
if (tabState.entries[tabState.entries.length - 1].url != baseURL + "end") {
|
||||||
|
// It may take a few passes through the event loop before we
|
||||||
|
// get the right URL.
|
||||||
|
executeSoon(check);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
is(tab.linkedBrowser.currentURI.spec, baseURL + "end",
|
is(tab.linkedBrowser.currentURI.spec, baseURL + "end",
|
||||||
"the new anchor was loaded");
|
"the new anchor was loaded");
|
||||||
is(tabState.entries[tabState.entries.length - 1].url, baseURL + "end",
|
is(tabState.entries[tabState.entries.length - 1].url, baseURL + "end",
|
||||||
|
@ -44,7 +48,9 @@ function test() {
|
||||||
// clean up
|
// clean up
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
finish();
|
finish();
|
||||||
});
|
}
|
||||||
}, false);
|
|
||||||
}, true);
|
check();
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,8 +18,7 @@ function test() {
|
||||||
let rootDir = getRootDirectory(gTestPath);
|
let rootDir = getRootDirectory(gTestPath);
|
||||||
let testURL = rootDir + "browser_454908_sample.html";
|
let testURL = rootDir + "browser_454908_sample.html";
|
||||||
let tab = gBrowser.addTab(testURL);
|
let tab = gBrowser.addTab(testURL);
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = tab.linkedBrowser.contentDocument;
|
let doc = tab.linkedBrowser.contentDocument;
|
||||||
for (let id in fieldValues)
|
for (let id in fieldValues)
|
||||||
doc.getElementById(id).value = fieldValues[id];
|
doc.getElementById(id).value = fieldValues[id];
|
||||||
|
@ -27,8 +26,7 @@ function test() {
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
|
|
||||||
tab = undoCloseTab();
|
tab = undoCloseTab();
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = tab.linkedBrowser.contentDocument;
|
let doc = tab.linkedBrowser.contentDocument;
|
||||||
for (let id in fieldValues) {
|
for (let id in fieldValues) {
|
||||||
let node = doc.getElementById(id);
|
let node = doc.getElementById(id);
|
||||||
|
@ -47,6 +45,6 @@ function test() {
|
||||||
gBrowser.addTab();
|
gBrowser.addTab();
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,13 +13,11 @@ function test() {
|
||||||
let rootDir = getRootDirectory(gTestPath);
|
let rootDir = getRootDirectory(gTestPath);
|
||||||
let testURL = rootDir + "browser_456342_sample.xhtml";
|
let testURL = rootDir + "browser_456342_sample.xhtml";
|
||||||
let tab = gBrowser.addTab(testURL);
|
let tab = gBrowser.addTab(testURL);
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
this.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
let expectedValue = "try to save me";
|
let expectedValue = "try to save me";
|
||||||
// Since bug 537289 we only save non-default values, so we need to set each
|
// Since bug 537289 we only save non-default values, so we need to set each
|
||||||
// form field's value after load.
|
// form field's value after load.
|
||||||
let formEls = aEvent.originalTarget.forms[0].elements;
|
let formEls = tab.linkedBrowser.contentDocument.forms[0].elements;
|
||||||
for (let i = 0; i < formEls.length; i++)
|
for (let i = 0; i < formEls.length; i++)
|
||||||
formEls[i].value = expectedValue;
|
formEls[i].value = expectedValue;
|
||||||
|
|
||||||
|
@ -49,5 +47,5 @@ function test() {
|
||||||
if (gPrefService.prefHasUserValue("browser.sessionstore.privacy_level"))
|
if (gPrefService.prefHasUserValue("browser.sessionstore.privacy_level"))
|
||||||
gPrefService.clearUserPref("browser.sessionstore.privacy_level");
|
gPrefService.clearUserPref("browser.sessionstore.privacy_level");
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,14 +31,8 @@ function test() {
|
||||||
typeText(doc.getElementsByName("1|#out2")[0], Math.random());
|
typeText(doc.getElementsByName("1|#out2")[0], Math.random());
|
||||||
typeText(doc.defaultView.frames[0].frames[1].document.getElementById("in1"), new Date());
|
typeText(doc.defaultView.frames[0].frames[1].document.getElementById("in1"), new Date());
|
||||||
|
|
||||||
frameCount = 0;
|
|
||||||
let tab2 = gBrowser.duplicateTab(tab);
|
let tab2 = gBrowser.duplicateTab(tab);
|
||||||
tab2.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab2, function() {
|
||||||
// wait for all frames to load completely
|
|
||||||
if (frameCount++ < 5)
|
|
||||||
return;
|
|
||||||
tab2.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
let doc = tab2.linkedBrowser.contentDocument;
|
let doc = tab2.linkedBrowser.contentDocument;
|
||||||
let win = tab2.linkedBrowser.contentWindow;
|
let win = tab2.linkedBrowser.contentWindow;
|
||||||
isnot(doc.getElementById("out1").value,
|
isnot(doc.getElementById("out1").value,
|
||||||
|
@ -59,6 +53,6 @@ function test() {
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
|
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
}, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,7 @@ function test() {
|
||||||
|
|
||||||
// set a unique value on a new, blank tab
|
// set a unique value on a new, blank tab
|
||||||
let tab1 = gBrowser.addTab();
|
let tab1 = gBrowser.addTab();
|
||||||
tab1.linkedBrowser.addEventListener("load", function() {
|
whenBrowserLoaded(tab1.linkedBrowser, function() {
|
||||||
tab1.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
ss.setTabValue(tab1, uniqueName, uniqueValue1);
|
ss.setTabValue(tab1, uniqueName, uniqueValue1);
|
||||||
|
|
||||||
// duplicate the tab with that value
|
// duplicate the tab with that value
|
||||||
|
@ -26,14 +25,13 @@ function test() {
|
||||||
|
|
||||||
// overwrite the tab with the value which should remove it
|
// overwrite the tab with the value which should remove it
|
||||||
ss.setTabState(tab1, JSON.stringify({ entries: [] }));
|
ss.setTabState(tab1, JSON.stringify({ entries: [] }));
|
||||||
tab1.linkedBrowser.addEventListener("load", function() {
|
whenTabRestored(tab1, function() {
|
||||||
tab1.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
is(ss.getTabValue(tab1, uniqueName), "", "tab value was cleared");
|
is(ss.getTabValue(tab1, uniqueName), "", "tab value was cleared");
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
gBrowser.removeTab(tab2);
|
gBrowser.removeTab(tab2);
|
||||||
gBrowser.removeTab(tab1);
|
gBrowser.removeTab(tab1);
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,15 +18,13 @@ function test() {
|
||||||
"browser/components/sessionstore/test/browser_466937_sample.html";
|
"browser/components/sessionstore/test/browser_466937_sample.html";
|
||||||
|
|
||||||
let tab = gBrowser.addTab(testURL);
|
let tab = gBrowser.addTab(testURL);
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = tab.linkedBrowser.contentDocument;
|
let doc = tab.linkedBrowser.contentDocument;
|
||||||
doc.getElementById("reverse_thief").value = "/home/user/secret2";
|
doc.getElementById("reverse_thief").value = "/home/user/secret2";
|
||||||
doc.getElementById("bystander").value = testPath;
|
doc.getElementById("bystander").value = testPath;
|
||||||
|
|
||||||
let tab2 = gBrowser.duplicateTab(tab);
|
let tab2 = gBrowser.duplicateTab(tab);
|
||||||
tab2.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab2, function() {
|
||||||
tab2.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
doc = tab2.linkedBrowser.contentDocument;
|
doc = tab2.linkedBrowser.contentDocument;
|
||||||
is(doc.getElementById("thief").value, "",
|
is(doc.getElementById("thief").value, "",
|
||||||
"file path wasn't set to text field value");
|
"file path wasn't set to text field value");
|
||||||
|
@ -40,6 +38,6 @@ function test() {
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
|
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,14 +13,12 @@ function test() {
|
||||||
let tab = gBrowser.addTab("about:sessionrestore");
|
let tab = gBrowser.addTab("about:sessionrestore");
|
||||||
gBrowser.selectedTab = tab;
|
gBrowser.selectedTab = tab;
|
||||||
let browser = tab.linkedBrowser;
|
let browser = tab.linkedBrowser;
|
||||||
browser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(browser, function() {
|
||||||
browser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = browser.contentDocument;
|
let doc = browser.contentDocument;
|
||||||
|
|
||||||
// click on the "Start New Session" button after about:sessionrestore is loaded
|
// click on the "Start New Session" button after about:sessionrestore is loaded
|
||||||
doc.getElementById("errorCancel").click();
|
doc.getElementById("errorCancel").click();
|
||||||
browser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(browser, function() {
|
||||||
browser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = browser.contentDocument;
|
let doc = browser.contentDocument;
|
||||||
|
|
||||||
is(doc.URL, "about:blank", "loaded page is about:blank");
|
is(doc.URL, "about:blank", "loaded page is about:blank");
|
||||||
|
@ -31,14 +29,12 @@ function test() {
|
||||||
gPrefService.setCharPref("browser.startup.homepage", homepage);
|
gPrefService.setCharPref("browser.startup.homepage", homepage);
|
||||||
gPrefService.setIntPref("browser.startup.page", 1);
|
gPrefService.setIntPref("browser.startup.page", 1);
|
||||||
gBrowser.loadURI("about:sessionrestore");
|
gBrowser.loadURI("about:sessionrestore");
|
||||||
browser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(browser, function() {
|
||||||
browser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = browser.contentDocument;
|
let doc = browser.contentDocument;
|
||||||
|
|
||||||
// click on the "Start New Session" button after about:sessionrestore is loaded
|
// click on the "Start New Session" button after about:sessionrestore is loaded
|
||||||
doc.getElementById("errorCancel").click();
|
doc.getElementById("errorCancel").click();
|
||||||
browser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(browser, function() {
|
||||||
browser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = browser.contentDocument;
|
let doc = browser.contentDocument;
|
||||||
|
|
||||||
is(doc.URL, homepage, "loaded page is the homepage");
|
is(doc.URL, homepage, "loaded page is the homepage");
|
||||||
|
@ -48,8 +44,8 @@ function test() {
|
||||||
gPrefService.clearUserPref("browser.startup.page");
|
gPrefService.clearUserPref("browser.startup.page");
|
||||||
gPrefService.clearUserPref("browser.startup.homepage");
|
gPrefService.clearUserPref("browser.startup.homepage");
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,15 +12,13 @@ function test() {
|
||||||
let rootDir = getRootDirectory(gTestPath);
|
let rootDir = getRootDirectory(gTestPath);
|
||||||
let testURL = rootDir + "browser_485482_sample.html";
|
let testURL = rootDir + "browser_485482_sample.html";
|
||||||
let tab = gBrowser.addTab(testURL);
|
let tab = gBrowser.addTab(testURL);
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = tab.linkedBrowser.contentDocument;
|
let doc = tab.linkedBrowser.contentDocument;
|
||||||
doc.querySelector("input[type=text]").value = uniqueValue;
|
doc.querySelector("input[type=text]").value = uniqueValue;
|
||||||
doc.querySelector("input[type=checkbox]").checked = true;
|
doc.querySelector("input[type=checkbox]").checked = true;
|
||||||
|
|
||||||
let tab2 = gBrowser.duplicateTab(tab);
|
let tab2 = gBrowser.duplicateTab(tab);
|
||||||
tab2.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab2, function() {
|
||||||
tab2.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
doc = tab2.linkedBrowser.contentDocument;
|
doc = tab2.linkedBrowser.contentDocument;
|
||||||
is(doc.querySelector("input[type=text]").value, uniqueValue,
|
is(doc.querySelector("input[type=text]").value, uniqueValue,
|
||||||
"generated XPath expression was valid");
|
"generated XPath expression was valid");
|
||||||
|
@ -31,6 +29,6 @@ function test() {
|
||||||
gBrowser.removeTab(tab2);
|
gBrowser.removeTab(tab2);
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,7 @@ function test() {
|
||||||
let uniqueValue = Math.random() + "\u2028Second line\u2029Second paragraph\u2027";
|
let uniqueValue = Math.random() + "\u2028Second line\u2029Second paragraph\u2027";
|
||||||
|
|
||||||
let tab = gBrowser.addTab();
|
let tab = gBrowser.addTab();
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
ss.setTabValue(tab, "bug485563", uniqueValue);
|
ss.setTabValue(tab, "bug485563", uniqueValue);
|
||||||
let tabState = JSON.parse(ss.getTabState(tab));
|
let tabState = JSON.parse(ss.getTabState(tab));
|
||||||
is(tabState.extData["bug485563"], uniqueValue,
|
is(tabState.extData["bug485563"], uniqueValue,
|
||||||
|
@ -23,5 +22,5 @@ function test() {
|
||||||
|
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,9 +14,7 @@ function test() {
|
||||||
gBrowser.selectedTab = tab;
|
gBrowser.selectedTab = tab;
|
||||||
|
|
||||||
let browser = tab.linkedBrowser;
|
let browser = tab.linkedBrowser;
|
||||||
browser.addEventListener("load", function() {
|
whenBrowserLoaded(browser, function() {
|
||||||
browser.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
let tabState = JSON.parse(ss.getTabState(tab));
|
let tabState = JSON.parse(ss.getTabState(tab));
|
||||||
is(tabState.entries[0].referrer, REFERRER1,
|
is(tabState.entries[0].referrer, REFERRER1,
|
||||||
"Referrer retrieved via getTabState matches referrer set via loadURI.");
|
"Referrer retrieved via getTabState matches referrer set via loadURI.");
|
||||||
|
@ -24,29 +22,20 @@ function test() {
|
||||||
tabState.entries[0].referrer = REFERRER2;
|
tabState.entries[0].referrer = REFERRER2;
|
||||||
ss.setTabState(tab, JSON.stringify(tabState));
|
ss.setTabState(tab, JSON.stringify(tabState));
|
||||||
|
|
||||||
tab.addEventListener("SSTabRestored", function(e) {
|
whenTabRestored(tab, function(e) {
|
||||||
tab.removeEventListener("SSTabRestored", arguments.callee, true);
|
|
||||||
is(window.content.document.referrer, REFERRER2, "document.referrer matches referrer set via setTabState.");
|
is(window.content.document.referrer, REFERRER2, "document.referrer matches referrer set via setTabState.");
|
||||||
|
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
// Call stopPropagation on the event so we won't fire the
|
|
||||||
// tabbrowser's SSTabRestored listeners.
|
|
||||||
e.stopPropagation();
|
|
||||||
|
|
||||||
let newTab = ss.undoCloseTab(window, 0);
|
let newTab = ss.undoCloseTab(window, 0);
|
||||||
newTab.addEventListener("SSTabRestored", function(e) {
|
whenTabRestored(newTab, function() {
|
||||||
newTab.removeEventListener("SSTabRestored", arguments.callee, true);
|
|
||||||
|
|
||||||
is(window.content.document.referrer, REFERRER2, "document.referrer is still correct after closing and reopening the tab.");
|
is(window.content.document.referrer, REFERRER2, "document.referrer is still correct after closing and reopening the tab.");
|
||||||
gBrowser.removeTab(newTab);
|
gBrowser.removeTab(newTab);
|
||||||
// Call stopPropagation on the event so we won't fire the
|
|
||||||
// tabbrowser's SSTabRestored listeners.
|
|
||||||
e.stopPropagation();
|
|
||||||
|
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
},true);
|
});
|
||||||
|
|
||||||
let referrerURI = Services.io.newURI(REFERRER1, null, null);
|
let referrerURI = Services.io.newURI(REFERRER1, null, null);
|
||||||
browser.loadURI("http://example.org", referrerURI, null);
|
browser.loadURI("http://example.org", referrerURI, null);
|
||||||
|
|
|
@ -72,16 +72,12 @@ function test() {
|
||||||
// http://example.com. We need to load the blank window first, otherwise the
|
// http://example.com. We need to load the blank window first, otherwise the
|
||||||
// docshell gets confused and doesn't have a current history entry.
|
// docshell gets confused and doesn't have a current history entry.
|
||||||
let tab = gBrowser.addTab("about:blank");
|
let tab = gBrowser.addTab("about:blank");
|
||||||
let tabBrowser = tab.linkedBrowser;
|
let browser = tab.linkedBrowser;
|
||||||
|
|
||||||
tabBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(browser, function() {
|
||||||
tabBrowser.removeEventListener("load", arguments.callee, true);
|
browser.loadURI("http://example.com", null, null);
|
||||||
|
|
||||||
tabBrowser.loadURI("http://example.com", null, null);
|
|
||||||
|
|
||||||
tabBrowser.addEventListener("load", function(aEvent) {
|
|
||||||
tabBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
|
whenBrowserLoaded(browser, function() {
|
||||||
// After these push/replaceState calls, the window should have three
|
// After these push/replaceState calls, the window should have three
|
||||||
// history entries:
|
// history entries:
|
||||||
// testURL (state object: null) <-- oldest
|
// testURL (state object: null) <-- oldest
|
||||||
|
@ -102,13 +98,12 @@ function test() {
|
||||||
ss.setTabState(tab2, state, true);
|
ss.setTabState(tab2, state, true);
|
||||||
|
|
||||||
// Run checkState() once the tab finishes loading its restored state.
|
// Run checkState() once the tab finishes loading its restored state.
|
||||||
tab2.linkedBrowser.addEventListener("load", function() {
|
whenTabRestored(tab2, function() {
|
||||||
tab2.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
SimpleTest.executeSoon(function() {
|
SimpleTest.executeSoon(function() {
|
||||||
checkState(tab2);
|
checkState(tab2);
|
||||||
});
|
});
|
||||||
}, true);
|
});
|
||||||
|
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,9 +47,7 @@ function test() {
|
||||||
|
|
||||||
// create and select a first tab
|
// create and select a first tab
|
||||||
let tab = gBrowser.addTab(TEST_URL);
|
let tab = gBrowser.addTab(TEST_URL);
|
||||||
tab.linkedBrowser.addEventListener("load", function loadListener(e) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
// step1: the above has triggered some saveStateDelayed(), sleep until
|
// step1: the above has triggered some saveStateDelayed(), sleep until
|
||||||
// it's done, and get the initial sessionstore.js mtime
|
// it's done, and get the initial sessionstore.js mtime
|
||||||
setTimeout(function step1(e) {
|
setTimeout(function step1(e) {
|
||||||
|
@ -72,5 +70,5 @@ function test() {
|
||||||
finish();
|
finish();
|
||||||
}, 3500); // end of sleep after tab selection and scrolling
|
}, 3500); // end of sleep after tab selection and scrolling
|
||||||
}, 3500); // end of sleep after initial saveStateDelayed()
|
}, 3500); // end of sleep after initial saveStateDelayed()
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,12 +5,10 @@
|
||||||
function test() {
|
function test() {
|
||||||
let tab1 = gBrowser.addTab("about:rights");
|
let tab1 = gBrowser.addTab("about:rights");
|
||||||
let tab2 = gBrowser.addTab("about:mozilla");
|
let tab2 = gBrowser.addTab("about:mozilla");
|
||||||
tab1.linkedBrowser.addEventListener("load", mainPart, true);
|
whenBrowserLoaded(tab1.linkedBrowser, mainPart);
|
||||||
waitForExplicitFinish();
|
waitForExplicitFinish();
|
||||||
|
|
||||||
function mainPart() {
|
function mainPart() {
|
||||||
tab1.linkedBrowser.removeEventListener("load", mainPart, true);
|
|
||||||
|
|
||||||
// Tell the session storer that the tab is pinned
|
// Tell the session storer that the tab is pinned
|
||||||
let newTabState = '{"entries":[{"url":"about:rights"}],"pinned":true,"userTypedValue":"Hello World!"}';
|
let newTabState = '{"entries":[{"url":"about:rights"}],"pinned":true,"userTypedValue":"Hello World!"}';
|
||||||
ss.setTabState(tab1, newTabState);
|
ss.setTabState(tab1, newTabState);
|
||||||
|
|
|
@ -4,9 +4,7 @@ function test() {
|
||||||
var tab1 = gBrowser.addTab("data:text/plain;charset=utf-8,foo");
|
var tab1 = gBrowser.addTab("data:text/plain;charset=utf-8,foo");
|
||||||
gBrowser.pinTab(tab1);
|
gBrowser.pinTab(tab1);
|
||||||
|
|
||||||
tab1.linkedBrowser.addEventListener("load", function () {
|
whenBrowserLoaded(tab1.linkedBrowser, function() {
|
||||||
tab1.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
var tab2 = gBrowser.addTab();
|
var tab2 = gBrowser.addTab();
|
||||||
gBrowser.pinTab(tab2);
|
gBrowser.pinTab(tab2);
|
||||||
|
|
||||||
|
@ -19,5 +17,5 @@ function test() {
|
||||||
gBrowser.removeTab(tab1);
|
gBrowser.removeTab(tab1);
|
||||||
gBrowser.removeTab(tab2);
|
gBrowser.removeTab(tab2);
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -163,9 +163,7 @@ function onStateRestored(aSubject, aTopic, aData) {
|
||||||
newWin.addEventListener("load", function(aEvent) {
|
newWin.addEventListener("load", function(aEvent) {
|
||||||
newWin.removeEventListener("load", arguments.callee, false);
|
newWin.removeEventListener("load", arguments.callee, false);
|
||||||
|
|
||||||
newWin.gBrowser.selectedBrowser.addEventListener("load", function() {
|
whenBrowserLoaded(newWin.gBrowser.selectedBrowser, function() {
|
||||||
newWin.gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
|
|
||||||
// pin this tab
|
// pin this tab
|
||||||
if (shouldPinTab)
|
if (shouldPinTab)
|
||||||
newWin.gBrowser.pinTab(newWin.gBrowser.selectedTab);
|
newWin.gBrowser.pinTab(newWin.gBrowser.selectedTab);
|
||||||
|
@ -197,7 +195,7 @@ function onStateRestored(aSubject, aTopic, aData) {
|
||||||
else {
|
else {
|
||||||
newWin.BrowserTryToCloseWindow();
|
newWin.BrowserTryToCloseWindow();
|
||||||
}
|
}
|
||||||
}, true);
|
});
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -82,12 +82,10 @@ function testTabRestoreData(aFormData, aExpectedValues, aCallback) {
|
||||||
let tab = gBrowser.addTab(testURL);
|
let tab = gBrowser.addTab(testURL);
|
||||||
let tabState = { entries: [{ url: testURL, formdata: aFormData}] };
|
let tabState = { entries: [{ url: testURL, formdata: aFormData}] };
|
||||||
|
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
ss.setTabState(tab, JSON.stringify(tabState));
|
ss.setTabState(tab, JSON.stringify(tabState));
|
||||||
|
|
||||||
tab.addEventListener("SSTabRestored", function(aEvent) {
|
whenTabRestored(tab, function() {
|
||||||
tab.removeEventListener("SSTabRestored", arguments.callee);
|
|
||||||
let doc = tab.linkedBrowser.contentDocument;
|
let doc = tab.linkedBrowser.contentDocument;
|
||||||
let select = doc.getElementById("select_id");
|
let select = doc.getElementById("select_id");
|
||||||
let value = select.options[select.selectedIndex].value;
|
let value = select.options[select.selectedIndex].value;
|
||||||
|
@ -98,9 +96,7 @@ function testTabRestoreData(aFormData, aExpectedValues, aCallback) {
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
// Call stopPropagation on the event so we won't fire the
|
|
||||||
// tabbrowser's SSTabRestored listeners.
|
|
||||||
aEvent.stopPropagation();
|
|
||||||
aCallback();
|
aCallback();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -127,5 +123,5 @@ function testTabRestoreData(aFormData, aExpectedValues, aCallback) {
|
||||||
is(value, aExpectedValues[0],
|
is(value, aExpectedValues[0],
|
||||||
"Collection has been saved correctly");
|
"Collection has been saved correctly");
|
||||||
});
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,9 +178,6 @@ function testOnWindow(aIsPrivate, aCallback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function waitForTabLoad(aWin, aURL, aCallback) {
|
function waitForTabLoad(aWin, aURL, aCallback) {
|
||||||
aWin.gBrowser.selectedBrowser.addEventListener("load", function onLoad() {
|
whenBrowserLoaded(aWin.gBrowser.selectedBrowser, aCallback);
|
||||||
aWin.gBrowser.selectedBrowser.removeEventListener("load", onLoad, true);
|
|
||||||
executeSoon(aCallback);
|
|
||||||
}, true);
|
|
||||||
aWin.gBrowser.selectedBrowser.loadURI(aURL);
|
aWin.gBrowser.selectedBrowser.loadURI(aURL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ function runTests() {
|
||||||
|
|
||||||
// Let the pending tab load.
|
// Let the pending tab load.
|
||||||
gBrowser.selectedTab = tab;
|
gBrowser.selectedTab = tab;
|
||||||
yield whenBrowserLoaded(tab.linkedBrowser);
|
yield whenTabRestored(tab);
|
||||||
|
|
||||||
// Ensure no 'image' or 'pending' attributes are stored.
|
// Ensure no 'image' or 'pending' attributes are stored.
|
||||||
let {attributes} = JSON.parse(ss.getTabState(tab));
|
let {attributes} = JSON.parse(ss.getTabState(tab));
|
||||||
|
|
|
@ -14,8 +14,7 @@ function test() {
|
||||||
let testURL = "http://mochi.test:8888/browser/" +
|
let testURL = "http://mochi.test:8888/browser/" +
|
||||||
"browser/components/sessionstore/test/browser_form_restore_events_sample.html";
|
"browser/components/sessionstore/test/browser_form_restore_events_sample.html";
|
||||||
let tab = gBrowser.addTab(testURL);
|
let tab = gBrowser.addTab(testURL);
|
||||||
tab.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenBrowserLoaded(tab.linkedBrowser, function() {
|
||||||
tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = tab.linkedBrowser.contentDocument;
|
let doc = tab.linkedBrowser.contentDocument;
|
||||||
|
|
||||||
// text fields
|
// text fields
|
||||||
|
@ -45,8 +44,7 @@ function test() {
|
||||||
|
|
||||||
|
|
||||||
let tab2 = gBrowser.duplicateTab(tab);
|
let tab2 = gBrowser.duplicateTab(tab);
|
||||||
tab2.linkedBrowser.addEventListener("load", function(aEvent) {
|
whenTabRestored(tab2, function() {
|
||||||
tab2.linkedBrowser.removeEventListener("load", arguments.callee, true);
|
|
||||||
let doc = tab2.linkedBrowser.contentDocument;
|
let doc = tab2.linkedBrowser.contentDocument;
|
||||||
let inputFired = doc.getElementById("inputFired").textContent.trim().split();
|
let inputFired = doc.getElementById("inputFired").textContent.trim().split();
|
||||||
let changeFired = doc.getElementById("changeFired").textContent.trim().split();
|
let changeFired = doc.getElementById("changeFired").textContent.trim().split();
|
||||||
|
@ -62,6 +60,6 @@ function test() {
|
||||||
gBrowser.removeTab(tab);
|
gBrowser.removeTab(tab);
|
||||||
|
|
||||||
finish();
|
finish();
|
||||||
}, true);
|
});
|
||||||
}, true);
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,5 +137,3 @@ add_task(function browsing() {
|
||||||
gBrowser.removeTab(tab2);
|
gBrowser.removeTab(tab2);
|
||||||
gBrowser.removeTab(tab1);
|
gBrowser.removeTab(tab1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -301,6 +301,15 @@ function whenWindowLoaded(aWindow, aCallback = next) {
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function whenTabRestored(aTab, aCallback = next) {
|
||||||
|
aTab.addEventListener("SSTabRestored", function onRestored(aEvent) {
|
||||||
|
aTab.removeEventListener("SSTabRestored", onRestored, true);
|
||||||
|
executeSoon(function executeWhenTabRestored() {
|
||||||
|
aCallback();
|
||||||
|
});
|
||||||
|
}, true);
|
||||||
|
}
|
||||||
|
|
||||||
var gUniqueCounter = 0;
|
var gUniqueCounter = 0;
|
||||||
function r() {
|
function r() {
|
||||||
return Date.now() + "-" + (++gUniqueCounter);
|
return Date.now() + "-" + (++gUniqueCounter);
|
||||||
|
@ -339,7 +348,7 @@ let gProgressListener = {
|
||||||
function gProgressListener_onStateChange(aBrowser, aWebProgress, aRequest,
|
function gProgressListener_onStateChange(aBrowser, aWebProgress, aRequest,
|
||||||
aStateFlags, aStatus) {
|
aStateFlags, aStatus) {
|
||||||
if ((!this._checkRestoreState ||
|
if ((!this._checkRestoreState ||
|
||||||
aBrowser.__SS_restoreState == TAB_STATE_RESTORING) &&
|
(aBrowser.__SS_restoreState && aBrowser.__SS_restoreState == TAB_STATE_RESTORING)) &&
|
||||||
aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
|
aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
|
||||||
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK &&
|
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK &&
|
||||||
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW) {
|
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW) {
|
||||||
|
@ -354,12 +363,12 @@ let gProgressListener = {
|
||||||
for (let win in BrowserWindowIterator()) {
|
for (let win in BrowserWindowIterator()) {
|
||||||
for (let i = 0; i < win.gBrowser.tabs.length; i++) {
|
for (let i = 0; i < win.gBrowser.tabs.length; i++) {
|
||||||
let browser = win.gBrowser.tabs[i].linkedBrowser;
|
let browser = win.gBrowser.tabs[i].linkedBrowser;
|
||||||
if (browser.__SS_restoreState == TAB_STATE_RESTORING)
|
if (!browser.__SS_restoreState)
|
||||||
|
wasRestored++;
|
||||||
|
else if (browser.__SS_restoreState == TAB_STATE_RESTORING)
|
||||||
isRestoring++;
|
isRestoring++;
|
||||||
else if (browser.__SS_restoreState == TAB_STATE_NEEDS_RESTORE)
|
else if (browser.__SS_restoreState == TAB_STATE_NEEDS_RESTORE)
|
||||||
needsRestore++;
|
needsRestore++;
|
||||||
else
|
|
||||||
wasRestored++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return [needsRestore, isRestoring, wasRestored];
|
return [needsRestore, isRestoring, wasRestored];
|
||||||
|
|
Загрузка…
Ссылка в новой задаче