netwerk/test/unit/test_bug826063.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/ */
     4 /**
     5  * Test that nsIPrivateBrowsingChannel.isChannelPrivate yields the correct
     6  * result for various combinations of .setPrivate() and nsILoadContexts
     7  */
     9 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
    10 Cu.import("resource://gre/modules/Services.jsm");
    12 var URIs = [
    13   "http://example.org",
    14   "https://example.org",
    15   "ftp://example.org"
    16   ];
    18 function LoadContext(usePrivateBrowsing) {
    19   this.usePrivateBrowsing = usePrivateBrowsing;
    20 }
    21 LoadContext.prototype = {
    22   QueryInterface: XPCOMUtils.generateQI([Ci.nsILoadContext, Ci.nsIInterfaceRequestor]),
    23   getInterface: XPCOMUtils.generateQI([Ci.nsILoadContext])
    24 };
    26 function getChannels() {
    27   for (let u of URIs) {
    28     yield Services.io.newChannel(u, null, null);
    29   }
    30 }
    32 function checkPrivate(channel, shouldBePrivate) {
    33   do_check_eq(channel.QueryInterface(Ci.nsIPrivateBrowsingChannel).isChannelPrivate,
    34               shouldBePrivate);
    35 }
    37 /**
    38  * Default configuration
    39  * Default is non-private
    40  */
    41 add_test(function test_plain() {
    42   for (let c of getChannels()) {
    43     checkPrivate(c, false);
    44   }
    45   run_next_test();
    46 });
    48 /**
    49  * Explicitly setPrivate(true), no load context
    50  */
    51 add_test(function test_setPrivate_private() {
    52   for (let c of getChannels()) {
    53     c.QueryInterface(Ci.nsIPrivateBrowsingChannel).setPrivate(true);
    54     checkPrivate(c, true);
    55   }
    56   run_next_test();
    57 });
    59 /**
    60  * Explicitly setPrivate(false), no load context
    61  */
    62 add_test(function test_setPrivate_regular() {
    63   for (let c of getChannels()) {
    64     c.QueryInterface(Ci.nsIPrivateBrowsingChannel).setPrivate(false);
    65     checkPrivate(c, false);
    66   }
    67   run_next_test();
    68 });
    70 /**
    71  * Load context mandates private mode
    72  */
    73 add_test(function test_LoadContextPrivate() {
    74   let ctx = new LoadContext(true);
    75   for (let c of getChannels()) {
    76     c.notificationCallbacks = ctx;
    77     checkPrivate(c, true);
    78   }
    79   run_next_test();
    80 });
    82 /**
    83  * Load context mandates regular mode
    84  */
    85 add_test(function test_LoadContextRegular() {
    86   let ctx = new LoadContext(false);
    87   for (let c of getChannels()) {
    88     c.notificationCallbacks = ctx;
    89     checkPrivate(c, false);
    90   }
    91   run_next_test();
    92 });
    95 // Do not test simultanous uses of .setPrivate and load context.
    96 // There is little merit in doing so, and combining both will assert in
    97 // Debug builds anyway.
   100 function run_test() {
   101     run_next_test();
   102 }

mercurial