gecko/mobile/chrome/tests/browser_history.js

76 lines
2.1 KiB
JavaScript

/*
* Make sure history is being recorded when we visit websites.
*/
var testURL_01 = baseURI + "browser_blank_01.html";
// A queue to order the tests and a handle for each test
var gTests = [];
var gCurrentTest = null;
//------------------------------------------------------------------------------
// Entry point (must be named "test")
function test() {
// The "runNextTest" approach is async, so we need to call "waitForExplicitFinish()"
// We call "finish()" when the tests are finished
waitForExplicitFinish();
// Start the tests
runNextTest();
}
//------------------------------------------------------------------------------
// Iterating tests by shifting test out one by one as runNextTest is called.
function runNextTest() {
// Run the next test until all tests completed
if (gTests.length > 0) {
gCurrentTest = gTests.shift();
info(gCurrentTest.desc);
gCurrentTest.run();
}
else {
// Cleanup. All tests are completed at this point
try {
}
finally {
// We must finialize the tests
finish();
}
}
}
/**
* One-time observer callback.
*/
function waitForObserve(name, callback) {
var observerService = Cc["@mozilla.org/observer-service;1"]
.getService(Ci.nsIObserverService);
var observer = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
observe: function(subject, topic, data) {
observerService.removeObserver(observer, name);
observer = null;
callback(subject, topic, data);
}
};
observerService.addObserver(observer, name, false);
}
//------------------------------------------------------------------------------
gTests.push({
desc: "Test history being added with page visit",
_currentTab: null,
run: function() {
this._currentTab = Browser.addTab(testURL_01, true);
waitForObserve("uri-visit-saved", function(subject, topic, data) {
let uri = subject.QueryInterface(Ci.nsIURI);
ok(uri.spec == testURL_01, "URI was saved to history");
Browser.closeTab(gCurrentTest._currentTab);
runNextTest();
});
}
});