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