addon-sdk/source/test/test-registry.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

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/. */
     5 'use strict';
     7 exports['test:add'] = function(assert) {
     8   function Class() {}
     9   let fixture = require('sdk/util/registry').Registry(Class);
    10   let isAddEmitted = false;
    11   fixture.on('add', function(item) {
    12     assert.ok(
    13       item instanceof Class,
    14       'if object added is not an instance should construct instance from it'
    15     );
    16     assert.ok(
    17       fixture.has(item),
    18       'callback is called after instance is added'
    19     );
    20     assert.ok(
    21       !isAddEmitted,
    22       'callback should be called for the same item only once'
    23     );
    24     isAddEmitted = true;
    25   });
    27   let object = fixture.add({});
    28   fixture.add(object);
    29 };
    31 exports['test:remove'] = function(assert) {
    32   function Class() {}
    33   let fixture = require('sdk/util/registry').Registry(Class);
    34   fixture.on('remove', function(item) {
    35      assert.ok(
    36       item instanceof Class,
    37       'if object removed can be only instance of Class'
    38     );
    39     assert.ok(
    40       fixture.has(item),
    41       'callback is called before instance is removed'
    42     );
    43     assert.ok(
    44       !isRemoveEmitted,
    45       'callback should be called for the same item only once'
    46     );
    47     isRemoveEmitted = true;
    48   });
    50   fixture.remove({});
    51   let object = fixture.add({});
    52   fixture.remove(object);
    53   fixture.remove(object);
    54 };
    56 exports['test:items'] = function(assert) {
    57   function Class() {}
    58   let fixture = require('sdk/util/registry').Registry(Class),
    59       actual,
    60       times = 0;
    62   function testItem(item) {
    63     times ++;
    64     assert.equal(
    65       actual,
    66       item,
    67       'item should match actual item being added/removed'
    68     );
    69   }
    71   actual = fixture.add({});
    73   fixture.on('add', testItem);
    74   fixture.on('remove', testItem);
    76   fixture.remove(actual);
    77   fixture.remove(fixture.add(actual = new Class()));
    78   assert.equal(3, times, 'should notify listeners on each call');
    79 };
    81 require('sdk/test').run(exports);

mercurial