OLD | NEW |
---|---|
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 Loading... | |
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 ]); |
OLD | NEW |