Chromium Code Reviews| 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 c8668f4164d64579a6cd7f6b6c001d8f2497a442..edb70e418e513283c5371671e8128576b7c2055e 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,6 +55,15 @@ 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'); |
| +} |
| + |
| runTests([ |
| function testCancelRequest() { |
| ignoreUnexpected = true; |
| @@ -332,4 +347,80 @@ 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) {" + |
|
Matt Perry
2012/07/09 23:26:13
indent is off
battre
2012/08/02 17:17:34
Done.
|
| + " 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('; ');" + |
|
Matt Perry
2012/07/09 23:26:13
indent is off
battre
2012/08/02 17:17:34
Done.
|
| + "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);"}); |
| + }); |
| + } |
| + ); |
| + } |
| ]); |