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 | this.__proto__ = null; |
michael@0 | 2 | |
michael@0 | 3 | function testLenientAndStrict(code, lenient_pred, strict_pred) { |
michael@0 | 4 | return (strict_pred("'use strict'; " + code) && |
michael@0 | 5 | lenient_pred(code)); |
michael@0 | 6 | } |
michael@0 | 7 | function raisesException(exception) { |
michael@0 | 8 | return function (code) { |
michael@0 | 9 | try { |
michael@0 | 10 | eval(code); |
michael@0 | 11 | } catch (actual) { |
michael@0 | 12 | } |
michael@0 | 13 | }; |
michael@0 | 14 | }; |
michael@0 | 15 | try { |
michael@0 | 16 | function arr() { |
michael@0 | 17 | return Object.defineProperty(Object()* delete Object, 0, {writable: false}); |
michael@0 | 18 | } |
michael@0 | 19 | assertEq(testLenientAndStrict('var a = arr(); [a.splice(0, 1), a]', |
michael@0 | 20 | raisesException(TypeError), |
michael@0 | 21 | raisesException(TypeError)), |
michael@0 | 22 | true); |
michael@0 | 23 | } catch (e) {} |
michael@0 | 24 | ForIn_2(this); |
michael@0 | 25 | function ForIn_2(object) { |
michael@0 | 26 | for ( property in object ) { |
michael@0 | 27 | with ( object ) { |
michael@0 | 28 | } |
michael@0 | 29 | } |
michael@0 | 30 | } |