OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 function NavigateInCurrentTabCallback() { | 5 function NavigateInCurrentTabCallback() { |
6 this.navigateCalled = false; | 6 this.navigateCalled = false; |
7 this.url = undefined; | 7 this.url = undefined; |
8 this.callback = function(url) { | 8 this.callback = function(url) { |
9 this.navigateCalled = true; | 9 this.navigateCalled = true; |
10 this.url = url; | 10 this.url = url; |
(...skipping 10 matching lines...) Expand all Loading... | |
21 this.callback = function(url) { | 21 this.callback = function(url) { |
22 this.navigateCalled = true; | 22 this.navigateCalled = true; |
23 this.url = url; | 23 this.url = url; |
24 }.bind(this); | 24 }.bind(this); |
25 this.reset = function() { | 25 this.reset = function() { |
26 this.navigateCalled = false; | 26 this.navigateCalled = false; |
27 this.url = undefined; | 27 this.url = undefined; |
28 }; | 28 }; |
29 } | 29 } |
30 | 30 |
31 function NavigateInNewWindowCallback() { | |
32 this.navigateCalled = false; | |
33 this.url = undefined; | |
34 this.callback = function(url) { | |
35 this.navigateCalled = true; | |
36 this.url = url; | |
37 }.bind(this); | |
38 this.reset = function() { | |
39 this.navigateCalled = false; | |
40 this.url = undefined; | |
41 }; | |
42 } | |
raymes
2016/09/05 04:29:32
I'm not sure if it's useful to define this 3 times
jaepark
2016/09/06 02:49:56
Done.
| |
43 | |
31 /** | 44 /** |
32 * Given a |navigator|, navigate to |url| in the current tab or new tab, | 45 * Given a |navigator|, navigate to |url| in the current tab or new tab, |
33 * depending on the value of |openInNewTab|. Use |viewportChangedCallback| | 46 * depending on the value of |openInNewTab|. Use |viewportChangedCallback| |
34 * and |navigateCallback| to check the callbacks, and that the navigation | 47 * and |navigateCallback| to check the callbacks, and that the navigation |
35 * to |expectedResultUrl| happened. | 48 * to |expectedResultUrl| happened. |
36 */ | 49 */ |
37 function doNavigationUrlTest( | 50 function doNavigationUrlTest( |
38 navigator, | 51 navigator, |
39 url, | 52 url, |
40 disposition, | 53 disposition, |
41 expectedResultUrl, | 54 expectedResultUrl, |
42 viewportChangedCallback, | 55 viewportChangedCallback, |
43 navigateCallback) { | 56 navigateCallback) { |
44 viewportChangedCallback.reset(); | 57 viewportChangedCallback.reset(); |
45 navigateCallback.reset(); | 58 navigateCallback.reset(); |
46 navigator.navigate(url, disposition); | 59 navigator.navigate(url, disposition); |
47 chrome.test.assertFalse(viewportChangedCallback.wasCalled); | 60 chrome.test.assertFalse(viewportChangedCallback.wasCalled); |
48 chrome.test.assertTrue(navigateCallback.navigateCalled); | 61 chrome.test.assertTrue(navigateCallback.navigateCalled); |
49 chrome.test.assertEq(expectedResultUrl, navigateCallback.url); | 62 chrome.test.assertEq(expectedResultUrl, navigateCallback.url); |
50 } | 63 } |
51 | 64 |
52 /** | 65 /** |
53 * Helper function to run doNavigationUrlTest() for the current tab and a new | 66 * Helper function to run doNavigationUrlTest() for the current tab and a new |
54 * tab. | 67 * tab. |
55 */ | 68 */ |
56 function doNavigationUrlTestInCurrentTabAndNewTab( | 69 function doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
raymes
2016/09/05 04:29:32
Perhaps just change this to doNavigationUrlTest?
jaepark
2016/09/06 02:49:57
Done.
| |
57 navigator, | 70 navigator, |
58 url, | 71 url, |
59 expectedResultUrl, | 72 expectedResultUrl, |
60 viewportChangedCallback, | 73 viewportChangedCallback, |
61 navigateInCurrentTabCallback, | 74 navigateInCurrentTabCallback, |
62 navigateInNewTabCallback) { | 75 navigateInNewTabCallback, |
76 navigateInNewWindowCallback) { | |
63 doNavigationUrlTest(navigator, url, | 77 doNavigationUrlTest(navigator, url, |
64 Navigator.WindowOpenDisposition.CURRENT_TAB, expectedResultUrl, | 78 Navigator.WindowOpenDisposition.CURRENT_TAB, expectedResultUrl, |
65 viewportChangedCallback, navigateInCurrentTabCallback); | 79 viewportChangedCallback, navigateInCurrentTabCallback); |
66 doNavigationUrlTest(navigator, url, | 80 doNavigationUrlTest(navigator, url, |
67 Navigator.WindowOpenDisposition.NEW_BACKGROUND_TAB, expectedResultUrl, | 81 Navigator.WindowOpenDisposition.NEW_BACKGROUND_TAB, expectedResultUrl, |
68 viewportChangedCallback, navigateInNewTabCallback); | 82 viewportChangedCallback, navigateInNewTabCallback); |
83 doNavigationUrlTest(navigator, url, | |
84 Navigator.WindowOpenDisposition.NEW_WINDOW, expectedResultUrl, | |
85 viewportChangedCallback, navigateInNewWindowCallback); | |
69 } | 86 } |
70 | 87 |
71 var tests = [ | 88 var tests = [ |
72 /** | 89 /** |
73 * Test navigation within the page, opening a url in the same tab and | 90 * Test navigation within the page, opening a url in the same tab and |
74 * opening a url in a new tab. | 91 * opening a url in a new tab. |
75 */ | 92 */ |
76 function testNavigate() { | 93 function testNavigate() { |
77 var mockWindow = new MockWindow(100, 100); | 94 var mockWindow = new MockWindow(100, 100); |
78 var mockSizer = new MockSizer(); | 95 var mockSizer = new MockSizer(); |
79 var mockCallback = new MockViewportChangedCallback(); | 96 var mockCallback = new MockViewportChangedCallback(); |
80 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, | 97 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
81 function() {}, function() {}, 0, 1, 0); | 98 function() {}, function() {}, 0, 1, 0); |
82 | 99 |
83 var paramsParser = new OpenPDFParamsParser(function(name) { | 100 var paramsParser = new OpenPDFParamsParser(function(name) { |
84 if (name == 'US') | 101 if (name == 'US') |
85 paramsParser.onNamedDestinationReceived(0); | 102 paramsParser.onNamedDestinationReceived(0); |
86 else if (name == 'UY') | 103 else if (name == 'UY') |
87 paramsParser.onNamedDestinationReceived(2); | 104 paramsParser.onNamedDestinationReceived(2); |
88 else | 105 else |
89 paramsParser.onNamedDestinationReceived(-1); | 106 paramsParser.onNamedDestinationReceived(-1); |
90 }); | 107 }); |
91 var url = "http://xyz.pdf"; | 108 var url = "http://xyz.pdf"; |
92 | 109 |
93 var navigateInCurrentTabCallback = new NavigateInCurrentTabCallback(); | 110 var navigateInCurrentTabCallback = new NavigateInCurrentTabCallback(); |
94 var navigateInNewTabCallback = new NavigateInNewTabCallback(); | 111 var navigateInNewTabCallback = new NavigateInNewTabCallback(); |
112 var navigateInNewWindowCallback = new NavigateInNewWindowCallback(); | |
95 var navigator = new Navigator(url, viewport, paramsParser, | 113 var navigator = new Navigator(url, viewport, paramsParser, |
96 navigateInCurrentTabCallback.callback, | 114 navigateInCurrentTabCallback.callback, |
97 navigateInNewTabCallback.callback); | 115 navigateInNewTabCallback.callback, |
116 navigateInNewWindowCallback.callback); | |
98 | 117 |
99 var documentDimensions = new MockDocumentDimensions(); | 118 var documentDimensions = new MockDocumentDimensions(); |
100 documentDimensions.addPage(100, 100); | 119 documentDimensions.addPage(100, 100); |
101 documentDimensions.addPage(200, 200); | 120 documentDimensions.addPage(200, 200); |
102 documentDimensions.addPage(100, 400); | 121 documentDimensions.addPage(100, 400); |
103 viewport.setDocumentDimensions(documentDimensions); | 122 viewport.setDocumentDimensions(documentDimensions); |
104 viewport.setZoom(1); | 123 viewport.setZoom(1); |
105 | 124 |
106 mockCallback.reset(); | 125 mockCallback.reset(); |
107 // This should move viewport to page 0. | 126 // This should move viewport to page 0. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
157 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, | 176 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
158 function() {}, function() {}, 0, 1, 0); | 177 function() {}, function() {}, 0, 1, 0); |
159 | 178 |
160 var paramsParser = new OpenPDFParamsParser(function(name) { | 179 var paramsParser = new OpenPDFParamsParser(function(name) { |
161 paramsParser.onNamedDestinationReceived(-1); | 180 paramsParser.onNamedDestinationReceived(-1); |
162 }); | 181 }); |
163 var url = "http://www.example.com/subdir/xyz.pdf"; | 182 var url = "http://www.example.com/subdir/xyz.pdf"; |
164 | 183 |
165 var navigateInCurrentTabCallback = new NavigateInCurrentTabCallback(); | 184 var navigateInCurrentTabCallback = new NavigateInCurrentTabCallback(); |
166 var navigateInNewTabCallback = new NavigateInNewTabCallback(); | 185 var navigateInNewTabCallback = new NavigateInNewTabCallback(); |
186 var navigateInNewWindowCallback = new NavigateInNewWindowCallback(); | |
167 var navigator = new Navigator(url, viewport, paramsParser, | 187 var navigator = new Navigator(url, viewport, paramsParser, |
168 navigateInCurrentTabCallback.callback, | 188 navigateInCurrentTabCallback.callback, |
169 navigateInNewTabCallback.callback); | 189 navigateInNewTabCallback.callback, |
190 navigateInNewWindowCallback.callback); | |
170 | 191 |
171 // Sanity check. | 192 // Sanity check. |
172 doNavigationUrlTestInCurrentTabAndNewTab( | 193 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
173 navigator, | 194 navigator, |
174 'https://www.foo.com/bar.pdf', | 195 'https://www.foo.com/bar.pdf', |
175 'https://www.foo.com/bar.pdf', | 196 'https://www.foo.com/bar.pdf', |
176 mockCallback, | 197 mockCallback, |
177 navigateInCurrentTabCallback, | 198 navigateInCurrentTabCallback, |
178 navigateInNewTabCallback); | 199 navigateInNewTabCallback, |
200 navigateInNewWindowCallback); | |
179 | 201 |
180 // Open relative links. | 202 // Open relative links. |
181 doNavigationUrlTestInCurrentTabAndNewTab( | 203 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
182 navigator, | 204 navigator, |
183 'foo/bar.pdf', | 205 'foo/bar.pdf', |
184 'http://www.example.com/subdir/foo/bar.pdf', | 206 'http://www.example.com/subdir/foo/bar.pdf', |
185 mockCallback, | 207 mockCallback, |
186 navigateInCurrentTabCallback, | 208 navigateInCurrentTabCallback, |
187 navigateInNewTabCallback); | 209 navigateInNewTabCallback, |
188 doNavigationUrlTestInCurrentTabAndNewTab( | 210 navigateInNewWindowCallback); |
211 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( | |
189 navigator, | 212 navigator, |
190 'foo.com/bar.pdf', | 213 'foo.com/bar.pdf', |
191 'http://www.example.com/subdir/foo.com/bar.pdf', | 214 'http://www.example.com/subdir/foo.com/bar.pdf', |
192 mockCallback, | 215 mockCallback, |
193 navigateInCurrentTabCallback, | 216 navigateInCurrentTabCallback, |
194 navigateInNewTabCallback); | 217 navigateInNewTabCallback, |
218 navigateInNewWindowCallback); | |
195 // The expected result is not normalized here. | 219 // The expected result is not normalized here. |
196 doNavigationUrlTestInCurrentTabAndNewTab( | 220 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
197 navigator, | 221 navigator, |
198 '../www.foo.com/bar.pdf', | 222 '../www.foo.com/bar.pdf', |
199 'http://www.example.com/subdir/../www.foo.com/bar.pdf', | 223 'http://www.example.com/subdir/../www.foo.com/bar.pdf', |
200 mockCallback, | 224 mockCallback, |
201 navigateInCurrentTabCallback, | 225 navigateInCurrentTabCallback, |
202 navigateInNewTabCallback); | 226 navigateInNewTabCallback, |
227 navigateInNewWindowCallback); | |
203 | 228 |
204 // Open an absolute link. | 229 // Open an absolute link. |
205 doNavigationUrlTestInCurrentTabAndNewTab( | 230 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
206 navigator, | 231 navigator, |
207 '/foodotcom/bar.pdf', | 232 '/foodotcom/bar.pdf', |
208 'http://www.example.com/foodotcom/bar.pdf', | 233 'http://www.example.com/foodotcom/bar.pdf', |
209 mockCallback, | 234 mockCallback, |
210 navigateInCurrentTabCallback, | 235 navigateInCurrentTabCallback, |
211 navigateInNewTabCallback); | 236 navigateInNewTabCallback, |
237 navigateInNewWindowCallback); | |
212 | 238 |
213 // Open a http url without a scheme. | 239 // Open a http url without a scheme. |
214 doNavigationUrlTestInCurrentTabAndNewTab( | 240 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
215 navigator, | 241 navigator, |
216 'www.foo.com/bar.pdf', | 242 'www.foo.com/bar.pdf', |
217 'http://www.foo.com/bar.pdf', | 243 'http://www.foo.com/bar.pdf', |
218 mockCallback, | 244 mockCallback, |
219 navigateInCurrentTabCallback, | 245 navigateInCurrentTabCallback, |
220 navigateInNewTabCallback); | 246 navigateInNewTabCallback, |
247 navigateInNewWindowCallback); | |
221 | 248 |
222 // Test three dots. | 249 // Test three dots. |
223 doNavigationUrlTestInCurrentTabAndNewTab( | 250 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
224 navigator, | 251 navigator, |
225 '.../bar.pdf', | 252 '.../bar.pdf', |
226 'http://www.example.com/subdir/.../bar.pdf', | 253 'http://www.example.com/subdir/.../bar.pdf', |
227 mockCallback, | 254 mockCallback, |
228 navigateInCurrentTabCallback, | 255 navigateInCurrentTabCallback, |
229 navigateInNewTabCallback); | 256 navigateInNewTabCallback, |
257 navigateInNewWindowCallback); | |
230 | 258 |
231 // Test forward slashes. | 259 // Test forward slashes. |
232 doNavigationUrlTestInCurrentTabAndNewTab( | 260 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
233 navigator, | 261 navigator, |
234 '..\\bar.pdf', | 262 '..\\bar.pdf', |
235 'http://www.example.com/subdir/..\\bar.pdf', | 263 'http://www.example.com/subdir/..\\bar.pdf', |
236 mockCallback, | 264 mockCallback, |
237 navigateInCurrentTabCallback, | 265 navigateInCurrentTabCallback, |
238 navigateInNewTabCallback); | 266 navigateInNewTabCallback, |
239 doNavigationUrlTestInCurrentTabAndNewTab( | 267 navigateInNewWindowCallback); |
268 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( | |
240 navigator, | 269 navigator, |
241 '.\\bar.pdf', | 270 '.\\bar.pdf', |
242 'http://www.example.com/subdir/.\\bar.pdf', | 271 'http://www.example.com/subdir/.\\bar.pdf', |
243 mockCallback, | 272 mockCallback, |
244 navigateInCurrentTabCallback, | 273 navigateInCurrentTabCallback, |
245 navigateInNewTabCallback); | 274 navigateInNewTabCallback, |
246 doNavigationUrlTestInCurrentTabAndNewTab( | 275 navigateInNewWindowCallback); |
276 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( | |
247 navigator, | 277 navigator, |
248 '\\bar.pdf', | 278 '\\bar.pdf', |
249 'http://www.example.com/subdir/\\bar.pdf', | 279 'http://www.example.com/subdir/\\bar.pdf', |
250 mockCallback, | 280 mockCallback, |
251 navigateInCurrentTabCallback, | 281 navigateInCurrentTabCallback, |
252 navigateInNewTabCallback); | 282 navigateInNewTabCallback, |
283 navigateInNewWindowCallback); | |
253 | 284 |
254 // Regression test for https://crbug.com/569040 | 285 // Regression test for https://crbug.com/569040 |
255 doNavigationUrlTestInCurrentTabAndNewTab( | 286 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
256 navigator, | 287 navigator, |
257 'http://something.else/foo#page=5', | 288 'http://something.else/foo#page=5', |
258 'http://something.else/foo#page=5', | 289 'http://something.else/foo#page=5', |
259 mockCallback, | 290 mockCallback, |
260 navigateInCurrentTabCallback, | 291 navigateInCurrentTabCallback, |
261 navigateInNewTabCallback); | 292 navigateInNewTabCallback, |
293 navigateInNewWindowCallback); | |
262 | 294 |
263 chrome.test.succeed(); | 295 chrome.test.succeed(); |
264 }, | 296 }, |
265 /** | 297 /** |
266 * Test opening a url in the same tab and opening a url in a new tab with a | 298 * Test opening a url in the same tab and opening a url in a new tab with a |
267 * file:/// url as the current location. | 299 * file:/// url as the current location. |
268 */ | 300 */ |
269 function testNavigateFromLocalFile() { | 301 function testNavigateFromLocalFile() { |
270 var mockWindow = new MockWindow(100, 100); | 302 var mockWindow = new MockWindow(100, 100); |
271 var mockSizer = new MockSizer(); | 303 var mockSizer = new MockSizer(); |
272 var mockCallback = new MockViewportChangedCallback(); | 304 var mockCallback = new MockViewportChangedCallback(); |
273 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, | 305 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
274 function() {}, function() {}, 0, 1, 0); | 306 function() {}, function() {}, 0, 1, 0); |
275 | 307 |
276 var paramsParser = new OpenPDFParamsParser(function(name) { | 308 var paramsParser = new OpenPDFParamsParser(function(name) { |
277 paramsParser.onNamedDestinationReceived(-1); | 309 paramsParser.onNamedDestinationReceived(-1); |
278 }); | 310 }); |
279 var url = "file:///some/path/to/myfile.pdf"; | 311 var url = "file:///some/path/to/myfile.pdf"; |
280 | 312 |
281 var navigateInCurrentTabCallback = new NavigateInCurrentTabCallback(); | 313 var navigateInCurrentTabCallback = new NavigateInCurrentTabCallback(); |
282 var navigateInNewTabCallback = new NavigateInNewTabCallback(); | 314 var navigateInNewTabCallback = new NavigateInNewTabCallback(); |
315 var navigateInNewWindowCallback = new NavigateInNewWindowCallback(); | |
283 var navigator = new Navigator(url, viewport, paramsParser, | 316 var navigator = new Navigator(url, viewport, paramsParser, |
284 navigateInCurrentTabCallback.callback, | 317 navigateInCurrentTabCallback.callback, |
285 navigateInNewTabCallback.callback); | 318 navigateInNewTabCallback.callback, |
319 navigateInNewWindowCallback.callback); | |
286 | 320 |
287 // Open an absolute link. | 321 // Open an absolute link. |
288 doNavigationUrlTestInCurrentTabAndNewTab( | 322 doNavigationUrlTestInCurrentTabAndNewTabAndNewWindow( |
289 navigator, | 323 navigator, |
290 '/foodotcom/bar.pdf', | 324 '/foodotcom/bar.pdf', |
291 'file:///foodotcom/bar.pdf', | 325 'file:///foodotcom/bar.pdf', |
292 mockCallback, | 326 mockCallback, |
293 navigateInCurrentTabCallback, | 327 navigateInCurrentTabCallback, |
294 navigateInNewTabCallback); | 328 navigateInNewTabCallback, |
329 navigateInNewWindowCallback); | |
295 | 330 |
296 chrome.test.succeed(); | 331 chrome.test.succeed(); |
297 } | 332 } |
298 ]; | 333 ]; |
299 | 334 |
300 var scriptingAPI = new PDFScriptingAPI(window, window); | 335 var scriptingAPI = new PDFScriptingAPI(window, window); |
301 scriptingAPI.setLoadCallback(function() { | 336 scriptingAPI.setLoadCallback(function() { |
302 chrome.test.runTests(tests); | 337 chrome.test.runTests(tests); |
303 }); | 338 }); |
OLD | NEW |