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 // Test that SavedFrame instances get removed from the SavedStacks frames cache
2 // after a GC.
4 const FUZZ_FACTOR = 3;
6 function assertAboutEq(actual, expected) {
7 if (Math.abs(actual - expected) > FUZZ_FACTOR)
8 throw new Error("Assertion failed: expected about " + expected + ", got " + actual +
9 ". FUZZ_FACTOR = " + FUZZ_FACTOR);
10 }
12 const stacks = [];
14 stacks.push(saveStack());
15 stacks.push(saveStack());
16 stacks.push(saveStack());
17 stacks.push(saveStack());
18 stacks.push(saveStack());
19 stacks.push(saveStack());
20 stacks.push(saveStack());
21 stacks.push(saveStack());
22 stacks.push(saveStack());
23 stacks.push(saveStack());
24 stacks.push(saveStack());
25 stacks.push(saveStack());
26 stacks.push(saveStack());
27 stacks.push(saveStack());
28 stacks.push(saveStack());
29 stacks.push(saveStack());
30 stacks.push(saveStack());
31 stacks.push(saveStack());
32 stacks.push(saveStack());
33 stacks.push(saveStack());
34 stacks.push(saveStack());
35 stacks.push(saveStack());
36 stacks.push(saveStack());
37 stacks.push(saveStack());
38 stacks.push(saveStack());
39 stacks.push(saveStack());
40 stacks.push(saveStack());
41 stacks.push(saveStack());
42 stacks.push(saveStack());
43 stacks.push(saveStack());
44 stacks.push(saveStack());
45 stacks.push(saveStack());
46 stacks.push(saveStack());
47 stacks.push(saveStack());
48 stacks.push(saveStack());
49 stacks.push(saveStack());
50 stacks.push(saveStack());
51 stacks.push(saveStack());
52 stacks.push(saveStack());
53 stacks.push(saveStack());
54 stacks.push(saveStack());
55 stacks.push(saveStack());
56 stacks.push(saveStack());
57 stacks.push(saveStack());
58 stacks.push(saveStack());
59 stacks.push(saveStack());
60 stacks.push(saveStack());
61 stacks.push(saveStack());
62 stacks.push(saveStack());
63 stacks.push(saveStack());
64 stacks.push(saveStack());
66 assertAboutEq(getSavedFrameCount(), 50);
68 while (stacks.length) {
69 stacks.pop();
70 }
71 gc();
73 stacks = null;
74 gc();
76 assertAboutEq(getSavedFrameCount(), 0);