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.
michael@0 | 1 | // Constructing calls should throw if !callee->isInterpretedConstructor(). |
michael@0 | 2 | // This tests the polymorphic call path. |
michael@0 | 3 | |
michael@0 | 4 | for (var i=0; i<20; i++) |
michael@0 | 5 | Function.prototype(); |
michael@0 | 6 | |
michael@0 | 7 | var funs = [ |
michael@0 | 8 | function() { return 1; }, |
michael@0 | 9 | function() { return 2; }, |
michael@0 | 10 | function() { return 3; }, |
michael@0 | 11 | function() { return 4; }, |
michael@0 | 12 | function() { return 5; }, |
michael@0 | 13 | function() { return 6; }, |
michael@0 | 14 | function() { return 7; }, |
michael@0 | 15 | function() { return 8; }, |
michael@0 | 16 | function() { return 9; }, |
michael@0 | 17 | function() { return 10; }, |
michael@0 | 18 | Function.prototype |
michael@0 | 19 | ]; |
michael@0 | 20 | |
michael@0 | 21 | function f(callee) { |
michael@0 | 22 | new callee; |
michael@0 | 23 | } |
michael@0 | 24 | function g() { |
michael@0 | 25 | var c = 0; |
michael@0 | 26 | for (var i=0; i<50; i++) { |
michael@0 | 27 | try { |
michael@0 | 28 | f(funs[i % funs.length]); |
michael@0 | 29 | } catch (e) { |
michael@0 | 30 | assertEq(e.message.contains("not a constructor"), true); |
michael@0 | 31 | c++; |
michael@0 | 32 | } |
michael@0 | 33 | } |
michael@0 | 34 | assertEq(c, 4); |
michael@0 | 35 | } |
michael@0 | 36 | g(); |