Chromium Code Reviews| 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 |