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: // Make sure this is a unique origin or the tests will randomly fail! michael@0: const testPageURL = "http://bug704464-2.example.com/browser/" + michael@0: "dom/indexedDB/test/browser_quotaPrompt.html"; michael@0: const notificationID = "indexedDB-quota-prompt"; michael@0: michael@0: function test() michael@0: { michael@0: waitForExplicitFinish(); michael@0: requestLongerTimeout(10); michael@0: PopupNotifications.transitionsEnabled = false; michael@0: removePermission(testPageURL, "indexedDB-unlimited"); michael@0: Services.prefs.setIntPref("dom.indexedDB.warningQuota", 2); michael@0: executeSoon(test1); michael@0: } michael@0: michael@0: let addMoreTest1Count = 0; michael@0: michael@0: function test1() michael@0: { michael@0: gBrowser.selectedTab = gBrowser.addTab(); michael@0: michael@0: gBrowser.selectedBrowser.addEventListener("load", function () { michael@0: gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); michael@0: michael@0: let seenPopupCount; michael@0: michael@0: setFinishedCallback(function(result) { michael@0: is(result, "ready", "Got 'ready' result"); michael@0: michael@0: setFinishedCallback(function(result) { michael@0: if (!seenPopupCount) { michael@0: is(result, "complete", "Got 'complete' result"); michael@0: } michael@0: else { michael@0: is(result, "abort QuotaExceededError", "Got 'abort' result"); michael@0: } michael@0: michael@0: if (addMoreTest1Count >= seenPopupCount + 5) { michael@0: setFinishedCallback(function(result) { michael@0: is(result, "finished", "Got 'finished' result"); michael@0: is(getPermission(testPageURL, "indexedDB-unlimited"), michael@0: Components.interfaces.nsIPermissionManager.DENY_ACTION, michael@0: "Correct permission set"); michael@0: gBrowser.removeCurrentTab(); michael@0: unregisterAllPopupEventHandlers(); michael@0: addMoreTest1Count = seenPopupCount; michael@0: PopupNotifications.transitionsEnabled = true; michael@0: executeSoon(test2); michael@0: }); michael@0: executeSoon(function() { dispatchEvent("indexedDB-done"); }); michael@0: } michael@0: else { michael@0: ++addMoreTest1Count; michael@0: executeSoon(function() { dispatchEvent("indexedDB-addMore"); }); michael@0: } michael@0: }); michael@0: ++addMoreTest1Count; michael@0: executeSoon(function() { dispatchEvent("indexedDB-addMore"); }); michael@0: }); michael@0: michael@0: registerPopupEventHandler("popupshowing", function () { michael@0: ok(true, "prompt showing"); michael@0: seenPopupCount = addMoreTest1Count - 1; michael@0: }); michael@0: registerPopupEventHandler("popupshown", function () { michael@0: ok(true, "prompt shown"); michael@0: triggerSecondaryCommand(this, 0); michael@0: }); michael@0: registerPopupEventHandler("popuphidden", function () { michael@0: ok(true, "prompt hidden"); michael@0: }); michael@0: michael@0: }, true); michael@0: michael@0: info("loading test page: " + testPageURL); michael@0: content.location = testPageURL + "?v=5"; michael@0: } michael@0: michael@0: function test2() michael@0: { michael@0: gBrowser.selectedTab = gBrowser.addTab(); michael@0: michael@0: gBrowser.selectedBrowser.addEventListener("load", function () { michael@0: gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); michael@0: michael@0: let seenPopup; michael@0: let addMoreCount = 0; michael@0: let lastResult; michael@0: michael@0: setFinishedCallback(function(result) { michael@0: is(result, "ready", "Got 'ready' result"); michael@0: is(getPermission(testPageURL, "indexedDB-unlimited"), michael@0: Components.interfaces.nsIPermissionManager.DENY_ACTION, michael@0: "Correct permission set"); michael@0: michael@0: setFinishedCallback(function(result) { michael@0: info("Got '" + result + "' result"); michael@0: lastResult = result; michael@0: ok(!seenPopup, "No popup"); michael@0: is(getPermission(testPageURL, "indexedDB-unlimited"), michael@0: Components.interfaces.nsIPermissionManager.DENY_ACTION, michael@0: "Correct permission set"); michael@0: michael@0: if (addMoreCount > addMoreTest1Count + 5) { michael@0: setFinishedCallback(function(result) { michael@0: is(result, "finished", "Got 'finished' result"); michael@0: is(lastResult, "abort QuotaExceededError", "Aborted as expected"); michael@0: ok(!seenPopup, "No popup"); michael@0: is(getPermission(testPageURL, "indexedDB-unlimited"), michael@0: Components.interfaces.nsIPermissionManager.DENY_ACTION, michael@0: "Correct permission set"); michael@0: michael@0: gBrowser.removeCurrentTab(); michael@0: unregisterAllPopupEventHandlers(); michael@0: removePermission(testPageURL, "indexedDB"); michael@0: Services.prefs.clearUserPref("dom.indexedDB.warningQuota"); michael@0: executeSoon(finish); michael@0: }); michael@0: executeSoon(function() { dispatchEvent("indexedDB-done"); }); michael@0: } michael@0: else { michael@0: ++addMoreCount; michael@0: executeSoon(function() { dispatchEvent("indexedDB-addMore"); }); michael@0: } michael@0: }); michael@0: ++addMoreCount; michael@0: executeSoon(function() { dispatchEvent("indexedDB-addMore"); }); michael@0: }); michael@0: michael@0: registerPopupEventHandler("popupshowing", function () { michael@0: ok(false, "Shouldn't show a popup this time"); michael@0: seenPopup = true; michael@0: }); michael@0: registerPopupEventHandler("popupshown", function () { michael@0: ok(false, "Shouldn't show a popup this time"); michael@0: }); michael@0: registerPopupEventHandler("popuphidden", function () { michael@0: ok(false, "Shouldn't show a popup this time"); michael@0: }); michael@0: michael@0: }, true); michael@0: michael@0: info("loading test page: " + testPageURL); michael@0: content.location = testPageURL + "?v=7"; michael@0: }