Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(400)

Side by Side Diff: chrome/test/data/extensions/api_test/webrequest/test_declarative.js

Issue 10447090: Support Cookie modifications in Declarative WebRequest API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Split some parts into separate CLs Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 var onRequest = chrome.declarativeWebRequest.onRequest; 5 var onRequest = chrome.declarativeWebRequest.onRequest;
6 var AddResponseHeader = 6 var AddResponseHeader =
7 chrome.declarativeWebRequest.AddResponseHeader; 7 chrome.declarativeWebRequest.AddResponseHeader;
8 var RequestMatcher = chrome.declarativeWebRequest.RequestMatcher; 8 var RequestMatcher = chrome.declarativeWebRequest.RequestMatcher;
9 var CancelRequest = chrome.declarativeWebRequest.CancelRequest; 9 var CancelRequest = chrome.declarativeWebRequest.CancelRequest;
10 var RedirectByRegEx = chrome.declarativeWebRequest.RedirectByRegEx; 10 var RedirectByRegEx = chrome.declarativeWebRequest.RedirectByRegEx;
11 var RedirectRequest = chrome.declarativeWebRequest.RedirectRequest; 11 var RedirectRequest = chrome.declarativeWebRequest.RedirectRequest;
12 var RedirectToTransparentImage = 12 var RedirectToTransparentImage =
13 chrome.declarativeWebRequest.RedirectToTransparentImage; 13 chrome.declarativeWebRequest.RedirectToTransparentImage;
14 var RedirectToEmptyDocument = 14 var RedirectToEmptyDocument =
15 chrome.declarativeWebRequest.RedirectToEmptyDocument; 15 chrome.declarativeWebRequest.RedirectToEmptyDocument;
16 var SetRequestHeader = 16 var SetRequestHeader =
17 chrome.declarativeWebRequest.SetRequestHeader; 17 chrome.declarativeWebRequest.SetRequestHeader;
18 var RemoveRequestHeader = 18 var RemoveRequestHeader =
19 chrome.declarativeWebRequest.RemoveRequestHeader; 19 chrome.declarativeWebRequest.RemoveRequestHeader;
20 var RemoveResponseHeader = 20 var RemoveResponseHeader =
21 chrome.declarativeWebRequest.RemoveResponseHeader; 21 chrome.declarativeWebRequest.RemoveResponseHeader;
22 var IgnoreRules = 22 var IgnoreRules =
23 chrome.declarativeWebRequest.IgnoreRules; 23 chrome.declarativeWebRequest.IgnoreRules;
24 var AddRequestCookie = chrome.declarativeWebRequest.AddRequestCookie;
25 var AddResponseCookie = chrome.declarativeWebRequest.AddResponseCookie;
26 var EditRequestCookie = chrome.declarativeWebRequest.EditRequestCookie;
27 var EditResponseCookie = chrome.declarativeWebRequest.EditResponseCookie;
28 var RemoveRequestCookie = chrome.declarativeWebRequest.RemoveRequestCookie;
29 var RemoveResponseCookie = chrome.declarativeWebRequest.RemoveResponseCookie;
24 30
25 // Constants as functions, not to be called until after runTests. 31 // Constants as functions, not to be called until after runTests.
26 function getURLEchoUserAgent() { 32 function getURLEchoUserAgent() {
27 return getServerURL('echoheader?User-Agent'); 33 return getServerURL('echoheader?User-Agent');
28 } 34 }
29 35
30 function getURLHttpSimple() { 36 function getURLHttpSimple() {
31 return getServerURL("files/extensions/api_test/webrequest/simpleLoad/a.html"); 37 return getServerURL("files/extensions/api_test/webrequest/simpleLoad/a.html");
32 } 38 }
33 39
34 function getURLHttpSimpleB() { 40 function getURLHttpSimpleB() {
35 return getServerURL("files/extensions/api_test/webrequest/simpleLoad/b.html"); 41 return getServerURL("files/extensions/api_test/webrequest/simpleLoad/b.html");
36 } 42 }
37 43
38 function getURLHttpComplex() { 44 function getURLHttpComplex() {
39 return getServerURL( 45 return getServerURL(
40 "files/extensions/api_test/webrequest/complexLoad/a.html"); 46 "files/extensions/api_test/webrequest/complexLoad/a.html");
41 } 47 }
42 48
43 function getURLHttpRedirectTest() { 49 function getURLHttpRedirectTest() {
44 return getServerURL( 50 return getServerURL(
45 "files/extensions/api_test/webrequest/declarative/a.html"); 51 "files/extensions/api_test/webrequest/declarative/a.html");
46 } 52 }
47 53
48 function getURLSetCookie() { 54 function getURLSetCookie() {
49 return getServerURL('set-cookie?Foo=Bar'); 55 return getServerURL('set-cookie?Foo=Bar');
50 } 56 }
51 57
58 function getURLSetCookie2() {
59 return getServerURL('set-cookie?passedCookie=Foo&editedCookie=Foo&' +
60 'deletedCookie=Foo');
61 }
62
63 function getURLEchoCookie() {
64 return getServerURL('echoheader?Cookie');
65 }
66
52 runTests([ 67 runTests([
53 function testCancelRequest() { 68 function testCancelRequest() {
54 ignoreUnexpected = true; 69 ignoreUnexpected = true;
55 expect( 70 expect(
56 [ 71 [
57 { label: "onErrorOccurred", 72 { label: "onErrorOccurred",
58 event: "onErrorOccurred", 73 event: "onErrorOccurred",
59 details: { 74 details: {
60 url: getURLHttpSimple(), 75 url: getURLHttpSimple(),
61 fromCache: false, 76 fromCache: false,
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 [ {conditions: [new RequestMatcher({url: {pathContains: "simpleLoad"}})], 340 [ {conditions: [new RequestMatcher({url: {pathContains: "simpleLoad"}})],
326 actions: [new CancelRequest()]}, 341 actions: [new CancelRequest()]},
327 {conditions: [new RequestMatcher({url: {pathContains: "a.html"}})], 342 {conditions: [new RequestMatcher({url: {pathContains: "a.html"}})],
328 actions: [new IgnoreRules({lowerPriorityThan: 200})], 343 actions: [new IgnoreRules({lowerPriorityThan: 200})],
329 priority: 200} 344 priority: 200}
330 ], 345 ],
331 function() {navigateAndWait(getURLHttpSimple());} 346 function() {navigateAndWait(getURLHttpSimple());}
332 ); 347 );
333 }, 348 },
334 349
350 function testEditRequestCookies() {
351 ignoreUnexpected = true;
352 expect();
353 var cookie1 = {name: "requestCookie1", value: "foo"};
354 var cookie2 = {name: "requestCookie2", value: "foo"};
355 onRequest.addRules(
356 [ {conditions: [new RequestMatcher({})],
357 actions: [
358 // We exploit the fact that cookies are first added, then modified
359 // and finally removed.
360 new AddRequestCookie({cookie: cookie1}),
361 new AddRequestCookie({cookie: cookie2}),
362 new EditRequestCookie({filter: {name: "requestCookie1"},
363 modification: {value: "bar"}}),
364 new RemoveRequestCookie({filter: {name: "requestCookie2"}})
365 ]}
366 ],
367 function() {
368 navigateAndWait(getURLEchoCookie(), function() {
369 chrome.test.listenOnce(chrome.extension.onRequest, function(request) {
370 chrome.test.assertTrue(request.pass, "Invalid cookies. " +
371 JSON.stringify(request.cookies));
372 });
373 chrome.tabs.executeScript(tabId, {code:
374 "function hasCookie(name, value) {" +
Matt Perry 2012/07/09 23:26:13 indent is off
battre 2012/08/02 17:17:34 Done.
375 " var entry = name + '=' + value;" +
376 " return document.body.innerText.indexOf(entry) >= 0;" +
377 "};" +
378 "var result = {};" +
379 "result.pass = hasCookie('requestCookie1', 'bar') && " +
380 " !hasCookie('requestCookie1', 'foo') && " +
381 " !hasCookie('requestCookie2', 'foo');" +
382 "result.cookies = document.body.innerText;" +
383 "chrome.extension.sendRequest(result);"
384 });
385 });
386 }
387 );
388 },
389
390 function testEditResponseCookies() {
391 ignoreUnexpected = true;
392 expect();
393 onRequest.addRules(
394 [ {conditions: [new RequestMatcher({})],
395 actions: [
396 new AddResponseCookie({cookie: {name: "addedCookie", value: "Foo"}}),
397 new EditResponseCookie({filter: {name: "editedCookie"},
398 modification: {value: "bar"}}),
399 new RemoveResponseCookie({filter: {name: "deletedCookie"}})
400 ]}
401 ],
402 function() {
403 navigateAndWait(getURLSetCookie2(), function() {
404 chrome.test.listenOnce(chrome.extension.onRequest, function(request) {
405 chrome.test.assertTrue(request.pass, "Invalid cookies. " +
406 JSON.stringify(request.cookies));
407 });
408 chrome.tabs.executeScript(tabId, {code:
409 "var cookies = document.cookie.split('; ');" +
Matt Perry 2012/07/09 23:26:13 indent is off
battre 2012/08/02 17:17:34 Done.
410 "var cookieMap = {};" +
411 "for (var i = 0; i < cookies.length; ++i) {" +
412 " var cookieParts = cookies[i].split('=');" +
413 " cookieMap[cookieParts[0]] = cookieParts[1];" +
414 "}" +
415 "var result = {};" +
416 "result.cookies = cookieMap;" +
417 "result.pass = (cookieMap.passedCookie === 'Foo') &&" +
418 " (cookieMap.addedCookie === 'Foo') &&" +
419 " (cookieMap.editedCookie === 'bar') &&" +
420 " !cookieMap.hasOwnProperty('deletedCookie');" +
421 "chrome.extension.sendRequest(result);"});
422 });
423 }
424 );
425 }
335 ]); 426 ]);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698