addon-sdk/source/test/addons/simple-prefs-regression/lib/main.js

Thu, 15 Jan 2015 15:59:08 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:59:08 +0100
branch
TOR_BUG_9701
changeset 10
ac0c01689b40
permissions
-rw-r--r--

Implement a real Private Browsing Mode condition by changing the API/ABI;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     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 { Cu } = require('chrome');
     7 const sp = require('sdk/simple-prefs');
     8 const app = require('sdk/system/xul-app');
     9 const self = require('sdk/self');
    10 const tabs = require('sdk/tabs');
    11 const { preferencesBranch } = require('sdk/self');
    13 const { AddonManager } = Cu.import('resource://gre/modules/AddonManager.jsm', {});
    15 exports.testRegression = function(assert) {
    16   assert.equal(self.preferencesBranch, self.id, 'preferencesBranch returns id here');
    17 }
    19 exports.testDefaultValues = function (assert) {
    20   assert.equal(sp.prefs.myHiddenInt, 5, 'myHiddenInt default is 5');
    21   assert.equal(sp.prefs.myInteger, 8, 'myInteger default is 8');
    22   assert.equal(sp.prefs.somePreference, 'TEST', 'somePreference default is correct');
    23 }
    25 exports.testOptionsType = function(assert, done) {
    26   AddonManager.getAddonByID(self.id, function(aAddon) {
    27     assert.equal(aAddon.optionsType, AddonManager.OPTIONS_TYPE_INLINE, 'options type is inline');
    28     done();
    29   });
    30 }
    32 if (app.is('Firefox')) {
    33   exports.testAOM = function(assert, done) {
    34       tabs.open({
    35       	url: 'about:addons',
    36       	onReady: function(tab) {
    37           tab.attach({
    38             contentScriptWhen: 'end',
    39           	contentScript: 'function onLoad() {\n' +
    40                              'unsafeWindow.removeEventListener("load", onLoad, false);\n' +
    41                              'AddonManager.getAddonByID("' + self.id + '", function(aAddon) {\n' +
    42                                'unsafeWindow.gViewController.viewObjects.detail.node.addEventListener("ViewChanged", function whenViewChanges() {\n' +
    43                                  'unsafeWindow.gViewController.viewObjects.detail.node.removeEventListener("ViewChanged", whenViewChanges, false);\n' +
    44                                  'setTimeout(function() {\n' + // TODO: figure out why this is necessary..
    45                                      'self.postMessage({\n' +
    46                                        'somePreference: getAttributes(unsafeWindow.document.querySelector("setting[title=\'some-title\']")),\n' +
    47                                        'myInteger: getAttributes(unsafeWindow.document.querySelector("setting[title=\'my-int\']")),\n' +
    48                                        'myHiddenInt: getAttributes(unsafeWindow.document.querySelector("setting[title=\'hidden-int\']"))\n' +
    49                                      '});\n' +
    50                                  '}, 250);\n' +
    51                                '}, false);\n' +
    52                                'unsafeWindow.gViewController.commands.cmd_showItemDetails.doCommand(aAddon, true);\n' +
    53                              '});\n' +
    54                              'function getAttributes(ele) {\n' +
    55                                'if (!ele) return {};\n' +
    56                                'return {\n' +
    57                                  'pref: ele.getAttribute("pref"),\n' +
    58                                  'type: ele.getAttribute("type"),\n' +
    59                                  'title: ele.getAttribute("title"),\n' +
    60                                  'desc: ele.getAttribute("desc")\n' +
    61                                '}\n' +
    62                              '}\n' +
    63                            '}\n' +
    64                            // Wait for the load event ?
    65                            'if (document.readyState == "complete") {\n' +
    66                              'onLoad()\n' +
    67                            '} else {\n' +
    68                              'unsafeWindow.addEventListener("load", onLoad, false);\n' +
    69                            '}\n',
    70             onMessage: function(msg) {
    71               // test somePreference
    72               assert.equal(msg.somePreference.type, 'string', 'some pref is a string');
    73               assert.equal(msg.somePreference.pref, 'extensions.'+self.preferencesBranch+'.somePreference', 'somePreference path is correct');
    74               assert.equal(msg.somePreference.title, 'some-title', 'somePreference title is correct');
    75               assert.equal(msg.somePreference.desc, 'Some short description for the preference', 'somePreference description is correct');
    77               // test myInteger
    78               assert.equal(msg.myInteger.type, 'integer', 'myInteger is a int');
    79               assert.equal(msg.myInteger.pref, 'extensions.'+self.preferencesBranch+'.myInteger', 'extensions.test-simple-prefs.myInteger');
    80               assert.equal(msg.myInteger.title, 'my-int', 'myInteger title is correct');
    81               assert.equal(msg.myInteger.desc, 'How many of them we have.', 'myInteger desc is correct');
    83               // test myHiddenInt
    84               assert.equal(msg.myHiddenInt.type, undefined, 'myHiddenInt was not displayed');
    85               assert.equal(msg.myHiddenInt.pref, undefined, 'myHiddenInt was not displayed');
    86               assert.equal(msg.myHiddenInt.title, undefined, 'myHiddenInt was not displayed');
    87               assert.equal(msg.myHiddenInt.desc, undefined, 'myHiddenInt was not displayed');
    89               tab.close(done);
    90             }
    91           });
    92       	}
    93       });
    94   }
    95 }
    97 require('sdk/test/runner').runTestsFromModule(module);

mercurial