Sat, 03 Jan 2015 20:18:00 +0100
Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.
1 var key = {};
2 var wm = WeakMap();
4 assertEq(wm.has(key), false);
5 // Clearing an already empty WeakMap
6 wm.clear();
7 assertEq(wm.has(key), false);
9 // Clearing a WeakMap with a live key
10 wm.set(key, 42);
11 assertEq(wm.has(key), true);
12 wm.clear();
13 assertEq(wm.has(key), false);
15 // Clearing a WeakMap with keys turned to garbage
16 wm.set(key, {});
17 for (var i = 0; i < 10; i++)
18 wm.set({}, {});
19 assertEq(wm.has(key), true);
20 wm.clear();
21 assertEq(wm.has(key), false);
23 // Clearing a WeakMap with keys turned to garbage and after doing a GC
24 wm.set(key, {});
25 for (var i = 0; i < 10; i++)
26 wm.set({}, {});
27 assertEq(wm.has(key), true);
28 gc();
29 assertEq(wm.has(key), true);
30 wm.clear();
31 assertEq(wm.has(key), false);
33 // More testing when the key is no longer live
34 wm.set(key, {});
35 key = null;
36 wm.clear();
37 gc();
38 var key2 = {};
39 wm.set(key2, {});
40 key2 = null;
41 gc();
42 wm.clear();