Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
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/. */
6 // This tests taskbar jump list functionality available on win7 and up.
8 const Cc = Components.classes;
9 const Ci = Components.interfaces;
11 function test_basics()
12 {
13 var item = Cc["@mozilla.org/windows-jumplistitem;1"].
14 createInstance(Ci.nsIJumpListItem);
16 var sep = Cc["@mozilla.org/windows-jumplistseparator;1"].
17 createInstance(Ci.nsIJumpListSeparator);
19 var shortcut = Cc["@mozilla.org/windows-jumplistshortcut;1"].
20 createInstance(Ci.nsIJumpListShortcut);
22 var link = Cc["@mozilla.org/windows-jumplistlink;1"].
23 createInstance(Ci.nsIJumpListLink);
25 do_check_false(item.equals(sep));
26 do_check_false(item.equals(shortcut));
27 do_check_false(item.equals(link));
29 do_check_false(sep.equals(item));
30 do_check_false(sep.equals(shortcut));
31 do_check_false(sep.equals(link));
33 do_check_false(shortcut.equals(item));
34 do_check_false(shortcut.equals(sep));
35 do_check_false(shortcut.equals(link));
37 do_check_false(link.equals(item));
38 do_check_false(link.equals(sep));
39 do_check_false(link.equals(shortcut));
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 }
47 function test_separator()
48 {
49 // separators:
51 var item = Cc["@mozilla.org/windows-jumplistseparator;1"].
52 createInstance(Ci.nsIJumpListSeparator);
54 do_check_true(item.type == Ci.nsIJumpListItem.JUMPLIST_ITEM_SEPARATOR);
55 }
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);
66 uri1.spec = "http://www.123.com/";
67 uri2.spec = "http://www.123.com/";
69 link.uri = uri1;
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))
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==");
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 }
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);
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);
120 uri1.spec = "http://www.test.com/";
121 uri2.spec = "http://www.test.com/";
123 link1.uri = uri1;
124 link1.uriTitle = "Test";
125 link2.uri = uri2;
126 link2.uriTitle = "Test";
128 do_check_true(link1.equals(link2));
130 link2.uriTitle = "Testing";
132 do_check_false(link1.equals(link2));
134 link2.uriTitle = "Test";
135 uri2.spec = "http://www.testing.com/";
137 do_check_false(link1.equals(link2));
138 }
140 function test_shortcuts()
141 {
142 // shortcuts:
143 var sc = Cc["@mozilla.org/windows-jumplistshortcut;1"]
144 .createInstance(Ci.nsIJumpListShortcut);
146 var handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
147 .createInstance(Ci.nsILocalHandlerApp);
149 handlerApp.name = "TestApp";
150 handlerApp.detailedDescription = "TestApp detailed description.";
151 handlerApp.appendParameter("-test");
153 sc.iconIndex = 1;
154 do_check_eq(sc.iconIndex, 1);
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);
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 }
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.
184 // not compiled in
185 if (Ci.nsIWinTaskbar == null)
186 return;
188 var taskbar = Cc["@mozilla.org/windows-taskbar;1"]
189 .getService(Ci.nsIWinTaskbar);
191 var builder = taskbar.createJumpListBuilder();
193 do_check_neq(builder, null);
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) { }
206 do_check_true(taskbar.available);
208 builder.deleteActiveList();
210 var items = Cc["@mozilla.org/array;1"]
211 .createInstance(Ci.nsIMutableArray);
213 var sc = Cc["@mozilla.org/windows-jumplistshortcut;1"]
214 .createInstance(Ci.nsIJumpListShortcut);
216 var handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
217 .createInstance(Ci.nsILocalHandlerApp);
219 handlerApp.name = "Notepad";
220 handlerApp.detailedDescription = "Testing detailed description.";
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);
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());
240 builder.deleteActiveList();
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());
246 builder.deleteActiveList();
247 }
248 }
250 function run_test()
251 {
252 var isWindows = ("@mozilla.org/windows-registry-key;1" in Components.classes);
253 if (!isWindows)
254 return;
256 test_basics();
257 test_separator();
258 test_hashes();
259 test_links();
260 test_shortcuts();
261 test_jumplist();
262 }