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

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: Merged with ToT Created 8 years, 4 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 function getURLHttpXHRData() { 67 function getURLHttpXHRData() {
53 return getServerURL("files/extensions/api_test/webrequest/xhr/data.json", 68 return getServerURL("files/extensions/api_test/webrequest/xhr/data.json",
54 "b.com"); 69 "b.com");
55 } 70 }
71
56 function getURLHttpSimpleOnB() { 72 function getURLHttpSimpleOnB() {
57 return getServerURL("files/extensions/api_test/webrequest/simpleLoad/a.html", 73 return getServerURL("files/extensions/api_test/webrequest/simpleLoad/a.html",
58 "b.com"); 74 "b.com");
59 } 75 }
60 76
61 runTests([ 77 runTests([
62 78
63 function testCancelRequest() { 79 function testCancelRequest() {
64 ignoreUnexpected = true; 80 ignoreUnexpected = true;
65 expect( 81 expect(
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 [ {conditions: [new RequestMatcher({url: {pathContains: "simpleLoad"}})], 351 [ {conditions: [new RequestMatcher({url: {pathContains: "simpleLoad"}})],
336 actions: [new CancelRequest()]}, 352 actions: [new CancelRequest()]},
337 {conditions: [new RequestMatcher({url: {pathContains: "a.html"}})], 353 {conditions: [new RequestMatcher({url: {pathContains: "a.html"}})],
338 actions: [new IgnoreRules({lowerPriorityThan: 200})], 354 actions: [new IgnoreRules({lowerPriorityThan: 200})],
339 priority: 200} 355 priority: 200}
340 ], 356 ],
341 function() {navigateAndWait(getURLHttpSimple());} 357 function() {navigateAndWait(getURLHttpSimple());}
342 ); 358 );
343 }, 359 },
344 360
361 function testEditRequestCookies() {
362 ignoreUnexpected = true;
363 expect();
364 var cookie1 = {name: "requestCookie1", value: "foo"};
365 var cookie2 = {name: "requestCookie2", value: "foo"};
366 onRequest.addRules(
367 [ {conditions: [new RequestMatcher({})],
368 actions: [
369 // We exploit the fact that cookies are first added, then modified
370 // and finally removed.
371 new AddRequestCookie({cookie: cookie1}),
372 new AddRequestCookie({cookie: cookie2}),
373 new EditRequestCookie({filter: {name: "requestCookie1"},
374 modification: {value: "bar"}}),
375 new RemoveRequestCookie({filter: {name: "requestCookie2"}})
376 ]}
377 ],
378 function() {
379 navigateAndWait(getURLEchoCookie(), function() {
380 chrome.test.listenOnce(chrome.extension.onRequest, function(request) {
381 chrome.test.assertTrue(request.pass, "Invalid cookies. " +
382 JSON.stringify(request.cookies));
383 });
384 chrome.tabs.executeScript(tabId, {code:
385 "function hasCookie(name, value) {" +
386 " var entry = name + '=' + value;" +
387 " return document.body.innerText.indexOf(entry) >= 0;" +
388 "};" +
389 "var result = {};" +
390 "result.pass = hasCookie('requestCookie1', 'bar') && " +
391 " !hasCookie('requestCookie1', 'foo') && " +
392 " !hasCookie('requestCookie2', 'foo');" +
393 "result.cookies = document.body.innerText;" +
394 "chrome.extension.sendRequest(result);"});
395 });
396 }
397 );
398 },
399
400 function testEditResponseCookies() {
401 ignoreUnexpected = true;
402 expect();
403 onRequest.addRules(
404 [ {conditions: [new RequestMatcher({})],
405 actions: [
406 new AddResponseCookie({cookie: {name: "addedCookie", value: "Foo"}}),
407 new EditResponseCookie({filter: {name: "editedCookie"},
408 modification: {value: "bar"}}),
409 new RemoveResponseCookie({filter: {name: "deletedCookie"}})
410 ]}
411 ],
412 function() {
413 navigateAndWait(getURLSetCookie2(), function() {
414 chrome.test.listenOnce(chrome.extension.onRequest, function(request) {
415 chrome.test.assertTrue(request.pass, "Invalid cookies. " +
416 JSON.stringify(request.cookies));
417 });
418 chrome.tabs.executeScript(tabId, {code:
419 "var cookies = document.cookie.split('; ');" +
420 "var cookieMap = {};" +
421 "for (var i = 0; i < cookies.length; ++i) {" +
422 " var cookieParts = cookies[i].split('=');" +
423 " cookieMap[cookieParts[0]] = cookieParts[1];" +
424 "}" +
425 "var result = {};" +
426 "result.cookies = cookieMap;" +
427 "result.pass = (cookieMap.passedCookie === 'Foo') &&" +
428 " (cookieMap.addedCookie === 'Foo') &&" +
429 " (cookieMap.editedCookie === 'bar') &&" +
430 " !cookieMap.hasOwnProperty('deletedCookie');" +
431 "chrome.extension.sendRequest(result);"});
432 });
433 }
434 );
435 },
436
345 function testPermission() { 437 function testPermission() {
346 // Test that a redirect is ignored if the extension has no permission. 438 // Test that a redirect is ignored if the extension has no permission.
347 // we load a.html from a.com and issue an XHR to b.com, which is not 439 // we load a.html from a.com and issue an XHR to b.com, which is not
348 // contained in the extension's host permissions. Therefore, we cannot 440 // contained in the extension's host permissions. Therefore, we cannot
349 // redirect it and the request succeeds. 441 // redirect it and the request succeeds.
350 ignoreUnexpected = true; 442 ignoreUnexpected = true;
351 expect(); 443 expect();
352 onRequest.addRules( 444 onRequest.addRules(
353 [ {'conditions': [new RequestMatcher({'url': {'pathContains': ".json"}})], 445 [ {'conditions': [new RequestMatcher({'url': {'pathContains': ".json"}})],
354 'actions': [ 446 'actions': [
(...skipping 13 matching lines...) Expand all
368 chrome.test.fail("Redirect was not prevented. Status: " + 460 chrome.test.fail("Redirect was not prevented. Status: " +
369 this.status + ", responseText: " + this.responseText); 461 this.status + ", responseText: " + this.responseText);
370 } 462 }
371 } 463 }
372 req.open("GET", getURLHttpXHRData(), asynchronous); 464 req.open("GET", getURLHttpXHRData(), asynchronous);
373 req.send(null); 465 req.send(null);
374 }); 466 });
375 } 467 }
376 ); 468 );
377 }, 469 },
378
379 ]); 470 ]);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698