| Index: chrome/test/data/extensions/api_test/webrequest/test_declarative.js
|
| diff --git a/chrome/test/data/extensions/api_test/webrequest/test_declarative.js b/chrome/test/data/extensions/api_test/webrequest/test_declarative.js
|
| index dd1474bf552f934d80b3140ba039bd6fff0ef978..f40b7354eb1eb59badbb7c91cfad075d9a558b0a 100644
|
| --- a/chrome/test/data/extensions/api_test/webrequest/test_declarative.js
|
| +++ b/chrome/test/data/extensions/api_test/webrequest/test_declarative.js
|
| @@ -21,6 +21,12 @@ var RemoveResponseHeader =
|
| chrome.declarativeWebRequest.RemoveResponseHeader;
|
| var IgnoreRules =
|
| chrome.declarativeWebRequest.IgnoreRules;
|
| +var AddRequestCookie = chrome.declarativeWebRequest.AddRequestCookie;
|
| +var AddResponseCookie = chrome.declarativeWebRequest.AddResponseCookie;
|
| +var EditRequestCookie = chrome.declarativeWebRequest.EditRequestCookie;
|
| +var EditResponseCookie = chrome.declarativeWebRequest.EditResponseCookie;
|
| +var RemoveRequestCookie = chrome.declarativeWebRequest.RemoveRequestCookie;
|
| +var RemoveResponseCookie = chrome.declarativeWebRequest.RemoveResponseCookie;
|
|
|
| // Constants as functions, not to be called until after runTests.
|
| function getURLEchoUserAgent() {
|
| @@ -49,10 +55,20 @@ function getURLSetCookie() {
|
| return getServerURL('set-cookie?Foo=Bar');
|
| }
|
|
|
| +function getURLSetCookie2() {
|
| + return getServerURL('set-cookie?passedCookie=Foo&editedCookie=Foo&' +
|
| + 'deletedCookie=Foo');
|
| +}
|
| +
|
| +function getURLEchoCookie() {
|
| + return getServerURL('echoheader?Cookie');
|
| +}
|
| +
|
| function getURLHttpXHRData() {
|
| return getServerURL("files/extensions/api_test/webrequest/xhr/data.json",
|
| "b.com");
|
| }
|
| +
|
| function getURLHttpSimpleOnB() {
|
| return getServerURL("files/extensions/api_test/webrequest/simpleLoad/a.html",
|
| "b.com");
|
| @@ -342,6 +358,82 @@ runTests([
|
| );
|
| },
|
|
|
| + function testEditRequestCookies() {
|
| + ignoreUnexpected = true;
|
| + expect();
|
| + var cookie1 = {name: "requestCookie1", value: "foo"};
|
| + var cookie2 = {name: "requestCookie2", value: "foo"};
|
| + onRequest.addRules(
|
| + [ {conditions: [new RequestMatcher({})],
|
| + actions: [
|
| + // We exploit the fact that cookies are first added, then modified
|
| + // and finally removed.
|
| + new AddRequestCookie({cookie: cookie1}),
|
| + new AddRequestCookie({cookie: cookie2}),
|
| + new EditRequestCookie({filter: {name: "requestCookie1"},
|
| + modification: {value: "bar"}}),
|
| + new RemoveRequestCookie({filter: {name: "requestCookie2"}})
|
| + ]}
|
| + ],
|
| + function() {
|
| + navigateAndWait(getURLEchoCookie(), function() {
|
| + chrome.test.listenOnce(chrome.extension.onRequest, function(request) {
|
| + chrome.test.assertTrue(request.pass, "Invalid cookies. " +
|
| + JSON.stringify(request.cookies));
|
| + });
|
| + chrome.tabs.executeScript(tabId, {code:
|
| + "function hasCookie(name, value) {" +
|
| + " var entry = name + '=' + value;" +
|
| + " return document.body.innerText.indexOf(entry) >= 0;" +
|
| + "};" +
|
| + "var result = {};" +
|
| + "result.pass = hasCookie('requestCookie1', 'bar') && " +
|
| + " !hasCookie('requestCookie1', 'foo') && " +
|
| + " !hasCookie('requestCookie2', 'foo');" +
|
| + "result.cookies = document.body.innerText;" +
|
| + "chrome.extension.sendRequest(result);"});
|
| + });
|
| + }
|
| + );
|
| + },
|
| +
|
| + function testEditResponseCookies() {
|
| + ignoreUnexpected = true;
|
| + expect();
|
| + onRequest.addRules(
|
| + [ {conditions: [new RequestMatcher({})],
|
| + actions: [
|
| + new AddResponseCookie({cookie: {name: "addedCookie", value: "Foo"}}),
|
| + new EditResponseCookie({filter: {name: "editedCookie"},
|
| + modification: {value: "bar"}}),
|
| + new RemoveResponseCookie({filter: {name: "deletedCookie"}})
|
| + ]}
|
| + ],
|
| + function() {
|
| + navigateAndWait(getURLSetCookie2(), function() {
|
| + chrome.test.listenOnce(chrome.extension.onRequest, function(request) {
|
| + chrome.test.assertTrue(request.pass, "Invalid cookies. " +
|
| + JSON.stringify(request.cookies));
|
| + });
|
| + chrome.tabs.executeScript(tabId, {code:
|
| + "var cookies = document.cookie.split('; ');" +
|
| + "var cookieMap = {};" +
|
| + "for (var i = 0; i < cookies.length; ++i) {" +
|
| + " var cookieParts = cookies[i].split('=');" +
|
| + " cookieMap[cookieParts[0]] = cookieParts[1];" +
|
| + "}" +
|
| + "var result = {};" +
|
| + "result.cookies = cookieMap;" +
|
| + "result.pass = (cookieMap.passedCookie === 'Foo') &&" +
|
| + " (cookieMap.addedCookie === 'Foo') &&" +
|
| + " (cookieMap.editedCookie === 'bar') &&" +
|
| + " !cookieMap.hasOwnProperty('deletedCookie');" +
|
| + "chrome.extension.sendRequest(result);"});
|
| + });
|
| + }
|
| + );
|
| + },
|
| +
|
| function testPermission() {
|
| // Test that a redirect is ignored if the extension has no permission.
|
| // we load a.html from a.com and issue an XHR to b.com, which is not
|
| @@ -375,5 +467,4 @@ runTests([
|
| }
|
| );
|
| },
|
| -
|
| ]);
|
|
|