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 0b338108567ee50a744edd5aed43bd56fe5c7255..ffecb13159e13a7c309ef1e31c3d20db3f1d8311 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 |
@@ -24,6 +24,7 @@ embedder.setUp_ = function(config) { |
'/extensions/platform_apps/web_view/shim/guest.html'; |
embedder.noReferrerGuestURL = embedder.baseGuestURL + |
'/extensions/platform_apps/web_view/shim/guest_noreferrer.html'; |
+ embedder.detectUserAgentURL = embedder.baseGuestURL + '/detect-user-agent'; |
embedder.redirectGuestURL = embedder.baseGuestURL + '/server-redirect'; |
embedder.redirectGuestURLDest = embedder.baseGuestURL + |
'/extensions/platform_apps/web_view/shim/guest_redirect.html'; |
@@ -1083,6 +1084,52 @@ function testWebRequestAPI() { |
document.body.appendChild(webview); |
} |
+// This test verifies that the WebRequest API onBeforeSendHeaders event fires on |
+// webview and supports headers. This tests verifies that we can modify HTTP |
+// headers via the WebRequest API and those modified headers will be sent to the |
+// HTTP server. |
+function testWebRequestAPIWithHeaders() { |
+ var webview = new WebView(); |
+ var requestFilter = { |
+ urls: ['<all_urls>'] |
+ }; |
+ var extraInfoSpec = ['requestHeaders', 'blocking']; |
+ webview.request.onBeforeSendHeaders.addListener(function(details) { |
+ var headers = details.requestHeaders; |
+ for( var i = 0, l = headers.length; i < l; ++i ) { |
+ if (headers[i].name == 'User-Agent') { |
+ headers[i].value = 'foobar'; |
+ break; |
+ } |
+ } |
+ var blockingResponse = {}; |
+ blockingResponse.requestHeaders = headers; |
+ return blockingResponse; |
+ }, requestFilter, extraInfoSpec); |
+ |
+ var loadstartCalled = false; |
+ webview.addEventListener('loadstart', function(e) { |
+ embedder.test.assertTrue(e.isTopLevel); |
+ embedder.test.assertEq(embedder.detectUserAgentURL, e.url); |
+ loadstartCalled = true; |
+ }); |
+ |
+ webview.addEventListener('loadredirect', function(e) { |
+ embedder.test.assertTrue(e.isTopLevel); |
+ embedder.test.assertEq(embedder.detectUserAgentURL, |
+ e.oldUrl.replace('127.0.0.1', 'localhost')); |
+ embedder.test.assertEq(embedder.redirectGuestURLDest, |
+ e.newUrl.replace('127.0.0.1', 'localhost')); |
+ if (loadstartCalled) { |
+ embedder.test.succeed(); |
+ } else { |
+ embedder.test.fail(); |
+ } |
+ }); |
+ webview.src = embedder.detectUserAgentURL; |
+ document.body.appendChild(webview); |
+} |
+ |
// This test verifies that the basic use cases of the declarative WebRequest API |
// work as expected. This test demonstrates that rules can be added prior to |
// navigation and attachment. |
@@ -1976,6 +2023,7 @@ embedder.test.testList = { |
'testDeclarativeWebRequestAPISendMessage': |
testDeclarativeWebRequestAPISendMessage, |
'testWebRequestAPI': testWebRequestAPI, |
+ 'testWebRequestAPIWithHeaders': testWebRequestAPIWithHeaders, |
'testWebRequestAPIGoogleProperty': testWebRequestAPIGoogleProperty, |
'testWebRequestListenerSurvivesReparenting': |
testWebRequestListenerSurvivesReparenting, |