/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ var FormHistory = (Components.utils.import("resource://gre/modules/FormHistory.jsm", {})).FormHistory; /** Test for Bug 472396 **/ function test() { // initialization waitForExplicitFinish(); let windowsToClose = []; let testURI = "http://example.com/tests/toolkit/components/satchel/test/subtst_privbrowsing.html"; function doTest(aIsPrivateMode, aShouldValueExist, aWindow, aCallback) { aWindow.gBrowser.selectedBrowser.addEventListener("load", function onLoad() { if (aWindow.content.location != testURI) { aWindow.gBrowser.selectedBrowser.loadURI(testURI); return; } aWindow.gBrowser.selectedBrowser.removeEventListener("load", onLoad, true); let checks = 0; function doneCheck() { checks++; if (checks == 2) { executeSoon(aCallback); } } // Wait for the second load of the page to call the callback, // because the first load submits the form and the page reloads after // the form submission. aWindow.gBrowser.selectedBrowser.addEventListener("load", function onLoad() { aWindow.gBrowser.selectedBrowser.removeEventListener("load", onLoad, true); doneCheck(); }, true); let count = 0; FormHistory.count({ fieldname: "field", value: "value" }, { handleResult: function(result) { count = result; }, handleError: function (error) { do_throw("Error occurred searching form history: " + error); }, handleCompletion: function(num) { is(count >= 1, aShouldValueExist, "Checking value exists in form history"); doneCheck(); } }); }, true); aWindow.gBrowser.selectedBrowser.loadURI(testURI); } function testOnWindow(aOptions, aCallback) { whenNewWindowLoaded(aOptions, function(aWin) { windowsToClose.push(aWin); executeSoon(() => aCallback(aWin)); }); }; registerCleanupFunction(function() { windowsToClose.forEach(function(aWin) { aWin.close(); }); }); testOnWindow({private: true}, function(aWin) { doTest(true, false, aWin, function() { // Test when not on private mode after visiting a site on private // mode. The form history should no exist. testOnWindow({}, function(aWin) { doTest(false, false, aWin, function() { finish(); }); }); }); }); }