diff options
Diffstat (limited to 'addon-sdk/source/test/test-native-options.js')
-rw-r--r-- | addon-sdk/source/test/test-native-options.js | 183 |
1 files changed, 0 insertions, 183 deletions
diff --git a/addon-sdk/source/test/test-native-options.js b/addon-sdk/source/test/test-native-options.js deleted file mode 100644 index 84212757a..000000000 --- a/addon-sdk/source/test/test-native-options.js +++ /dev/null @@ -1,183 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -"use strict"; - -const { setDefaults, injectOptions: inject, validate } = require('sdk/preferences/native-options'); -const { activeBrowserWindow: { document } } = require("sdk/deprecated/window-utils"); -const { preferencesBranch, id } = require('sdk/self'); -const { get } = require('sdk/preferences/service'); -const { setTimeout } = require('sdk/timers'); -const simple = require('sdk/simple-prefs'); -const fixtures = require('./fixtures'); -const { Cc, Ci } = require('chrome'); - -const prefsrv = Cc['@mozilla.org/preferences-service;1']. - getService(Ci.nsIPrefService); - -function injectOptions(preferences, preferencesBranch, document, parent) { - inject({ - id: id, - preferences: preferences, - preferencesBranch: preferencesBranch, - document: document, - parent: parent - }); -} - -exports.testValidate = function(assert) { - let { preferences } = packageJSON('simple-prefs'); - - let block = () => validate(preferences); - - delete preferences[3].options[0].value; - assert.throws(block, /option requires both a value/, "option missing value error"); - - delete preferences[2].options; - assert.throws(block, /'test3' pref requires options/, "menulist missing options error"); - - preferences[1].type = 'control'; - assert.throws(block, /'test2' control requires a label/, "control missing label error"); - - preferences[1].type = 'nonvalid'; - assert.throws(block, /'test2' pref must be of valid type/, "invalid pref type error"); - - delete preferences[0].title; - assert.throws(block, /'test' pref requires a title/, "pref missing title error"); -} - -exports.testNoPrefs = function(assert, done) { - let { preferences } = packageJSON('no-prefs'); - - let parent = document.createDocumentFragment(); - injectOptions(preferences || [], preferencesBranch, document, parent); - assert.equal(parent.children.length, 0, "No setting elements injected"); - - // must test with events because we can't reset default prefs - function onPrefChange(name) { - assert.fail("No preferences should be defined"); - } - - simple.on('', onPrefChange); - setDefaults(preferences || [], preferencesBranch); - setTimeout(function() { - assert.pass("No preferences were defined"); - simple.off('', onPrefChange); - done(); - }, 100); -} - -exports.testCurlyID = function(assert) { - let { preferences, id } = packageJSON('curly-id'); - let branch = prefsrv.getDefaultBranch('extensions.' + id); - - let parent = document.createDocumentFragment(); - injectOptions(preferences, id, document, parent); - assert.equal(parent.children.length, 1, "One setting elements injected"); - assert.equal(parent.firstElementChild.attributes.pref.value, - "extensions.{34a1eae1-c20a-464f-9b0e-000000000000}.test13", - "Setting pref attribute is set properly"); - - setDefaults(preferences, id); - assert.equal(get('extensions.{34a1eae1-c20a-464f-9b0e-000000000000}.test13'), - 26, "test13 is 26"); - - branch.deleteBranch(''); - assert.equal(get('extensions.{34a1eae1-c20a-464f-9b0e-000000000000}.test13'), - undefined, "test13 is undefined"); -} - -exports.testPreferencesBranch = function(assert) { - let { preferences, 'preferences-branch': prefsBranch } = packageJSON('preferences-branch'); - let branch = prefsrv.getDefaultBranch('extensions.' + prefsBranch); - - let parent = document.createDocumentFragment(); - injectOptions(preferences, prefsBranch, document, parent); - assert.equal(parent.children.length, 1, "One setting elements injected"); - assert.equal(parent.firstElementChild.attributes.pref.value, - "extensions.human-readable.test42", - "Setting pref attribute is set properly"); - - setDefaults(preferences, prefsBranch); - assert.equal(get('extensions.human-readable.test42'), true, "test42 is true"); - - branch.deleteBranch(''); - assert.equal(get('extensions.human-readable.test42'), undefined, "test42 is undefined"); -} - -exports.testSimplePrefs = function(assert) { - let { preferences } = packageJSON('simple-prefs'); - let branch = prefsrv.getDefaultBranch('extensions.' + preferencesBranch); - - function assertPref(setting, name, type, title, description = null) { - assert.equal(setting.getAttribute('data-jetpack-id'), id, - "setting 'data-jetpack-id' attribute correct"); - assert.equal(setting.getAttribute('pref'), 'extensions.' + id + '.' + name, - "setting 'pref' attribute correct"); - assert.equal(setting.getAttribute('pref-name'), name, - "setting 'pref-name' attribute correct"); - assert.equal(setting.getAttribute('type'), type, - "setting 'type' attribute correct"); - assert.equal(setting.getAttribute('title'), title, - "setting 'title' attribute correct"); - if (description) { - assert.equal(setting.getAttribute('desc'), description, - "setting 'desc' attribute correct"); - } - else { - assert.ok(!setting.hasAttribute('desc'), - "setting 'desc' attribute is not present"); - } - } - - function assertOption(option, value, label) { - assert.equal(option.getAttribute('value'), value, "value attribute correct"); - assert.equal(option.getAttribute('label'), label, "label attribute correct"); - } - - let parent = document.createDocumentFragment(); - injectOptions(preferences, preferencesBranch, document, parent); - assert.equal(parent.children.length, 8, "Eight setting elements injected"); - - assertPref(parent.children[0], 'test', 'bool', 't\u00EBst', 'descr\u00EFpti\u00F6n'); - assertPref(parent.children[1], 'test2', 'string', 't\u00EBst'); - assertPref(parent.children[2], 'test3', 'menulist', '"><test'); - assertPref(parent.children[3], 'test4', 'radio', 't\u00EBst'); - - assertPref(parent.children[4], 'test5', 'boolint', 'part part, particle'); - assertPref(parent.children[5], 'test6', 'color', 'pop pop, popscicle'); - assertPref(parent.children[6], 'test7', 'file', 'bike bike'); - assertPref(parent.children[7], 'test8', 'directory', 'test test'); - - let menuItems = parent.children[2].querySelectorAll('menupopup>menuitem'); - let radios = parent.children[3].querySelectorAll('radiogroup>radio'); - - assertOption(menuItems[0], '0', 'label1'); - assertOption(menuItems[1], '1', 'label2'); - assertOption(radios[0], 'red', 'rouge'); - assertOption(radios[1], 'blue', 'bleu'); - - setDefaults(preferences, preferencesBranch); - assert.strictEqual(simple.prefs.test, false, "test is false"); - assert.strictEqual(simple.prefs.test2, "\u00FCnic\u00F8d\u00E9", "test2 is unicode"); - assert.strictEqual(simple.prefs.test3, "1", "test3 is '1'"); - assert.strictEqual(simple.prefs.test4, "red", "test4 is 'red'"); - - // Only delete the test preferences to avoid unsetting any test harness - // preferences. - for (let setting of parent.children) { - let name = setting.getAttribute('pref-name'); - branch.deleteBranch("." + name); - } - - assert.strictEqual(simple.prefs.test, undefined, "test is undefined"); - assert.strictEqual(simple.prefs.test2, undefined, "test2 is undefined"); - assert.strictEqual(simple.prefs.test3, undefined, "test3 is undefined"); - assert.strictEqual(simple.prefs.test4, undefined, "test4 is undefined"); -} - -function packageJSON(dir) { - return require(fixtures.url('preferences/' + dir + '/package.json')); -} - -require('sdk/test').run(exports); |