Bug 1377689 - add test for replacing request set cookie with an extension set cookie, r=mixedpuppy
MozReview-Commit-ID: 1UV6JO8GOTC
--- a/toolkit/components/extensions/test/mochitest/test_ext_webrequestblocking_set_cookie.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_webrequestblocking_set_cookie.html
@@ -101,16 +101,45 @@ add_task(async function test_modifying_c
};
};
browser.webRequest.onHeadersReceived.addListener(secondOnHeadersRecievedListiner, requestFilter, extraInfoSpec);
await browser.browsingData.removeCookies({});
const secondCookieSettingTabDetails = await openWindowAndTab("file_webrequestblocking_set_cookie.html");
await checkCookies("ext", "req", "third");
await browser.windows.remove(secondCookieSettingTabDetails.windowId);
+
+ // Fourth, test to make sure that extensions can remove cookies
+ // using onHeadersReceived too, by 1. making a request that
+ // sets a cookie (reqcookie=reqvalue), 2. having the extension remove
+ // that cookie by removing that header, and 3. adding a new cookie
+ // (extcookie=extvalue).
+ browser.webRequest.onHeadersReceived.removeListener(onHeadersReceived);
+ browser.webRequest.onHeadersReceived.removeListener(secondOnHeadersRecievedListiner);
+
+ const thirdOnHeadersRecievedListiner = details => {
+ // Remove the cookie set by the request (reqcookie=reqvalue).
+ const newHeaders = details.responseHeaders.filter(cookie => cookie.name !== "set-cookie");
+
+ // And then add a new cookie in its place (extcookie=extvalue).
+ newHeaders.push({
+ name: "Set-Cookie",
+ value: "extcookie=extvalue",
+ });
+
+ return {
+ responseHeaders: newHeaders,
+ };
+ };
+ browser.webRequest.onHeadersReceived.addListener(thirdOnHeadersRecievedListiner, requestFilter, extraInfoSpec);
+
+ await browser.browsingData.removeCookies({});
+ const thirdCookieSettingTabDetails = await openWindowAndTab("file_webrequestblocking_set_cookie.html");
+ await checkCookies("ext");
+ await browser.windows.remove(thirdCookieSettingTabDetails.windowId);
}
browser.test.notifyPass("cookie modifying extension");
}
extension = ExtensionTestUtils.loadExtension({
manifest: {
permissions: [