OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 var embedder = {}; | 5 var embedder = {}; |
6 embedder.test = {}; | 6 embedder.test = {}; |
7 embedder.baseGuestURL = ''; | 7 embedder.baseGuestURL = ''; |
8 embedder.guestURL = ''; | 8 embedder.guestURL = ''; |
9 embedder.guestWithLinkURL = ''; | 9 embedder.guestWithLinkURL = ''; |
10 embedder.newWindowURL = ''; | 10 embedder.newWindowURL = ''; |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 } catch (e) { | 251 } catch (e) { |
252 embedder.test.fail(); | 252 embedder.test.fail(); |
253 } | 253 } |
254 }; | 254 }; |
255 webview.addEventListener('newwindow', onNewWindow); | 255 webview.addEventListener('newwindow', onNewWindow); |
256 | 256 |
257 // Load a new window with the given name. | 257 // Load a new window with the given name. |
258 embedder.setUpNewWindowRequest_(webview, 'guest.html', '', testName); | 258 embedder.setUpNewWindowRequest_(webview, 'guest.html', '', testName); |
259 } | 259 } |
260 | 260 |
| 261 // Checks that calling event.window.attach() with a <webview> that is not |
| 262 // in the DOM works properly. |
| 263 // This tests the deferred attachment code path in web_view.js. |
| 264 function testNewWindowDeferredAttachment() { |
| 265 var testName = 'testNewWindowDeferredAttachment'; |
| 266 var webview = embedder.setUpGuest_('foobar'); |
| 267 |
| 268 var onNewWindow = function(e) { |
| 269 chrome.test.log('Embedder notified on newwindow'); |
| 270 embedder.assertCorrectEvent_(e, ''); |
| 271 |
| 272 var newwebview = document.createElement('webview'); |
| 273 |
| 274 newwebview.addEventListener('loadstop', function() { |
| 275 chrome.test.log('Guest in newwindow got loadstop.'); |
| 276 embedder.test.succeed(); |
| 277 }); |
| 278 |
| 279 try { |
| 280 e.window.attach(newwebview); |
| 281 } catch (e) { |
| 282 embedder.test.fail(); |
| 283 } |
| 284 |
| 285 // Append the <webview> in DOM later. |
| 286 window.setTimeout(function() { |
| 287 document.querySelector('#webview-tag-container').appendChild(newwebview); |
| 288 }, 0); |
| 289 }; |
| 290 webview.addEventListener('newwindow', onNewWindow); |
| 291 |
| 292 // Load a new window with the given name. |
| 293 embedder.setUpNewWindowRequest_(webview, 'guest.html', '', testName); |
| 294 }; |
| 295 |
261 function testNewWindowExecuteScript() { | 296 function testNewWindowExecuteScript() { |
262 var testName = 'testNewWindowExecuteScript'; | 297 var testName = 'testNewWindowExecuteScript'; |
263 var webview = embedder.setUpGuest_('foobar'); | 298 var webview = embedder.setUpGuest_('foobar'); |
264 | 299 |
265 var onNewWindow = function(e) { | 300 var onNewWindow = function(e) { |
266 chrome.test.log('Embedder notified on newwindow'); | 301 chrome.test.log('Embedder notified on newwindow'); |
267 embedder.assertCorrectEvent_(e, ''); | 302 embedder.assertCorrectEvent_(e, ''); |
268 | 303 |
269 var newwebview = document.createElement('webview'); | 304 var newwebview = document.createElement('webview'); |
270 document.querySelector('#webview-tag-container').appendChild(newwebview); | 305 document.querySelector('#webview-tag-container').appendChild(newwebview); |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 // Load a new window with the given name. | 489 // Load a new window with the given name. |
455 embedder.setUpNewWindowRequest_(webview, 'guest.html', '', testName); | 490 embedder.setUpNewWindowRequest_(webview, 'guest.html', '', testName); |
456 } | 491 } |
457 | 492 |
458 embedder.test.testList = { | 493 embedder.test.testList = { |
459 'testNewWindowNameTakesPrecedence': testNewWindowNameTakesPrecedence, | 494 'testNewWindowNameTakesPrecedence': testNewWindowNameTakesPrecedence, |
460 'testWebViewNameTakesPrecedence': testWebViewNameTakesPrecedence, | 495 'testWebViewNameTakesPrecedence': testWebViewNameTakesPrecedence, |
461 'testNoName': testNoName, | 496 'testNoName': testNoName, |
462 'testNewWindowRedirect': testNewWindowRedirect, | 497 'testNewWindowRedirect': testNewWindowRedirect, |
463 'testNewWindowClose': testNewWindowClose, | 498 'testNewWindowClose': testNewWindowClose, |
| 499 'testNewWindowDeferredAttachment': testNewWindowDeferredAttachment, |
464 'testNewWindowExecuteScript': testNewWindowExecuteScript, | 500 'testNewWindowExecuteScript': testNewWindowExecuteScript, |
465 'testNewWindowOpenInNewTab': testNewWindowOpenInNewTab, | 501 'testNewWindowOpenInNewTab': testNewWindowOpenInNewTab, |
466 'testNewWindowDeclarativeWebRequest': testNewWindowDeclarativeWebRequest, | 502 'testNewWindowDeclarativeWebRequest': testNewWindowDeclarativeWebRequest, |
467 'testNewWindowWebRequest': testNewWindowWebRequest, | 503 'testNewWindowWebRequest': testNewWindowWebRequest, |
468 'testNewWindowWebRequestCloseWindow': testNewWindowWebRequestCloseWindow, | 504 'testNewWindowWebRequestCloseWindow': testNewWindowWebRequestCloseWindow, |
469 'testNewWindowWebRequestRemoveElement': testNewWindowWebRequestRemoveElement | 505 'testNewWindowWebRequestRemoveElement': testNewWindowWebRequestRemoveElement |
470 }; | 506 }; |
471 | 507 |
472 onload = function() { | 508 onload = function() { |
473 chrome.test.getConfig(function(config) { | 509 chrome.test.getConfig(function(config) { |
474 embedder.setUp_(config); | 510 embedder.setUp_(config); |
475 chrome.test.sendMessage('Launched'); | 511 chrome.test.sendMessage('Launched'); |
476 }); | 512 }); |
477 }; | 513 }; |
OLD | NEW |