dom/tests/mochitest/sessionstorage/test_cookieSession.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 <html xmlns="http://www.w3.org/1999/xhtml">
     2 <head>
     3 <title>cookie per-session only test</title>
     5 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
     6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
     8 <script type="text/javascript">
    10 /*
    11   Set cookie access to be just per session and store to the sessionStorage.
    12   Content stored must prevail only for session of the browser, so it must
    13   be accessible in another window we try to access that key in the same
    14   storage.
    15  */
    17 function pushCookie(aValue, aNext) {
    18   SpecialPowers.pushPermissions([{'type': 'cookie', 'allow': aValue, 'context': document}], pushPermissionAndTest);
    19 }
    21 function pushPermissionAndTest() {
    22   var test = tests.shift();
    23   if (test) {
    24     document.getElementById('testframe').onload = test;
    25     /* After every permission change, an iframe has to be reloaded,
    26        otherwise this test causes failures in b2g (oop) mochitest, because
    27        the permission changes don't seem to be always picked up
    28        by the code that excercises it */
    29     document.getElementById('testframe').contentWindow.location.reload();
    30   } else {
    31     ok(false, 'should not be reached');
    32     SimpleTest.finish();
    33   }
    34 }
    36 function startTest() {
    37   pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_DEFAULT);
    38 }
    40 var tests = [
    41   function test1() {
    42     sessionStorage.setItem("persistent1", "persistent value 1");
    43     sessionStorage.setItem("persistent2", "persistent value 2");
    45     pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_SESSION);
    46   },
    48   function test2() {
    49     sessionStorage.setItem("session only", "session value");
    50     is(sessionStorage.getItem("session only"), "session value", "Value present when cookies in session-only mode");
    51     is(sessionStorage.getItem("persistent1"), "persistent value 1", "Persistent value present");
    52     is(sessionStorage.getItem("persistent2"), "persistent value 2", "Persistent value present");
    54     sessionStorage.setItem("persistent1", "changed persistent value 1");
    55     sessionStorage.removeItem("persistent2");
    57     is(sessionStorage.getItem("session only"), "session value", "Value present when cookies in session-only mode");
    58     is(sessionStorage.getItem("persistent1"), "changed persistent value 1", "Persistent value present");
    59     is(sessionStorage.getItem("persistent2"), null, "Persistent value removed");
    61     // This clear has to delete only changes made in session only mode
    62     sessionStorage.clear();
    64     is(sessionStorage.getItem("session only"), null, "Value not present when cookies in session-only mode after delete");
    65     is(sessionStorage.getItem("persistent1"), null, "Persistent value not present in session only after delete");
    66     is(sessionStorage.getItem("persistent2"), null, "Persistent value not present in session only after delete");
    68     sessionStorage.setItem("session only 2", "must be deleted on drop of session-only cookies permissions");
    70     pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_DEFAULT);
    71   },
    73   function test3() {
    74     is(sessionStorage.getItem("session only"), null, "No value when cookies are in default mode");
    75     is(sessionStorage.getItem("session only 2"), null, "No value when cookies are in default mode");
    76     is(sessionStorage.getItem("persistent1"), "persistent value 1", "Persistent value present");
    77     is(sessionStorage.getItem("persistent2"), "persistent value 2", "Persistent value present");
    79     pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_SESSION);
    80   },
    82   function test4() {
    83     is(sessionStorage.getItem("session only"), null, "Value not present when cookies in session-only mode after delete");
    84     is(sessionStorage.getItem("session only 2"), null, "Value not present when cookies in session-only mode after delete");
    85     is(sessionStorage.getItem("persistent1"), "persistent value 1", "Persistent value present again");
    86     is(sessionStorage.getItem("persistent2"), "persistent value 2", "Persistent value present again");
    88     pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_DEFAULT);
    89   },
    91   function test5() {
    92     sessionStorage.clear();
    94     is(sessionStorage.getItem("session only"), null, "No value when cookies are in default mode");
    95     is(sessionStorage.getItem("persistent1"), null, "Persistent value not present after delete");
    96     is(sessionStorage.getItem("persistent2"), null, "Persistent value not present after delete");
    98     pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_SESSION);
    99   },
   101   function test6() {
   102     is(sessionStorage.getItem("session only"), null, "Value not present when cookies in session-only mode after delete");
   103     is(sessionStorage.getItem("session only 2"), null, "No value when cookies are in default mode");
   104     is(sessionStorage.getItem("persistent1"), null, "Persistent value not present in session only after delete");
   105     is(sessionStorage.getItem("persistent2"), null, "Persistent value not present in session only after delete");
   107     pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_DEFAULT);
   108   },
   110   function test7() {
   111     SimpleTest.finish();
   112   }
   113 ];
   115 SimpleTest.waitForExplicitFinish();
   117 </script>
   119 </head>
   121 <body onload="startTest();">
   122 <iframe id="testframe" src="data:text/html;charset=utf-8,"></iframe>
   123 </body>
   124 </html>

mercurial