browser/fuel/test/browser_ApplicationPrefs.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:d58678274c52
1 // The various properties that we'll be testing
2 var testdata = {
3 missing: "fuel.fuel-test-missing",
4 dummy: "fuel.fuel-test",
5 string: "browser.active_color",
6 integer: "permissions.default.image",
7 boolean: "browser.underline_anchors"
8 };
9
10 function test() {
11 // test getting nonexistent values
12 var itemValue = Application.prefs.getValue(testdata.missing, "default");
13 is(itemValue, "default", "Check 'Application.prefs.getValue' for nonexistent item");
14
15 is(Application.prefs.get(testdata.missing), null, "Check 'Application.prefs.get' for nonexistent item");
16
17 // test setting and getting a value
18 Application.prefs.setValue(testdata.dummy, "dummy");
19 itemValue = Application.prefs.getValue(testdata.dummy, "default");
20 is(itemValue, "dummy", "Check 'Application.prefs.getValue' for existing item");
21
22 // test for overwriting an existing value
23 Application.prefs.setValue(testdata.dummy, "smarty");
24 itemValue = Application.prefs.getValue(testdata.dummy, "default");
25 is(itemValue, "smarty", "Check 'Application.prefs.getValue' for overwritten item");
26
27 // test setting and getting a value
28 Application.prefs.get(testdata.dummy).value = "dummy2";
29 itemValue = Application.prefs.get(testdata.dummy).value;
30 is(itemValue, "dummy2", "Check 'Application.prefs.get().value' for existing item");
31
32 // test resetting a pref [since there is no default value, the pref should disappear]
33 Application.prefs.get(testdata.dummy).reset();
34 itemValue = Application.prefs.getValue(testdata.dummy, "default");
35 is(itemValue, "default", "Check 'Application.prefs.getValue' for reset pref");
36
37 // test to see if a non-existant property exists
38 ok(!Application.prefs.has(testdata.dummy), "Check non-existant property for existence");
39
40 // PREF: string browser.active_color == #EE0000
41
42 // test to see if an existing string property exists
43 ok(Application.prefs.has(testdata.string), "Check existing string property for existence");
44
45 // test accessing a non-existant string property
46 var val = Application.prefs.getValue(testdata.dummy, "default");
47 is(val, "default", "Check non-existant string property for expected value");
48
49 // test accessing an existing string property
50 var val = Application.prefs.getValue(testdata.string, "default");
51 is(val, "#EE0000", "Check existing string property for expected value");
52
53 // test manipulating an existing string property
54 Application.prefs.setValue(testdata.string, "#EF0000");
55 var val = Application.prefs.getValue(testdata.string, "default");
56 is(val, "#EF0000", "Set existing string property");
57
58 // test getting the type of an existing string property
59 var type = Application.prefs.get(testdata.string).type;
60 is(type, "String", "Check 'Application.prefs.get().type' for string pref");
61
62 // test resetting an existing string property
63 Application.prefs.get(testdata.string).reset();
64 var val = Application.prefs.getValue(testdata.string, "default");
65 is(val, "#EE0000", "Reset existing string property");
66
67 // PREF: integer permissions.default.image == 1
68
69 // test to see if an existing integer property exists
70 ok(Application.prefs.has(testdata.integer), "Check existing integer property for existence");
71
72 // test accessing a non-existant integer property
73 var val = Application.prefs.getValue(testdata.dummy, 0);
74 is(val, 0, "Check non-existant integer property for expected value");
75
76 // test accessing an existing integer property
77 var val = Application.prefs.getValue(testdata.integer, 0);
78 is(val, 1, "Check existing integer property for expected value");
79
80 // test manipulating an existing integer property
81 Application.prefs.setValue(testdata.integer, 0);
82 var val = Application.prefs.getValue(testdata.integer, 1);
83 is(val, 0, "Set existing integer property");
84
85 // test getting the type of an existing integer property
86 var type = Application.prefs.get(testdata.integer).type;
87 is(type, "Number", "Check 'Application.prefs.get().type' for integer pref");
88
89 // test resetting an existing integer property
90 Application.prefs.get(testdata.integer).reset();
91 var val = Application.prefs.getValue(testdata.integer, 0);
92 is(val, 1, "Reset existing integer property");
93
94 // PREF: boolean browser.underline_anchors == true
95
96 // test to see if an existing boolean property exists
97 ok(Application.prefs.has(testdata.boolean), "Check existing boolean property for existence");
98
99 // test accessing a non-existant boolean property
100 var val = Application.prefs.getValue(testdata.dummy, true);
101 ok(val, "Check non-existant boolean property for expected value");
102
103 // test accessing an existing boolean property
104 var val = Application.prefs.getValue(testdata.boolean, false);
105 ok(val, "Check existing boolean property for expected value");
106
107 // test manipulating an existing boolean property
108 Application.prefs.setValue(testdata.boolean, false);
109 var val = Application.prefs.getValue(testdata.boolean, true);
110 ok(!val, "Set existing boolean property");
111
112 // test getting the type of an existing boolean property
113 var type = Application.prefs.get(testdata.boolean).type;
114 is(type, "Boolean", "Check 'Application.prefs.get().type' for boolean pref");
115
116 // test resetting an existing boolean property
117 Application.prefs.get(testdata.boolean).reset();
118 var val = Application.prefs.getValue(testdata.boolean, false);
119 ok(val, "Reset existing string property for expected value");
120
121 // test getting all preferences
122 var allPrefs = Application.prefs.all;
123 ok(allPrefs.length >= 800, "Check 'Application.prefs.all' for the right number of preferences");
124 ok(allPrefs[0].name.length > 0, "Check 'Application.prefs.all' for a valid name in the starting preference");
125
126 // test the value of the preference root
127 is(Application.prefs.root, "", "Check the Application preference root");
128
129 // test for user changed preferences
130 ok(Application.prefs.get("browser.shell.checkDefaultBrowser").modified, "A single preference is marked as modified.");
131 ok(!Application.prefs.get(testdata.string).modified, "A single preference is marked as not modified.");
132
133 // test for a locked preference
134 var pref = Application.prefs.get(testdata.string);
135 ok(!pref.locked, "A single preference should not be locked.");
136
137 pref.locked = true;
138 ok(pref.locked, "A single preference should be locked.");
139
140 try {
141 prev.value = "test value";
142
143 ok(false, "A locked preference could be modified.");
144 } catch(e){
145 ok(true, "A locked preference should not be able to be modified.");
146 }
147
148 pref.locked = false;
149 ok(!pref.locked, "A single preference is unlocked.");
150
151 // check for change event when setting a value
152 waitForExplicitFinish();
153 Application.prefs.events.addListener("change", onPrefChange);
154 Application.prefs.setValue("fuel.fuel-test", "change event");
155 }
156
157 function onPrefChange(evt) {
158 is(evt.data, testdata.dummy, "Check 'Application.prefs.setValue' fired a change event");
159 Application.prefs.events.removeListener("change", onPrefChange);
160
161 // We are removing the old listener after adding the new listener so we can test that
162 // removing a listener does not remove all listeners
163 Application.prefs.get("fuel.fuel-test").events.addListener("change", onPrefChangeDummy);
164 Application.prefs.get("fuel.fuel-test").events.addListener("change", onPrefChange2);
165 Application.prefs.get("fuel.fuel-test").events.removeListener("change", onPrefChangeDummy);
166
167 Application.prefs.setValue("fuel.fuel-test", "change event2");
168 }
169
170 function onPrefChange2(evt) {
171 is(evt.data, testdata.dummy, "Check 'Application.prefs.setValue' fired a change event for a single preference");
172 Application.prefs.events.removeListener("change", onPrefChange2);
173
174 finish();
175 }
176
177 function onPrefChangeDummy(evt) {
178 ok(false, "onPrefChangeDummy shouldn't be invoked!");
179 }

mercurial