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

Unified Diff: chrome/test/data/extensions/platform_apps/web_view/newwindow/embedder.js

Issue 23514016: <webview>: Cleanup WebRequest event listeners when embedder destroyed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed WebRequest unit test Created 7 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 side-by-side diff with in-line comments
Download patch
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 7a5fb27a4870b77c69dc1a21ed3ee874b695edfc..5230de17555145f49e8e792f7c2fef013f81121a 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
@@ -6,6 +6,7 @@ var embedder = {};
embedder.test = {};
embedder.baseGuestURL = '';
embedder.guestURL = '';
+embedder.newWindowURL = '';
window.runTest = function(testName) {
if (!embedder.test.testList[testName]) {
@@ -25,6 +26,9 @@ embedder.setUp_ = function(config) {
embedder.guestURL = embedder.baseGuestURL +
'/extensions/platform_apps/web_view/newwindow' +
'/guest_opener.html';
+ embedder.newWindowURL = embedder.baseGuestURL +
+ '/extensions/platform_apps/web_view/newwindow' +
+ '/newwindow.html';
chrome.test.log('Guest url is: ' + embedder.guestURL);
};
@@ -354,6 +358,44 @@ function testNewWindowWebRequestRemoveElement() {
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.
+function testNewWindowWebRequestCloseWindow() {
+ var current = chrome.app.window.current();
+ var requestCount = 0;
+ var dataUrl = 'data:text/html,<body>foobar</body>';
+
+ var webview = new WebView();
+ webview.request.onBeforeRequest.addListener(function(e) {
+ console.log('url: ' + e.url);
+ ++requestCount;
+ if (requestCount == 1) {
+ // Close the existing window.
+ // TODO(fsamuel): This is currently broken and this test is disabled.
+ // Once we close the first window, the context in which the <webview> was
+ // created is gone and so the <webview> is no longer a custom element.
+ current.close();
+ // renavigate the webview.
+ webview.src = embedder.newWindowURL;
+ } else if (requestCount == 2) {
+ embedder.test.succeed();
+ }
+ }, {urls: ['<all_urls>']});
+ webview.addEventListener('loadcommit', function(e) {
+ console.log('loadcommit: ' + e.url);
+ });
+ webview.src = embedder.guestURL;
+
+ chrome.app.window.create('newwindow.html', {
+ width: 640,
+ height: 480
+ }, function(newwindow) {
+ newwindow.contentWindow.onload = function(evt) {
+ newwindow.contentWindow.document.body.appendChild(webview);
+ };
+ });
+};
embedder.test.testList = {
'testNewWindowNameTakesPrecedence': testNewWindowNameTakesPrecedence,
@@ -363,7 +405,8 @@ embedder.test.testList = {
'testNewWindowClose': testNewWindowClose,
'testNewWindowExecuteScript': testNewWindowExecuteScript,
'testNewWindowWebRequest': testNewWindowWebRequest,
- 'testNewWindowWebRequestRemoveElement': testNewWindowWebRequestRemoveElement
+ 'testNewWindowWebRequestRemoveElement': testNewWindowWebRequestRemoveElement,
+ 'testNewWindowWebRequestCloseWindow': testNewWindowWebRequestCloseWindow
};
onload = function() {
« no previous file with comments | « chrome/renderer/resources/extensions/web_view.js ('k') | chrome/test/data/extensions/platform_apps/web_view/shim/main.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698