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 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 "use strict";
6 const { isWeak, WeakReference } = require("sdk/core/reference");
7 const { Class } = require("sdk/core/heritage");
9 exports["test non WeakReferences"] = assert => {
10 assert.equal(isWeak({}), false,
11 "regular objects aren't weak");
13 assert.equal(isWeak([]), false,
14 "arrays aren't weak");
15 };
17 exports["test a WeakReference"] = assert => {
18 assert.equal(isWeak(new WeakReference()), true,
19 "instances of WeakReferences are weak");
20 };
22 exports["test a subclass"] = assert => {
23 const SubType = Class({
24 extends: WeakReference,
25 foo: function() {
26 }
27 });
29 const x = new SubType();
30 assert.equal(isWeak(x), true,
31 "subtypes of WeakReferences are weak");
33 const SubSubType = Class({
34 extends: SubType
35 });
37 const y = new SubSubType();
38 assert.equal(isWeak(y), true,
39 "sub subtypes of WeakReferences are weak");
40 };
42 exports["test a mixin"] = assert => {
43 const Mixer = Class({
44 implements: [WeakReference]
45 });
47 assert.equal(isWeak(new Mixer()), true,
48 "instances with mixed WeakReference are weak");
50 const Mux = Class({});
51 const MixMux = Class({
52 extends: Mux,
53 implements: [WeakReference]
54 });
56 assert.equal(isWeak(new MixMux()), true,
57 "instances with mixed WeakReference that " +
58 "inheret from other are weak");
61 const Base = Class({});
62 const ReMix = Class({
63 extends: Base,
64 implements: [MixMux]
65 });
67 assert.equal(isWeak(new ReMix()), true,
68 "subtime of mix is still weak");
69 };
71 exports["test an override"] = assert => {
72 const SubType = Class({ extends: WeakReference });
73 isWeak.define(SubType, x => false);
75 assert.equal(isWeak(new SubType()), false,
76 "behavior of isWeak can still be overrided on subtype");
78 const Mixer = Class({ implements: [WeakReference] });
79 const SubMixer = Class({ extends: Mixer });
80 isWeak.define(SubMixer, x => false);
81 assert.equal(isWeak(new SubMixer()), false,
82 "behavior of isWeak can still be overrided on mixed type");
83 };
85 exports["test an opt-in"] = assert => {
86 var BaseType = Class({});
87 var SubType = Class({ extends: BaseType });
89 isWeak.define(SubType, x => true);
90 assert.equal(isWeak(new SubType()), true,
91 "isWeak can be just implemented");
93 var x = {};
94 isWeak.implement(x, x => true);
95 assert.equal(isWeak(x), true,
96 "isWeak can be implemented per instance");
97 };
99 require("sdk/test").run(exports);