Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: chrome/test/data/pdf/navigator_test.js

Issue 2300243004: Links in PDF should open in a new window when shift + left clicked. (Closed)
Patch Set: Links in PDF should open in a new window when shift + left clicked. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 });
OLDNEW
« chrome/browser/resources/pdf/navigator.js ('K') | « chrome/browser/resources/pdf/pdf.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698