1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/modules/libpref/test/unit/test_extprefs.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,70 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/licenses/publicdomain/ */ 1.6 + 1.7 +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 1.8 +Components.utils.import("resource://gre/modules/Services.jsm"); 1.9 + 1.10 +// The profile directory is already set up in the head_ files. 1.11 + 1.12 +function arrayenumerator(a) 1.13 +{ 1.14 + return { 1.15 + i_: 0, 1.16 + QueryInterface: XPCOMUtils.generateQI([Ci.nsISimpleEnumerator]), 1.17 + hasMoreElements: function ae_hasMoreElements() { 1.18 + return this.i_ < a.length; 1.19 + }, 1.20 + getNext: function ae_getNext() { 1.21 + return a[this.i_++]; 1.22 + } 1.23 + }; 1.24 +} 1.25 + 1.26 +function run_test() { 1.27 + var ps = Cc["@mozilla.org/preferences-service;1"]. 1.28 + getService(Ci.nsIPrefService).QueryInterface(Ci.nsIPrefBranch); 1.29 + 1.30 + var extprefs = [do_get_file("extdata")]; 1.31 + 1.32 + var extProvider = { 1.33 + QueryInterface: XPCOMUtils.generateQI([Ci.nsIDirectoryServiceProvider, 1.34 + Ci.nsIDirectoryServiceProvider2]), 1.35 + getFile: function ep_getFile() { 1.36 + throw Cr.NS_ERROR_FAILURE; 1.37 + }, 1.38 + 1.39 + getFiles: function ep_getFiles(key) { 1.40 + if (key != "ExtPrefDL") 1.41 + throw Cr.NS_ERROR_FAILURE; 1.42 + 1.43 + return arrayenumerator(extprefs); 1.44 + } 1.45 + }; 1.46 + 1.47 + let prefFile = do_get_file("data/testPref.js"); 1.48 + 1.49 + do_check_throws(function() { 1.50 + ps.getBoolPref("testExtPref.bool"); 1.51 + }, Cr.NS_ERROR_UNEXPECTED); 1.52 + do_check_throws(function() { 1.53 + ps.getBoolPref("testPref.bool1"); 1.54 + }, Cr.NS_ERROR_UNEXPECTED); 1.55 + 1.56 + ps.readUserPrefs(prefFile); 1.57 + 1.58 + do_check_true(ps.getBoolPref("testPref.bool1")); 1.59 + ps.setBoolPref("testPref.bool1", false); 1.60 + do_check_false(ps.getBoolPref("testPref.bool1")); 1.61 + 1.62 + dirSvc.registerProvider(extProvider); 1.63 + Services.obs.notifyObservers(null, "load-extension-defaults", null); 1.64 + 1.65 + // The extension default should be available. 1.66 + do_check_true(ps.getBoolPref("testExtPref.bool")); 1.67 + 1.68 + // The extension default should not override existing user prefs 1.69 + do_check_false(ps.getBoolPref("testPref.bool2")); 1.70 + 1.71 + // The extension default should not modify existing set values 1.72 + do_check_false(ps.getBoolPref("testPref.bool1")); 1.73 +}