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 we can save stacks with direct and indirect eval calls.
3 const directEval = (function iife() {
4 return eval("(" + function evalFrame() {
5 return saveStack();
6 } + "())");
7 }());
9 assertEq(directEval.source.contains("> eval"), true);
10 assertEq(directEval.functionDisplayName, "evalFrame");
12 assertEq(directEval.parent.source.contains("> eval"), true);
14 assertEq(directEval.parent.parent.source.contains("> eval"), false);
15 assertEq(directEval.parent.parent.functionDisplayName, "iife");
17 assertEq(directEval.parent.parent.parent.source.contains("> eval"), false);
19 assertEq(directEval.parent.parent.parent.parent, null);
21 const lave = eval;
22 const indirectEval = (function iife() {
23 return lave("(" + function evalFrame() {
24 return saveStack();
25 } + "())");
26 }());
28 assertEq(indirectEval.source.contains("> eval"), true);
29 assertEq(indirectEval.functionDisplayName, "evalFrame");
31 assertEq(indirectEval.parent.source.contains("> eval"), true);
33 assertEq(indirectEval.parent.parent.source.contains("> eval"), false);
34 assertEq(indirectEval.parent.parent.functionDisplayName, "iife");
36 assertEq(indirectEval.parent.parent.parent.source.contains("> eval"), false);
38 assertEq(indirectEval.parent.parent.parent.parent, null);