summaryrefslogtreecommitdiff
path: root/system/docshell/test/unit/test_setUsePrivateBrowsing.js
diff options
context:
space:
mode:
Diffstat (limited to 'system/docshell/test/unit/test_setUsePrivateBrowsing.js')
-rw-r--r--system/docshell/test/unit/test_setUsePrivateBrowsing.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/system/docshell/test/unit/test_setUsePrivateBrowsing.js b/system/docshell/test/unit/test_setUsePrivateBrowsing.js
new file mode 100644
index 000000000..739186895
--- /dev/null
+++ b/system/docshell/test/unit/test_setUsePrivateBrowsing.js
@@ -0,0 +1,65 @@
+"use strict";
+
+const {utils: Cu} = Components;
+
+Cu.import("resource://gre/modules/AppConstants.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
+
+add_task(function*() {
+ let webNav = Services.appShell.createWindowlessBrowser(false);
+
+ let loadContext = webNav.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsILoadContext);
+
+ let docShell = webNav.getInterface(Ci.nsIDocShell);
+
+ equal(loadContext.usePrivateBrowsing, false, "Should start out in non-private mode");
+
+ loadContext.usePrivateBrowsing = true;
+ equal(loadContext.usePrivateBrowsing, true,
+ "Should be able to change to private mode prior to a document load");
+
+ loadContext.usePrivateBrowsing = false;
+ equal(loadContext.usePrivateBrowsing, false,
+ "Should be able to change to non-private mode prior to a document load");
+
+ let oa = docShell.getOriginAttributes();
+
+ oa.privateBrowsingId = 1;
+ docShell.setOriginAttributes(oa);
+
+ equal(loadContext.usePrivateBrowsing, true,
+ "Should be able to change origin attributes prior to a document load");
+
+ oa.privateBrowsingId = 0;
+ docShell.setOriginAttributes(oa);
+
+ equal(loadContext.usePrivateBrowsing, false,
+ "Should be able to change origin attributes prior to a document load");
+
+ webNav.loadURI("data:text/html,", webNav.LOAD_FLAGS_NONE, null, null, null);
+
+ // Return to the event loop so the load can begin.
+ yield new Promise(do_execute_soon);
+
+ // This causes a failed assertion rather than an exception on debug
+ // builds.
+ if (!AppConstants.DEBUG) {
+ Assert.throws(() => { loadContext.usePrivateBrowsing = true; },
+ /NS_ERROR_FAILURE/,
+ "Should not be able to change private browsing state after initial load has started");
+
+ oa.privateBrowsingId = 1;
+ Assert.throws(() => { docShell.setOriginAttributes(oa); },
+ /NS_ERROR_FAILURE/,
+ "Should not be able to change origin attributes after initial load has started");
+
+ equal(loadContext.usePrivateBrowsing, false,
+ "Should not be able to change private browsing state after initial load has started");
+
+ loadContext.usePrivateBrowsing = false;
+ ok(true, "Should be able to set usePrivateBrowsing to its current value even after initial load");
+ }
+
+ webNav.close();
+});