OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <html> | |
3 <head> | |
4 <!-- TODO(arv): Check in Closue unit tests and make this run as part of the | |
5 tests --> | |
6 <script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.j
s"></script> | |
7 <script src="../cr.js"></script> | |
8 <script src="linkcontroller.js"></script> | |
9 <script> | |
10 | |
11 goog.require('goog.testing.MockControl'); | |
12 goog.require('goog.testing.PropertyReplacer'); | |
13 goog.require('goog.testing.jsunit'); | |
14 goog.require('goog.testing.mockmatchers'); | |
15 | |
16 </script> | |
17 </head> | |
18 <body> | |
19 <script> | |
20 | |
21 var mockControl, propertyReplacer, mockWindow; | |
22 var chrome = chrome || {}; | |
23 chrome.tabs = chrome.tabs || {}; | |
24 chrome.windows = chrome.windows || {}; | |
25 | |
26 var ObjectEqualsMatcher = goog.testing.mockmatchers.ObjectEquals; | |
27 var SaveArgumentMatcher = goog.testing.mockmatchers.SaveArgument; | |
28 | |
29 var MSG = 'MSG'; | |
30 var localStrings = { | |
31 getStringF: function(msg, number) { | |
32 assertEquals('should_open_all', msg); | |
33 return MSG + number; | |
34 } | |
35 }; | |
36 | |
37 var URL1 = 'http://chromium.org/'; | |
38 var URL2 = '#hash'; | |
39 var WINDOW_ID = 'WINDOW_ID'; | |
40 | |
41 function setUp() { | |
42 mockControl = new goog.testing.MockControl; | |
43 chrome.tabs.create = mockControl.createFunctionMock(); | |
44 chrome.windows.create = mockControl.createFunctionMock(); | |
45 | |
46 propertyReplacer = new goog.testing.PropertyReplacer; | |
47 | |
48 mockWindow = { | |
49 confirm: mockControl.createFunctionMock(), | |
50 location: { | |
51 get href() { | |
52 return 'http://www.google.com/'; | |
53 }, | |
54 set href(url) { | |
55 assertEquals(URL1, url); | |
56 } | |
57 } | |
58 }; | |
59 } | |
60 | |
61 function tearDown() { | |
62 mockControl.$tearDown(); | |
63 propertyReplacer.reset(); | |
64 } | |
65 | |
66 function testGetWarningMessage() { | |
67 var lc = new cr.LinkController(localStrings); | |
68 var msg = lc.getWarningMessage(10); | |
69 assertEquals(MSG + 10, msg); | |
70 } | |
71 | |
72 function openUrlFromEventHelper(event, isMac, expectedKind) { | |
73 var lc = new cr.LinkController(localStrings); | |
74 | |
75 lc.openUrls = mockControl.createFunctionMock(); | |
76 lc.openUrls([URL1], expectedKind); | |
77 | |
78 propertyReplacer.set(cr, 'isMac', isMac); | |
79 | |
80 mockControl.$replayAll(); | |
81 | |
82 lc.openUrlFromEvent(URL1, event); | |
83 | |
84 mockControl.$verifyAll(); | |
85 } | |
86 | |
87 /////////////////////////////////////////////////////////////////////////////// | |
88 | |
89 function testOpenUrlFromEventForegroundTab() { | |
90 var e = { | |
91 type: 'click', | |
92 button: 0, | |
93 shiftKey: true, | |
94 ctrlKey: true | |
95 }; | |
96 openUrlFromEventHelper(e, false, cr.LinkKind.FOREGROUND_TAB); | |
97 } | |
98 | |
99 function testOpenUrlFromEventForegroundTabMac() { | |
100 var e = { | |
101 type: 'click', | |
102 button: 0, | |
103 shiftKey: true, | |
104 metaKey: true | |
105 }; | |
106 openUrlFromEventHelper(e, true, cr.LinkKind.FOREGROUND_TAB); | |
107 } | |
108 | |
109 function testOpenUrlFromEventForegroundTabEnter() { | |
110 var e = { | |
111 type: 'keydown', | |
112 keyIdentifier: 'Enter', | |
113 shiftKey: true, | |
114 ctrlKey: true | |
115 }; | |
116 openUrlFromEventHelper(e, false, cr.LinkKind.FOREGROUND_TAB); | |
117 } | |
118 | |
119 function testOpenUrlFromEventForegroundTabEnterMac() { | |
120 var e = { | |
121 type: 'keydown', | |
122 keyIdentifier: 'Enter', | |
123 shiftKey: true, | |
124 metaKey: true | |
125 }; | |
126 openUrlFromEventHelper(e, true, cr.LinkKind.FOREGROUND_TAB); | |
127 } | |
128 | |
129 function testOpenUrlFromEventForegroundTabMiddleClick() { | |
130 var e = { | |
131 type: 'click', | |
132 button: 1, | |
133 shiftKey: true | |
134 }; | |
135 openUrlFromEventHelper(e, false, cr.LinkKind.FOREGROUND_TAB); | |
136 } | |
137 | |
138 /////////////////////////////////////////////////////////////////////////////// | |
139 | |
140 function testOpenUrlFromEventBackgroundTab() { | |
141 var e = { | |
142 type: 'click', | |
143 button: 0, | |
144 ctrlKey: true | |
145 }; | |
146 openUrlFromEventHelper(e, false, cr.LinkKind.BACKGROUND_TAB); | |
147 } | |
148 | |
149 function testOpenUrlFromEventBackgroundTabMac() { | |
150 var e = { | |
151 type: 'click', | |
152 button: 0, | |
153 metaKey: true | |
154 }; | |
155 openUrlFromEventHelper(e, true, cr.LinkKind.BACKGROUND_TAB); | |
156 } | |
157 | |
158 function testOpenUrlFromEventBackgroundTabEnter() { | |
159 var e = { | |
160 type: 'keydown', | |
161 keyIdentifier: 'Enter', | |
162 ctrlKey: true | |
163 }; | |
164 openUrlFromEventHelper(e, false, cr.LinkKind.BACKGROUND_TAB); | |
165 } | |
166 | |
167 function testOpenUrlFromEventBackgroundTabEnterMac() { | |
168 var e = { | |
169 type: 'keydown', | |
170 keyIdentifier: 'Enter', | |
171 metaKey: true | |
172 }; | |
173 openUrlFromEventHelper(e, true, cr.LinkKind.BACKGROUND_TAB); | |
174 } | |
175 | |
176 function testOpenUrlFromEventBackgroundTabMiddleClick() { | |
177 var e = { | |
178 type: 'click', | |
179 button: 1 | |
180 }; | |
181 openUrlFromEventHelper(e, false, cr.LinkKind.BACKGROUND_TAB); | |
182 } | |
183 | |
184 /////////////////////////////////////////////////////////////////////////////// | |
185 | |
186 function testOpenUrlFromEventWindow() { | |
187 var e = { | |
188 type: 'click', | |
189 button: 0, | |
190 shiftKey: true | |
191 }; | |
192 openUrlFromEventHelper(e, false, cr.LinkKind.WINDOW); | |
193 } | |
194 | |
195 function testOpenUrlFromEventWindowEnter() { | |
196 var e = { | |
197 type: 'keydown', | |
198 keyIdentifier: 'Enter', | |
199 shiftKey: true | |
200 }; | |
201 openUrlFromEventHelper(e, false, cr.LinkKind.WINDOW); | |
202 } | |
203 | |
204 /////////////////////////////////////////////////////////////////////////////// | |
205 | |
206 function testOpenUrlFromEventSelf() { | |
207 var e = { | |
208 type: 'click', | |
209 button: 0 | |
210 }; | |
211 openUrlFromEventHelper(e, false, cr.LinkKind.SELF); | |
212 } | |
213 | |
214 function testOpenUrlFromEventSelfEnter() { | |
215 var e = { | |
216 type: 'keydown', | |
217 keyIdentifier: 'Enter' | |
218 }; | |
219 openUrlFromEventHelper(e, false, cr.LinkKind.SELF); | |
220 } | |
221 | |
222 /////////////////////////////////////////////////////////////////////////////// | |
223 | |
224 function testOpenUrl() { | |
225 var lc = new cr.LinkController(localStrings); | |
226 lc.openUrls = mockControl.createFunctionMock(); | |
227 | |
228 lc.openUrls(new ObjectEqualsMatcher([URL1]), cr.LinkKind.SELF); | |
229 mockControl.$replayAll(); | |
230 | |
231 lc.openUrl(URL1, cr.LinkKind.SELF); | |
232 | |
233 mockControl.$verifyAll(); | |
234 } | |
235 | |
236 /////////////////////////////// OpenUrls ////////////////////////////////////// | |
237 | |
238 function testOpenUrlsTooFew() { | |
239 var lc = new cr.LinkController(localStrings); | |
240 | |
241 mockControl.$replayAll(); | |
242 | |
243 lc.openUrls([], cr.LinkKind.SELF); | |
244 | |
245 mockControl.$verifyAll(); | |
246 } | |
247 | |
248 | |
249 function testOpenUrlsTooMany() { | |
250 var lc = new cr.LinkController(localStrings); | |
251 lc.warningLimit = 9; | |
252 | |
253 var urls = new Array(lc.warningLimit + 1); | |
254 lc.window = mockWindow; | |
255 | |
256 lc.window.confirm('MSG10').$returns(false); | |
257 mockControl.$replayAll(); | |
258 | |
259 lc.openUrls(urls, cr.LinkKind.SELF); | |
260 | |
261 mockControl.$verifyAll(); | |
262 } | |
263 | |
264 function testOpenUrlsSelf() { | |
265 var lc = new cr.LinkController(localStrings); | |
266 lc.window = mockWindow; | |
267 | |
268 mockControl.$replayAll(); | |
269 | |
270 lc.openUrls([URL1], cr.LinkKind.SELF); | |
271 | |
272 mockControl.$verifyAll(); | |
273 } | |
274 | |
275 function testOpenUrlsForegroundTab() { | |
276 var lc = new cr.LinkController(localStrings); | |
277 lc.window = mockWindow; | |
278 | |
279 chrome.tabs.create(new ObjectEqualsMatcher({url: URL1, selected: true})); | |
280 chrome.tabs.create(new ObjectEqualsMatcher({ | |
281 url: 'http://www.google.com/#hash', | |
282 selected: false | |
283 })); | |
284 | |
285 mockControl.$replayAll(); | |
286 | |
287 lc.openUrls([URL1, URL2], cr.LinkKind.FOREGROUND_TAB); | |
288 | |
289 mockControl.$verifyAll(); | |
290 } | |
291 | |
292 function testOpenUrlsBackgroundTab() { | |
293 var lc = new cr.LinkController(localStrings); | |
294 lc.window = mockWindow; | |
295 | |
296 chrome.tabs.create(new ObjectEqualsMatcher({url: URL1, selected: false})); | |
297 chrome.tabs.create(new ObjectEqualsMatcher({ | |
298 url: 'http://www.google.com/#hash', | |
299 selected: false | |
300 })); | |
301 | |
302 mockControl.$replayAll(); | |
303 | |
304 lc.openUrls([URL1, URL2], cr.LinkKind.BACKGROUND_TAB); | |
305 | |
306 mockControl.$verifyAll(); | |
307 } | |
308 | |
309 function testOpenUrlsWindow() { | |
310 var lc = new cr.LinkController(localStrings); | |
311 lc.window = mockWindow; | |
312 | |
313 var callbackMatcher = new SaveArgumentMatcher; | |
314 chrome.windows.create(new ObjectEqualsMatcher({url: URL1, incognito: false}), | |
315 callbackMatcher); | |
316 chrome.tabs.create(new ObjectEqualsMatcher({ | |
317 url: 'http://www.google.com/#hash', | |
318 windowId: WINDOW_ID, | |
319 selected: false | |
320 })); | |
321 | |
322 mockControl.$replayAll(); | |
323 | |
324 lc.openUrls([URL1, URL2], cr.LinkKind.WINDOW); | |
325 callbackMatcher.arg({id: WINDOW_ID}); | |
326 | |
327 mockControl.$verifyAll(); | |
328 } | |
329 | |
330 function testOpenUrlsIncognito() { | |
331 var lc = new cr.LinkController(localStrings); | |
332 lc.window = mockWindow; | |
333 | |
334 var callbackMatcher = new SaveArgumentMatcher; | |
335 chrome.windows.create(new ObjectEqualsMatcher({url: URL1, incognito: true}), | |
336 callbackMatcher); | |
337 chrome.tabs.create(new ObjectEqualsMatcher({ | |
338 url: 'http://www.google.com/#hash', | |
339 windowId: WINDOW_ID, | |
340 selected: false | |
341 })); | |
342 | |
343 mockControl.$replayAll(); | |
344 | |
345 lc.openUrls([URL1, URL2], cr.LinkKind.INCOGNITO); | |
346 callbackMatcher.arg({id: WINDOW_ID}); | |
347 | |
348 mockControl.$verifyAll(); | |
349 } | |
350 | |
351 </script> | |
352 </body> | |
353 </html> | |
OLD | NEW |