michael@0: /** michael@0: * Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: Components.utils.import("resource://gre/modules/ForgetAboutSite.jsm"); michael@0: michael@0: const domains = [ michael@0: "mochi.test:8888", michael@0: "www.example.com" michael@0: ]; michael@0: michael@0: const addPath = "/browser/dom/indexedDB/test/browser_forgetThisSiteAdd.html"; michael@0: const getPath = "/browser/dom/indexedDB/test/browser_forgetThisSiteGet.html"; michael@0: michael@0: const testPageURL1 = "http://" + domains[0] + addPath; michael@0: const testPageURL2 = "http://" + domains[1] + addPath; michael@0: const testPageURL3 = "http://" + domains[0] + getPath; michael@0: const testPageURL4 = "http://" + domains[1] + getPath; michael@0: michael@0: function test() michael@0: { michael@0: requestLongerTimeout(2); michael@0: waitForExplicitFinish(); michael@0: // Avoids the prompt michael@0: setPermission(testPageURL1, "indexedDB", "unknown"); michael@0: setPermission(testPageURL2, "indexedDB", "unknown"); michael@0: executeSoon(test1); michael@0: } michael@0: michael@0: function test1() michael@0: { michael@0: // Set database version for domain 1 michael@0: gBrowser.selectedTab = gBrowser.addTab(); michael@0: gBrowser.selectedBrowser.addEventListener("load", function () { michael@0: gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); michael@0: michael@0: setFinishedCallback(function(result, exception) { michael@0: ok(result == 11, "Set version on database in " + testPageURL1); michael@0: ok(!exception, "No exception"); michael@0: gBrowser.removeCurrentTab(); michael@0: michael@0: executeSoon(test2); michael@0: }); michael@0: }, true); michael@0: content.location = testPageURL1; michael@0: } michael@0: michael@0: function test2() michael@0: { michael@0: // Set database version for domain 2 michael@0: gBrowser.selectedTab = gBrowser.addTab(); michael@0: gBrowser.selectedBrowser.addEventListener("load", function () { michael@0: gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); michael@0: michael@0: setFinishedCallback(function(result, exception) { michael@0: ok(result == 11, "Set version on database in " + testPageURL2); michael@0: ok(!exception, "No exception"); michael@0: gBrowser.removeCurrentTab(); michael@0: michael@0: executeSoon(test3); michael@0: }); michael@0: }, true); michael@0: content.location = testPageURL2; michael@0: } michael@0: michael@0: function test3() michael@0: { michael@0: // Remove database from domain 2 michael@0: ForgetAboutSite.removeDataFromDomain(domains[1]); michael@0: setPermission(testPageURL4, "indexedDB", "unknown"); michael@0: executeSoon(test4); michael@0: } michael@0: michael@0: function test4() michael@0: { michael@0: // Get database version for domain 1 michael@0: gBrowser.selectedTab = gBrowser.addTab(); michael@0: gBrowser.selectedBrowser.addEventListener("load", function () { michael@0: gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); michael@0: michael@0: setFinishedCallback(function(result, exception) { michael@0: ok(result == 11, "Got correct version on database in " + testPageURL3); michael@0: ok(!exception, "No exception"); michael@0: gBrowser.removeCurrentTab(); michael@0: michael@0: executeSoon(test5); michael@0: }); michael@0: }, true); michael@0: content.location = testPageURL3; michael@0: } michael@0: michael@0: function test5() michael@0: { michael@0: // Get database version for domain 2 michael@0: gBrowser.selectedTab = gBrowser.addTab(); michael@0: gBrowser.selectedBrowser.addEventListener("load", function () { michael@0: gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); michael@0: michael@0: setFinishedCallback(function(result, exception) { michael@0: ok(result == 1, "Got correct version on database in " + testPageURL4); michael@0: ok(!exception, "No exception"); michael@0: gBrowser.removeCurrentTab(); michael@0: michael@0: executeSoon(finish); michael@0: }); michael@0: }, true); michael@0: content.location = testPageURL4; michael@0: }