widget/tests/unit/test_taskbar_jumplistitems.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:21d183271c3b
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6 // This tests taskbar jump list functionality available on win7 and up.
7
8 const Cc = Components.classes;
9 const Ci = Components.interfaces;
10
11 function test_basics()
12 {
13 var item = Cc["@mozilla.org/windows-jumplistitem;1"].
14 createInstance(Ci.nsIJumpListItem);
15
16 var sep = Cc["@mozilla.org/windows-jumplistseparator;1"].
17 createInstance(Ci.nsIJumpListSeparator);
18
19 var shortcut = Cc["@mozilla.org/windows-jumplistshortcut;1"].
20 createInstance(Ci.nsIJumpListShortcut);
21
22 var link = Cc["@mozilla.org/windows-jumplistlink;1"].
23 createInstance(Ci.nsIJumpListLink);
24
25 do_check_false(item.equals(sep));
26 do_check_false(item.equals(shortcut));
27 do_check_false(item.equals(link));
28
29 do_check_false(sep.equals(item));
30 do_check_false(sep.equals(shortcut));
31 do_check_false(sep.equals(link));
32
33 do_check_false(shortcut.equals(item));
34 do_check_false(shortcut.equals(sep));
35 do_check_false(shortcut.equals(link));
36
37 do_check_false(link.equals(item));
38 do_check_false(link.equals(sep));
39 do_check_false(link.equals(shortcut));
40
41 do_check_true(item.equals(item));
42 do_check_true(sep.equals(sep));
43 do_check_true(link.equals(link));
44 do_check_true(shortcut.equals(shortcut));
45 }
46
47 function test_separator()
48 {
49 // separators:
50
51 var item = Cc["@mozilla.org/windows-jumplistseparator;1"].
52 createInstance(Ci.nsIJumpListSeparator);
53
54 do_check_true(item.type == Ci.nsIJumpListItem.JUMPLIST_ITEM_SEPARATOR);
55 }
56
57 function test_hashes()
58 {
59 var link = Cc["@mozilla.org/windows-jumplistlink;1"]
60 .createInstance(Ci.nsIJumpListLink);
61 var uri1 = Cc["@mozilla.org/network/simple-uri;1"]
62 .createInstance(Ci.nsIURI);
63 var uri2 = Cc["@mozilla.org/network/simple-uri;1"]
64 .createInstance(Ci.nsIURI);
65
66 uri1.spec = "http://www.123.com/";
67 uri2.spec = "http://www.123.com/";
68
69 link.uri = uri1;
70
71 do_check_true(link.compareHash(uri2))
72 uri2.spec = "http://www.456.com/";
73 do_check_false(link.compareHash(uri2))
74 uri2.spec = "http://www.123.com/";
75 do_check_true(link.compareHash(uri2))
76 uri2.spec = "https://www.123.com/";
77 do_check_false(link.compareHash(uri2))
78 uri2.spec = "http://www.123.com/test/";
79 do_check_false(link.compareHash(uri2))
80 uri1.spec = "http://www.123.com/test/";
81 uri2.spec = "http://www.123.com/test/";
82 do_check_true(link.compareHash(uri2))
83 uri1.spec = "https://www.123.com/test/";
84 uri2.spec = "https://www.123.com/test/";
85 do_check_true(link.compareHash(uri2))
86 uri2.spec = "ftp://www.123.com/test/";
87 do_check_false(link.compareHash(uri2))
88 uri2.spec = "http://123.com/test/";
89 do_check_false(link.compareHash(uri2))
90 uri1.spec = "https://www.123.com/test/";
91 uri2.spec = "https://www.123.com/Test/";
92 do_check_false(link.compareHash(uri2))
93
94 uri1.spec = "http://www.123.com/";
95 do_check_eq(link.uriHash, "QGLmWuwuTozr3tOfXSf5mg==");
96 uri1.spec = "http://www.123.com/test/";
97 do_check_eq(link.uriHash, "AG87Ls+GmaUYSUJFETRr3Q==");
98 uri1.spec = "https://www.123.com/";
99 do_check_eq(link.uriHash, "iSx6UH1a9enVPzUA9JZ42g==");
100
101 var uri3 = Cc["@mozilla.org/network/simple-uri;1"]
102 .createInstance(Ci.nsIURI);
103 link.uri = uri3;
104 do_check_eq(link.uriHash, "hTrpDwNRMkvXPqYV5kh1Fw==");
105 }
106
107 function test_links()
108 {
109 // links:
110 var link1 = Cc["@mozilla.org/windows-jumplistlink;1"]
111 .createInstance(Ci.nsIJumpListLink);
112 var link2 = Cc["@mozilla.org/windows-jumplistlink;1"]
113 .createInstance(Ci.nsIJumpListLink);
114
115 var uri1 = Cc["@mozilla.org/network/simple-uri;1"]
116 .createInstance(Ci.nsIURI);
117 var uri2 = Cc["@mozilla.org/network/simple-uri;1"]
118 .createInstance(Ci.nsIURI);
119
120 uri1.spec = "http://www.test.com/";
121 uri2.spec = "http://www.test.com/";
122
123 link1.uri = uri1;
124 link1.uriTitle = "Test";
125 link2.uri = uri2;
126 link2.uriTitle = "Test";
127
128 do_check_true(link1.equals(link2));
129
130 link2.uriTitle = "Testing";
131
132 do_check_false(link1.equals(link2));
133
134 link2.uriTitle = "Test";
135 uri2.spec = "http://www.testing.com/";
136
137 do_check_false(link1.equals(link2));
138 }
139
140 function test_shortcuts()
141 {
142 // shortcuts:
143 var sc = Cc["@mozilla.org/windows-jumplistshortcut;1"]
144 .createInstance(Ci.nsIJumpListShortcut);
145
146 var handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
147 .createInstance(Ci.nsILocalHandlerApp);
148
149 handlerApp.name = "TestApp";
150 handlerApp.detailedDescription = "TestApp detailed description.";
151 handlerApp.appendParameter("-test");
152
153 sc.iconIndex = 1;
154 do_check_eq(sc.iconIndex, 1);
155
156 var faviconPageUri = Cc["@mozilla.org/network/simple-uri;1"]
157 .createInstance(Ci.nsIURI);
158 faviconPageUri.spec = "http://www.123.com/";
159 sc.faviconPageUri = faviconPageUri;
160 do_check_eq(sc.faviconPageUri, faviconPageUri);
161
162 var dirSvc = Cc["@mozilla.org/file/directory_service;1"].
163 getService(Ci.nsIProperties).
164 QueryInterface(Ci.nsIDirectoryService);
165 var notepad = dirSvc.get("WinD", Ci.nsIFile);
166 notepad.append("notepad.exe");
167 if (notepad.exists()) {
168 handlerApp.executable = notepad;
169 sc.app = handlerApp;
170 do_check_eq(sc.app.detailedDescription, "TestApp detailed description.");
171 do_check_eq(sc.app.name, "TestApp");
172 do_check_true(sc.app.parameterExists("-test"));
173 do_check_false(sc.app.parameterExists("-notset"));
174 }
175 }
176
177 function test_jumplist()
178 {
179 // Jump lists can't register links unless the application is the default
180 // protocol handler for the protocol of the link, so we skip off testing
181 // those in these tests. We'll init the jump list for the xpc shell harness,
182 // add a task item, and commit it.
183
184 // not compiled in
185 if (Ci.nsIWinTaskbar == null)
186 return;
187
188 var taskbar = Cc["@mozilla.org/windows-taskbar;1"]
189 .getService(Ci.nsIWinTaskbar);
190
191 var builder = taskbar.createJumpListBuilder();
192
193 do_check_neq(builder, null);
194
195 // Win7 and up only
196 try {
197 var sysInfo = Cc["@mozilla.org/system-info;1"].
198 getService(Ci.nsIPropertyBag2);
199 var ver = parseFloat(sysInfo.getProperty("version"));
200 if (ver < 6.1) {
201 do_check_false(builder.available, false);
202 return;
203 }
204 } catch (ex) { }
205
206 do_check_true(taskbar.available);
207
208 builder.deleteActiveList();
209
210 var items = Cc["@mozilla.org/array;1"]
211 .createInstance(Ci.nsIMutableArray);
212
213 var sc = Cc["@mozilla.org/windows-jumplistshortcut;1"]
214 .createInstance(Ci.nsIJumpListShortcut);
215
216 var handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
217 .createInstance(Ci.nsILocalHandlerApp);
218
219 handlerApp.name = "Notepad";
220 handlerApp.detailedDescription = "Testing detailed description.";
221
222 var dirSvc = Cc["@mozilla.org/file/directory_service;1"].
223 getService(Ci.nsIProperties).
224 QueryInterface(Ci.nsIDirectoryService);
225 var notepad = dirSvc.get("WinD", Ci.nsIFile);
226 notepad.append("notepad.exe");
227 if (notepad.exists()) {
228 handlerApp.executable = notepad;
229 sc.app = handlerApp;
230 items.appendElement(sc, false);
231
232 var removed = Cc["@mozilla.org/array;1"]
233 .createInstance(Ci.nsIMutableArray);
234 do_check_true(builder.initListBuild(removed));
235 do_check_true(builder.addListToBuild(builder.JUMPLIST_CATEGORY_TASKS, items));
236 do_check_true(builder.addListToBuild(builder.JUMPLIST_CATEGORY_RECENT));
237 do_check_true(builder.addListToBuild(builder.JUMPLIST_CATEGORY_FREQUENT));
238 do_check_true(builder.commitListBuild());
239
240 builder.deleteActiveList();
241
242 do_check_true(builder.initListBuild(removed));
243 do_check_true(builder.addListToBuild(builder.JUMPLIST_CATEGORY_CUSTOM, items, "Custom List"));
244 do_check_true(builder.commitListBuild());
245
246 builder.deleteActiveList();
247 }
248 }
249
250 function run_test()
251 {
252 var isWindows = ("@mozilla.org/windows-registry-key;1" in Components.classes);
253 if (!isWindows)
254 return;
255
256 test_basics();
257 test_separator();
258 test_hashes();
259 test_links();
260 test_shortcuts();
261 test_jumplist();
262 }

mercurial