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

Unified Diff: chrome/test/data/extensions/platform_apps/web_view/shim/main.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/shim/main.js
diff --git a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js
index 4156ce82f2d45a367ece77faa6ab2454fc8df81e..c9e772450296b4d7d75dfe3751cf4b60916fa470 100644
--- a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js
+++ b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js
@@ -766,33 +766,48 @@ function testContentLoadEvent() {
// This test verifies that the WebRequest API onBeforeRequest event fires on
// webview.
function testWebRequestAPI() {
- var webview = document.createElement('webview');
- webview.setAttribute('src', 'data:text/html,trigger navigation');
- var firstLoad = function() {
- webview.removeEventListener('loadstop', firstLoad);
- webview.onBeforeRequest.addListener(function(e) {
- embedder.test.succeed();
- }, { urls: ['<all_urls>']}, ['blocking']) ;
- webview.src = embedder.windowOpenGuestURL;
- };
- webview.addEventListener('loadstop', firstLoad);
+ var webview = new WebView();
+ webview.request.onBeforeRequest.addListener(function(e) {
+ embedder.test.succeed();
+ }, { urls: ['<all_urls>']}) ;
+ webview.src = embedder.windowOpenGuestURL;
document.body.appendChild(webview);
}
// This test verifies that the WebRequest API onBeforeRequest event fires on
// clients*.google.com URLs.
function testWebRequestAPIGoogleProperty() {
- var webview = document.createElement('webview');
- webview.setAttribute('src', 'data:text/html,trigger navigation');
- var firstLoad = function() {
- webview.removeEventListener('loadstop', firstLoad);
- webview.onBeforeRequest.addListener(function(e) {
+ var webview = new WebView();
+ webview.request.onBeforeRequest.addListener(function(e) {
+ embedder.test.succeed();
+ return {cancel: true};
+ }, { urls: ['<all_urls>']}, ['blocking']) ;
+ webview.src = 'http://clients6.google.com';
+ document.body.appendChild(webview);
+}
+
+// This test verifies that the WebRequest event listener for onBeforeRequest
+// survives reparenting of the <webview>.
+function testWebRequestListenerSurvivesReparenting() {
+ var webview = new WebView();
+ var count = 0;
+ webview.request.onBeforeRequest.addListener(function(e) {
+ if (++count == 2) {
embedder.test.succeed();
- return {cancel: true};
- }, { urls: ['<all_urls>']}, ['blocking']) ;
- webview.src = 'http://clients6.google.com';
+ }
+ }, { urls: ['<all_urls>']});
+ var onLoadStop = function(e) {
+ webview.removeEventListener('loadstop', onLoadStop);
+ webview.parentNode.removeChild(webview);
+ var container = document.getElementById('object-container');
+ if (!container) {
+ embedder.test.fail('Container for object not found.');
+ return;
+ }
+ container.appendChild(webview);
};
- webview.addEventListener('loadstop', firstLoad);
+ webview.addEventListener('loadstop', onLoadStop);
+ webview.src = embedder.emptyGuestURL;
document.body.appendChild(webview);
}
@@ -1022,6 +1037,8 @@ embedder.test.testList = {
'testContentLoadEvent': testContentLoadEvent,
'testWebRequestAPI': testWebRequestAPI,
'testWebRequestAPIGoogleProperty': testWebRequestAPIGoogleProperty,
+ 'testWebRequestListenerSurvivesReparenting':
+ testWebRequestListenerSurvivesReparenting,
'testGetProcessId': testGetProcessId,
'testLoadStartLoadRedirect': testLoadStartLoadRedirect,
'testLoadAbortEmptyResponse': testLoadAbortEmptyResponse,

Powered by Google App Engine
This is Rietveld 408576698