mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-13 02:37:32 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
109
toolkit/components/places/tests/browser/browser_bug680727.js
Normal file
109
toolkit/components/places/tests/browser/browser_bug680727.js
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
/* Ensure that clicking the button in the Offline mode neterror page updates
|
||||
global history. See bug 680727. */
|
||||
/* TEST_PATH=toolkit/components/places/tests/browser/browser_bug680727.js make -C $(OBJDIR) mochitest-browser-chrome */
|
||||
|
||||
|
||||
const kUniqueURI = Services.io.newURI("http://mochi.test:8888/#bug_680727",
|
||||
null, null);
|
||||
var gAsyncHistory =
|
||||
Cc["@mozilla.org/browser/history;1"].getService(Ci.mozIAsyncHistory);
|
||||
|
||||
var proxyPrefValue;
|
||||
var ourTab;
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
|
||||
// Tests always connect to localhost, and per bug 87717, localhost is now
|
||||
// reachable in offline mode. To avoid this, disable any proxy.
|
||||
proxyPrefValue = Services.prefs.getIntPref("network.proxy.type");
|
||||
Services.prefs.setIntPref("network.proxy.type", 0);
|
||||
|
||||
// Clear network cache.
|
||||
Components.classes["@mozilla.org/netwerk/cache-storage-service;1"]
|
||||
.getService(Components.interfaces.nsICacheStorageService)
|
||||
.clear();
|
||||
|
||||
// Go offline, expecting the error page.
|
||||
Services.io.offline = true;
|
||||
|
||||
BrowserTestUtils.openNewForegroundTab(gBrowser).then(tab => {
|
||||
ourTab = tab;
|
||||
BrowserTestUtils.waitForContentEvent(ourTab.linkedBrowser, "DOMContentLoaded")
|
||||
.then(errorListener);
|
||||
BrowserTestUtils.loadURI(ourTab.linkedBrowser, kUniqueURI.spec);
|
||||
});
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// listen to loading the neterror page. (offline mode)
|
||||
function errorListener() {
|
||||
ok(Services.io.offline, "Services.io.offline is true.");
|
||||
|
||||
// This is an error page.
|
||||
ContentTask.spawn(ourTab.linkedBrowser, kUniqueURI.spec, function(uri) {
|
||||
Assert.equal(content.document.documentURI.substring(0, 27),
|
||||
"about:neterror?e=netOffline", "Document URI is the error page.");
|
||||
|
||||
// But location bar should show the original request.
|
||||
Assert.equal(content.location.href, uri, "Docshell URI is the original URI.");
|
||||
}).then(() => {
|
||||
// Global history does not record URI of a failed request.
|
||||
return PlacesTestUtils.promiseAsyncUpdates().then(() => {
|
||||
gAsyncHistory.isURIVisited(kUniqueURI, errorAsyncListener);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function errorAsyncListener(aURI, aIsVisited) {
|
||||
ok(kUniqueURI.equals(aURI) && !aIsVisited,
|
||||
"The neterror page is not listed in global history.");
|
||||
|
||||
Services.prefs.setIntPref("network.proxy.type", proxyPrefValue);
|
||||
|
||||
// Now press the "Try Again" button, with offline mode off.
|
||||
Services.io.offline = false;
|
||||
|
||||
BrowserTestUtils.waitForContentEvent(ourTab.linkedBrowser, "DOMContentLoaded")
|
||||
.then(reloadListener);
|
||||
|
||||
ContentTask.spawn(ourTab.linkedBrowser, null, function() {
|
||||
Assert.ok(content.document.getElementById("errorTryAgain"),
|
||||
"The error page has got a #errorTryAgain element");
|
||||
content.document.getElementById("errorTryAgain").click();
|
||||
});
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// listen to reload of neterror.
|
||||
function reloadListener() {
|
||||
// This listener catches "DOMContentLoaded" on being called
|
||||
// nsIWPL::onLocationChange(...). That is right *AFTER*
|
||||
// IHistory::VisitURI(...) is called.
|
||||
ok(!Services.io.offline, "Services.io.offline is false.");
|
||||
|
||||
ContentTask.spawn(ourTab.linkedBrowser, kUniqueURI.spec, function(uri) {
|
||||
// This is not an error page.
|
||||
Assert.equal(content.document.documentURI, uri,
|
||||
"Document URI is not the offline-error page, but the original URI.");
|
||||
}).then(() => {
|
||||
// Check if global history remembers the successfully-requested URI.
|
||||
PlacesTestUtils.promiseAsyncUpdates().then(() => {
|
||||
gAsyncHistory.isURIVisited(kUniqueURI, reloadAsyncListener);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function reloadAsyncListener(aURI, aIsVisited) {
|
||||
ok(kUniqueURI.equals(aURI) && aIsVisited, "We have visited the URI.");
|
||||
PlacesTestUtils.clearHistory().then(finish);
|
||||
}
|
||||
|
||||
registerCleanupFunction(function* () {
|
||||
Services.prefs.setIntPref("network.proxy.type", proxyPrefValue);
|
||||
Services.io.offline = false;
|
||||
yield BrowserTestUtils.removeTab(ourTab);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue