summaryrefslogtreecommitdiffstats
path: root/extensions/test
diff options
context:
space:
mode:
authorfsamuel <fsamuel@chromium.org>2014-10-09 19:40:58 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-10 02:41:44 +0000
commitb4110230c811dd23cc336c9d679c6c3d13a64440 (patch)
treeb6bee44f0d2e3c096e4ed934c063c6ce13077bab /extensions/test
parente20e3b27eda108409b5b1005af1dd988264efec7 (diff)
downloadchromium_src-b4110230c811dd23cc336c9d679c6c3d13a64440.zip
chromium_src-b4110230c811dd23cc336c9d679c6c3d13a64440.tar.gz
chromium_src-b4110230c811dd23cc336c9d679c6c3d13a64440.tar.bz2
<webview>: Add additional WebRequest API test coverage.
This CL adds a test which verifies that we read and change HTTP headers. BUG=352293 TBR=rockot@chromium.org Review URL: https://codereview.chromium.org/640603005 Cr-Commit-Position: refs/heads/master@{#299047}
Diffstat (limited to 'extensions/test')
-rw-r--r--extensions/test/data/web_view/apitest/main.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/extensions/test/data/web_view/apitest/main.js b/extensions/test/data/web_view/apitest/main.js
index 29d6920..1287723 100644
--- a/extensions/test/data/web_view/apitest/main.js
+++ b/extensions/test/data/web_view/apitest/main.js
@@ -14,6 +14,7 @@ embedder.setUp_ = function(config) {
embedder.emptyGuestURL = embedder.baseGuestURL + '/empty_guest.html';
embedder.noReferrerGuestURL =
embedder.baseGuestURL + '/guest_noreferrer.html';
+ embedder.detectUserAgentURL = embedder.baseGuestURL + '/detect-user-agent';
embedder.redirectGuestURL = embedder.baseGuestURL + '/server-redirect';
embedder.redirectGuestURLDest =
embedder.baseGuestURL + '/guest_redirect.html';
@@ -1549,6 +1550,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);
+}
+
function testWebRequestAPIExistence() {
var apiPropertiesToCheck = [
// Declarative WebRequest API.
@@ -1672,6 +1719,7 @@ embedder.test.testList = {
'testResizeWebviewResizesContent': testResizeWebviewResizesContent,
'testTerminateAfterExit': testTerminateAfterExit,
'testWebRequestAPI': testWebRequestAPI,
+ 'testWebRequestAPIWithHeaders': testWebRequestAPIWithHeaders,
'testWebRequestAPIExistence': testWebRequestAPIExistence,
'testWebRequestAPIGoogleProperty': testWebRequestAPIGoogleProperty
};