dom/tests/mochitest/localstorage/test_cookieSession.html

Thu, 15 Jan 2015 15:55:04 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:55:04 +0100
branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
permissions
-rw-r--r--

Back out 97036ab72558 which inappropriately compared turds to third parties.

michael@0 1 <html xmlns="http://www.w3.org/1999/xhtml">
michael@0 2 <head>
michael@0 3 <title>cookie per-session only test</title>
michael@0 4
michael@0 5 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
michael@0 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
michael@0 7
michael@0 8 <script type="text/javascript">
michael@0 9
michael@0 10 /*
michael@0 11 Set cookie access to be just per session and store to the localStorage.
michael@0 12 Content stored must prevail only for session of the browser, so it must
michael@0 13 be accessible in another window we try to access that key in the same
michael@0 14 storage.
michael@0 15 */
michael@0 16
michael@0 17 function pushCookie(aPermission, aNext) {
michael@0 18 SpecialPowers.pushPermissions([{'type': 'cookie', 'allow': aPermission, 'context': document}], aNext);
michael@0 19 }
michael@0 20
michael@0 21 function test1() {
michael@0 22 localStorage.setItem("persistent1", "persistent value 1");
michael@0 23 localStorage.setItem("persistent2", "persistent value 2");
michael@0 24
michael@0 25 pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_SESSION, test1_b);
michael@0 26 }
michael@0 27
michael@0 28 function test1_b() {
michael@0 29 localStorage.setItem("session only", "session value");
michael@0 30 parent.is(localStorage.getItem("session only"), "session value");
michael@0 31 parent.is(localStorage.getItem("persistent1"), "persistent value 1");
michael@0 32 parent.is(localStorage.getItem("persistent2"), "persistent value 2");
michael@0 33
michael@0 34 window.location.search = '?2';
michael@0 35 }
michael@0 36
michael@0 37 function test2()
michael@0 38 {
michael@0 39 parent.is(localStorage.getItem("session only"), "session value", "Value present when cookies in session-only mode");
michael@0 40 parent.is(localStorage.getItem("persistent1"), "persistent value 1", "Persistent value present");
michael@0 41 parent.is(localStorage.getItem("persistent2"), "persistent value 2", "Persistent value present");
michael@0 42
michael@0 43 localStorage.setItem("persistent1", "changed persistent value 1");
michael@0 44 localStorage.removeItem("persistent2");
michael@0 45
michael@0 46 parent.is(localStorage.getItem("session only"), "session value", "Value present when cookies in session-only mode");
michael@0 47 parent.is(localStorage.getItem("persistent1"), "changed persistent value 1", "Persistent value present");
michael@0 48 parent.is(localStorage.getItem("persistent2"), null, "Persistent value removed");
michael@0 49
michael@0 50 // This clear has to delete only changes made in session only mode
michael@0 51 localStorage.clear();
michael@0 52
michael@0 53 parent.is(localStorage.getItem("session only"), null, "Value not present when cookies in session-only mode after delete");
michael@0 54 parent.is(localStorage.getItem("persistent1"), null, "Persistent value not present in session only after delete");
michael@0 55 parent.is(localStorage.getItem("persistent2"), null, "Persistent value not present in session only after delete");
michael@0 56
michael@0 57 localStorage.setItem("session only 2", "must be deleted on drop of session-only cookies permissions");
michael@0 58
michael@0 59 pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_DEFAULT, function() { window.location.search = '?3'; });
michael@0 60 }
michael@0 61
michael@0 62 function test3() {
michael@0 63 parent.is(localStorage.getItem("session only"), null, "No value when cookies are in default mode");
michael@0 64 parent.is(localStorage.getItem("session only 2"), null, "No value when cookies are in default mode");
michael@0 65 parent.is(localStorage.getItem("persistent1"), "persistent value 1", "Persistent value present");
michael@0 66 parent.is(localStorage.getItem("persistent2"), "persistent value 2", "Persistent value present");
michael@0 67
michael@0 68 pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_SESSION, function() { window.location.search = '?4'; });
michael@0 69 }
michael@0 70
michael@0 71 function test4() {
michael@0 72 parent.is(localStorage.getItem("session only"), null, "Value not present when cookies in session-only mode after delete");
michael@0 73 parent.is(localStorage.getItem("session only 2"), null, "Value not present when cookies in session-only mode after delete");
michael@0 74 parent.is(localStorage.getItem("persistent1"), "persistent value 1", "Persistent value present again");
michael@0 75 parent.is(localStorage.getItem("persistent2"), "persistent value 2", "Persistent value present again");
michael@0 76
michael@0 77 pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_DEFAULT, function() { window.location.search = '?5'; });
michael@0 78 }
michael@0 79
michael@0 80 function test5() {
michael@0 81 localStorage.clear();
michael@0 82
michael@0 83 parent.is(localStorage.getItem("session only"), null, "No value when cookies are in default mode");
michael@0 84 parent.is(localStorage.getItem("persistent1"), null, "Persistent value not present after delete");
michael@0 85 parent.is(localStorage.getItem("persistent2"), null, "Persistent value not present after delete");
michael@0 86
michael@0 87 pushCookie(SpecialPowers.Ci.nsICookiePermission.ACCESS_SESSION, function() { window.location.search = '?6'; });
michael@0 88 }
michael@0 89
michael@0 90 function test6() {
michael@0 91 parent.is(localStorage.getItem("session only"), null, "Value not present when cookies in session-only mode after delete");
michael@0 92 parent.is(localStorage.getItem("session only 2"), null, "No value when cookies are in default mode");
michael@0 93 parent.is(localStorage.getItem("persistent1"), null, "Persistent value not present in session only after delete");
michael@0 94 parent.is(localStorage.getItem("persistent2"), null, "Persistent value not present in session only after delete");
michael@0 95
michael@0 96 parent.SimpleTest.finish();
michael@0 97 }
michael@0 98
michael@0 99 function startTest() {
michael@0 100 switch (location.search) {
michael@0 101 case '?1':
michael@0 102 test1();
michael@0 103 break;
michael@0 104 case '?2':
michael@0 105 test2();
michael@0 106 break;
michael@0 107 case '?3':
michael@0 108 test3();
michael@0 109 break;
michael@0 110 case '?4':
michael@0 111 test4();
michael@0 112 break;
michael@0 113 case '?5':
michael@0 114 test5();
michael@0 115 break;
michael@0 116 case '?6':
michael@0 117 test6();
michael@0 118 break;
michael@0 119 default:
michael@0 120 SimpleTest.waitForExplicitFinish();
michael@0 121 var iframe = document.createElement('iframe');
michael@0 122 iframe.src = 'test_cookieSession.html?1';
michael@0 123 document.body.appendChild(iframe);
michael@0 124 }
michael@0 125 }
michael@0 126 </script>
michael@0 127
michael@0 128 </head>
michael@0 129
michael@0 130 <body onload="startTest()">
michael@0 131 </body>
michael@0 132 </html>

mercurial