mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 600531 - Reload(F5)/Ctrl+Reload(F5) and reload button does not work after session restore [r=dietrich, a=blocking-b7]
This commit is contained in:
parent
6fbe21f5ba
commit
b1f1367491
@ -3539,10 +3539,15 @@ SessionStoreService.prototype = {
|
||||
function sss__resetTabRestoringState(aTab, aRestoreNextTab, aRestoreThisTab) {
|
||||
let browser = aTab.linkedBrowser;
|
||||
|
||||
// Always delete the session history listener off the browser
|
||||
delete browser.__SS_shistoryListener;
|
||||
|
||||
if (browser.__SS_restoring) {
|
||||
// If the session history listener hasn't been detached, make sure we
|
||||
// remove it and delete the reference.
|
||||
if (browser.__SS_shistoryListener) {
|
||||
browser.webNavigation.sessionHistory.
|
||||
removeSHistoryListener(browser.__SS_shistoryListener);
|
||||
delete browser.__SS_shistoryListener;
|
||||
}
|
||||
|
||||
delete browser.__SS_restoring;
|
||||
if (aRestoreNextTab) {
|
||||
// this._tabsRestoringCount is decremented in restoreNextTab.
|
||||
@ -3721,8 +3726,12 @@ let gRestoreTabsProgressListener = {
|
||||
aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
|
||||
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK &&
|
||||
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW) {
|
||||
delete aBrowser.__SS_restoring;
|
||||
this.ss.restoreNextTab(true);
|
||||
// We need to reset the tab before starting the next restore.
|
||||
// _resetTabRestoringState will make sure we remove the session history
|
||||
// listener and will call restoreNextTab.
|
||||
let window = aBrowser.ownerDocument.defaultView;
|
||||
let tab = window.gBrowser._getTabForContentWindow(aBrowser.contentWindow);
|
||||
this.ss._resetTabRestoringState(tab, true, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -577,7 +577,7 @@ function test_reload() {
|
||||
|
||||
if (loadCount == state.windows[0].tabs.length) {
|
||||
window.gBrowser.removeTabsProgressListener(progressListener);
|
||||
runNextTest();
|
||||
test_reload2(state);
|
||||
}
|
||||
else {
|
||||
// reload the next tab
|
||||
@ -592,6 +592,62 @@ function test_reload() {
|
||||
}
|
||||
|
||||
|
||||
// This test shouldn't be added to tests. It will be called directly from
|
||||
// test_reload. This guarantees that we're already in a tested restored state
|
||||
// and we know what the state should be.
|
||||
function test_reload2(aState) {
|
||||
info("starting test_reload2");
|
||||
let progressListener = {
|
||||
onStateChange: function (aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
|
||||
if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP &&
|
||||
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK &&
|
||||
aStateFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW)
|
||||
test_reload2_progressCallback(aBrowser);
|
||||
}
|
||||
}
|
||||
|
||||
// Simulate a left mouse button click with no modifiers, which is what
|
||||
// Command-R, or clicking reload does.
|
||||
let fakeEvent = {
|
||||
button: 0,
|
||||
metaKey: false,
|
||||
altKey: false,
|
||||
ctrlKey: false,
|
||||
shiftKey: false,
|
||||
}
|
||||
|
||||
let loadCount = 0;
|
||||
function test_reload2_progressCallback(aBrowser) {
|
||||
loadCount++;
|
||||
|
||||
if (loadCount <= aState.windows[0].tabs.length) {
|
||||
// double check that this tab was the right one
|
||||
let expectedData = aState.windows[0].tabs[loadCount - 1].extData.uniq;
|
||||
let tab;
|
||||
for (let i = 0; i < window.gBrowser.tabs.length; i++) {
|
||||
if (!tab && window.gBrowser.tabs[i].linkedBrowser == aBrowser)
|
||||
tab = window.gBrowser.tabs[i];
|
||||
}
|
||||
is(ss.getTabValue(tab, "uniq"), expectedData,
|
||||
"test_reload2: load " + loadCount + " - correct tab was reloaded");
|
||||
|
||||
if (loadCount == aState.windows[0].tabs.length) {
|
||||
window.gBrowser.removeTabsProgressListener(progressListener);
|
||||
runNextTest();
|
||||
}
|
||||
else {
|
||||
// reload the next tab
|
||||
window.gBrowser.selectTabAtIndex(loadCount);
|
||||
BrowserReloadOrDuplicate(fakeEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.gBrowser.addTabsProgressListener(progressListener);
|
||||
BrowserReloadOrDuplicate(fakeEvent);
|
||||
}
|
||||
|
||||
|
||||
function countTabs() {
|
||||
let needsRestore = 0,
|
||||
isRestoring = 0,
|
||||
|
Loading…
Reference in New Issue
Block a user