| Index: extensions/test/data/web_view/apitest/main.js
|
| diff --git a/extensions/test/data/web_view/apitest/main.js b/extensions/test/data/web_view/apitest/main.js
|
| index 29d692009481a2f1ee019ba66eaa6c06166ce59c..1287723c26f0e1a008f9ad2ffe116983b063f07c 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
|
| };
|
|
|