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 92709cfb1a15ad0e6f9f5d3ae24488591d4807bd..686d2425641d1c63d8013950109f5175263bb2fc 100644 |
--- a/chrome/test/data/extensions/api_test/webrequest/test_declarative.js |
+++ b/chrome/test/data/extensions/api_test/webrequest/test_declarative.js |
@@ -56,7 +56,7 @@ function getURLHttpWithHeaders() { |
"files/extensions/api_test/webrequest/declarative/headers.html"); |
} |
-function getURLThirdParty() { |
+function getURLOfHTMLWithThirdParty() { |
// Returns the URL of a HTML document with a third-party resource. |
return getServerURL( |
"files/extensions/api_test/webrequest/declarative/third-party.html"); |
@@ -86,29 +86,29 @@ function cancelThirdPartyExpected() { |
{ label: "onBeforeRequest", |
event: "onBeforeRequest", |
details: { |
- url: getURLThirdParty(), |
- frameUrl: getURLThirdParty() |
+ url: getURLOfHTMLWithThirdParty(), |
+ frameUrl: getURLOfHTMLWithThirdParty() |
} |
}, |
{ label: "onBeforeSendHeaders", |
event: "onBeforeSendHeaders", |
- details: {url: getURLThirdParty()} |
+ details: {url: getURLOfHTMLWithThirdParty()} |
}, |
{ label: "onSendHeaders", |
event: "onSendHeaders", |
- details: {url: getURLThirdParty()} |
+ details: {url: getURLOfHTMLWithThirdParty()} |
}, |
{ label: "onHeadersReceived", |
event: "onHeadersReceived", |
details: { |
- url: getURLThirdParty(), |
+ url: getURLOfHTMLWithThirdParty(), |
statusLine: "HTTP/1.0 200 OK" |
} |
}, |
{ label: "onResponseStarted", |
event: "onResponseStarted", |
details: { |
- url: getURLThirdParty(), |
+ url: getURLOfHTMLWithThirdParty(), |
fromCache: false, |
ip: "127.0.0.1", |
statusCode: 200, |
@@ -120,7 +120,7 @@ function cancelThirdPartyExpected() { |
details: { |
fromCache: false, |
ip: "127.0.0.1", |
- url: getURLThirdParty(), |
+ url: getURLOfHTMLWithThirdParty(), |
statusCode: 200, |
statusLine: "HTTP/1.0 200 OK" |
} |
@@ -130,7 +130,7 @@ function cancelThirdPartyExpected() { |
details: { |
type: "image", |
url: "http://non_existing_third_party.com/image.png", |
- frameUrl: getURLThirdParty() |
+ frameUrl: getURLOfHTMLWithThirdParty() |
} |
}, |
{ label: "img-onErrorOccurred", |
@@ -248,7 +248,7 @@ runTests([ |
onRequest.addRules( |
[ {'conditions': [new RequestMatcher({thirdPartyForCookies: true})], |
'actions': [new chrome.declarativeWebRequest.CancelRequest()]},], |
- function() {navigateAndWait(getURLThirdParty());} |
+ function() {navigateAndWait(getURLOfHTMLWithThirdParty());} |
); |
}, |
@@ -273,7 +273,136 @@ runTests([ |
'actions': [new chrome.declarativeWebRequest.CancelRequest()] |
}, |
], |
- function() {navigateAndWait(getURLThirdParty());} |
+ function() {navigateAndWait(getURLOfHTMLWithThirdParty());} |
+ ); |
+ }, |
+ |
+ // Tests "firstPartyForCookiesUrl" by using it to override a cancelling rule. |
+ function testFirstPartyForCookiesUrl() { |
+ // This test sets up three rules: |
+ // Rule 1 is a priority 1 cancel-all rule to fire onBeforeRequest. |
+ // Rule 2 is a priority 2 rule to ignore rule 1 for requests satisfying the |
+ // first-party filter. This rule is the core of this test. |
+ // Rule 3 is a priority 3 canceling rule for non-existing URLs. It will |
+ // fire later, onBeforeSendHeaders. This is necessary to avoid |
battre
2013/01/21 17:32:08
It will fire later, in stage onBeforeSendHeaders.
vabr (Chromium)
2013/01/21 18:39:29
Done.
|
+ // platform-dependent HTTP 404 responses. |
+ ignoreUnexpected = false; |
+ expect( |
+ [ |
+ // This block of events is a successfull fetch of the main frame doc. |
+ { label: "onBeforeRequest", |
+ event: "onBeforeRequest", |
+ details: { |
+ url: getURLOfHTMLWithThirdParty(), |
+ frameUrl: getURLOfHTMLWithThirdParty() |
+ } |
+ }, |
+ // Once we are here, rule 1 has been ignored. |
+ { label: "onBeforeSendHeaders", |
+ event: "onBeforeSendHeaders", |
+ details: {url: getURLOfHTMLWithThirdParty()} |
+ }, |
+ // Rule 3 does not apply, because the requested resource exists. |
+ { label: "onSendHeaders", |
+ event: "onSendHeaders", |
+ details: {url: getURLOfHTMLWithThirdParty()} |
+ }, |
+ { label: "onHeadersReceived", |
+ event: "onHeadersReceived", |
+ details: { |
+ url: getURLOfHTMLWithThirdParty(), |
+ statusLine: "HTTP/1.0 200 OK" |
+ } |
+ }, |
+ { label: "onResponseStarted", |
+ event: "onResponseStarted", |
+ details: { |
+ url: getURLOfHTMLWithThirdParty(), |
+ fromCache: false, |
+ ip: "127.0.0.1", |
+ statusCode: 200, |
+ statusLine: "HTTP/1.0 200 OK" |
+ } |
+ }, |
+ { label: "onCompleted", |
+ event: "onCompleted", |
+ details: { |
+ fromCache: false, |
+ ip: "127.0.0.1", |
+ url: getURLOfHTMLWithThirdParty(), |
+ statusCode: 200, |
+ statusLine: "HTTP/1.0 200 OK" |
+ } |
+ }, |
+ |
+ // This block of events is a fetch of a non-existing sub-resource. |
+ { label: "img-onBeforeRequest", |
+ event: "onBeforeRequest", |
+ details: { |
+ type: "image", |
+ url: "http://non_existing_third_party.com/image.png", |
+ frameUrl: getURLOfHTMLWithThirdParty() |
+ } |
+ }, |
+ // Once we are here, rule 1 has been ignored. |
+ { label: "img-onBeforeSendHeaders", |
+ event: "onBeforeSendHeaders", |
+ details: { |
+ type: "image", |
+ url: "http://non_existing_third_party.com/image.png", |
+ } |
+ }, |
+ // Rule 3 has fired, and saved us the trouble of getting a 404. |
+ { label: "img-onErrorOccurred", |
+ event: "onErrorOccurred", |
+ details: { |
+ url: "http://non_existing_third_party.com/image.png", |
+ type: "image", |
+ fromCache: false, |
+ error: "net::ERR_BLOCKED_BY_CLIENT" |
+ } |
+ }, |
+ ], |
+ [ ["onBeforeRequest", "onBeforeSendHeaders", "onSendHeaders", |
+ "onHeadersReceived", "onResponseStarted", "onCompleted"], |
+ ["img-onBeforeRequest", "img-onBeforeSendHeaders", |
+ "img-onErrorOccurred"] ]); |
+ onRequest.addRules( |
+ [ // This rule cancels everyhting, and sooner than the very last rule |
+ // would. The test is reduced to making sure this (1st) rule was ignored |
+ // as a consequence of the 2nd rule. |
+ {'priority': 1, |
+ 'conditions': [new RequestMatcher({ |
+ 'stages': ["onBeforeRequest"] |
+ })], |
+ 'actions': [new chrome.declarativeWebRequest.CancelRequest()] |
+ }, |
+ {'priority': 2, |
+ 'conditions': [ |
+ new RequestMatcher({ |
+ firstPartyForCookiesUrl: { |
+ hostEquals: testServer |
+ } |
+ }) |
+ ], |
+ 'actions': [ |
+ new chrome.declarativeWebRequest.IgnoreRules({ |
+ lowerPriorityThan: 2 }) |
+ ] |
+ }, |
+ // This rule cancels the request with a 3rd party URL just before it is |
+ // sent. This is necessary, because sending it would generate different |
+ // HTTP 4xx codes on different platforms, making it impossible to |
+ // present a single list of expected events. |
+ {'priority': 3, |
+ 'conditions': [new RequestMatcher({ |
+ 'url': { 'hostEquals': 'non_existing_third_party.com' }, |
+ 'stages': ["onBeforeSendHeaders"] |
+ })], |
+ 'actions': [new chrome.declarativeWebRequest.CancelRequest()] |
+ }, |
+ ], |
+ function() {navigateAndWait(getURLOfHTMLWithThirdParty());} |
); |
}, |