Chromium Code Reviews| Index: chrome/test/data/extensions/platform_apps/web_view/newwindow/embedder.js |
| diff --git a/chrome/test/data/extensions/platform_apps/web_view/newwindow/embedder.js b/chrome/test/data/extensions/platform_apps/web_view/newwindow/embedder.js |
| index 10c72d79d591334ce4686097810eb92c30f17b1b..934827619939b0d48724d1d6cdda2c4062a0a228 100644 |
| --- a/chrome/test/data/extensions/platform_apps/web_view/newwindow/embedder.js |
| +++ b/chrome/test/data/extensions/platform_apps/web_view/newwindow/embedder.js |
| @@ -328,6 +328,48 @@ function testNewWindowWebRequest() { |
| embedder.setUpNewWindowRequest_(webview, 'guest.html', '', testName); |
| } |
| +// This test verifies that declarative rules added prior to new window |
| +// attachment apply correctly. |
| +function testNewWindowDeclarativeWebRequest() { |
| + var testName = 'testNewWindowWebRequest'; |
| + var webview = embedder.setUpGuest_('foobar'); |
| + |
| + var onNewWindow = function(e) { |
| + chrome.test.log('Embedder notified on newwindow'); |
| + embedder.assertCorrectEvent_(e, ''); |
| + |
| + var newwebview = new WebView(); |
| + var rule = { |
| + conditions: [ |
| + new chrome.webViewRequest.RequestMatcher( |
| + { |
| + url: { urlContains: 'guest' } |
| + } |
| + ) |
| + ], |
| + actions: [ |
| + new chrome.webViewRequest.CancelRequest() |
| + ] |
| + }; |
| + newwebview.request.onRequest.addRules([rule]); |
|
Jeffrey Yasskin
2013/11/09 02:47:22
You might have a race condition in that new rules
Fady Samuel
2013/11/10 03:39:56
We add the rule prior to initial navigation. The
Jeffrey Yasskin
2013/11/11 05:37:36
Mhmm. I'm worried that something will happen to yi
|
| + newwebview.addEventListener('loadabort', function(e) { |
| + embedder.test.assertEq('ERR_BLOCKED_BY_CLIENT', e.reason); |
| + embedder.test.succeed(); |
| + }); |
| + document.querySelector('#webview-tag-container').appendChild(newwebview); |
| + e.preventDefault(); |
| + try { |
| + e.window.attach(newwebview); |
| + } catch (e) { |
| + embedder.test.fail(); |
| + } |
| + }; |
| + webview.addEventListener('newwindow', onNewWindow); |
| + |
| + // Load a new window with the given name. |
| + embedder.setUpNewWindowRequest_(webview, 'guest.html', '', testName); |
| +} |
| + |
| // This test verifies that a WebRequest event listener's lifetime is not |
| // tied to the context in which it was created but instead at least the |
| // lifetime of the embedder window to which it was attached. |
| @@ -421,6 +463,7 @@ embedder.test.testList = { |
| 'testNewWindowClose': testNewWindowClose, |
| 'testNewWindowExecuteScript': testNewWindowExecuteScript, |
| 'testNewWindowOpenInNewTab': testNewWindowOpenInNewTab, |
| + 'testNewWindowDeclarativeWebRequest': testNewWindowDeclarativeWebRequest, |
| 'testNewWindowWebRequest': testNewWindowWebRequest, |
| 'testNewWindowWebRequestCloseWindow': testNewWindowWebRequestCloseWindow, |
| 'testNewWindowWebRequestRemoveElement': testNewWindowWebRequestRemoveElement |