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 ce9e8507a3e6df30a101a98a80e5c936cde68388..5776f72a18cfd464eb87532695a1ec503efd823d 100644 |
--- a/chrome/test/data/extensions/api_test/webrequest/test_declarative.js |
+++ b/chrome/test/data/extensions/api_test/webrequest/test_declarative.js |
@@ -6,6 +6,10 @@ var onRequest = chrome.declarativeWebRequest.onRequest; |
var RequestMatcher = chrome.declarativeWebRequest.RequestMatcher; |
var CancelRequest = chrome.declarativeWebRequest.CancelRequest; |
var RedirectRequest = chrome.declarativeWebRequest.RedirectRequest; |
+var RedirectToTransparentImage = |
+ chrome.declarativeWebRequest.RedirectToTransparentImage; |
+var RedirectToEmptyDocument = |
+ chrome.declarativeWebRequest.RedirectToEmptyDocument; |
function getURLHttpSimple() { |
return getServerURL("files/extensions/api_test/webrequest/simpleLoad/a.html"); |
@@ -16,6 +20,11 @@ function getURLHttpComplex() { |
"files/extensions/api_test/webrequest/complexLoad/a.html"); |
} |
+function getURLHttpRedirectTest() { |
+ return getServerURL( |
+ "files/extensions/api_test/webrequest/declarative/a.html"); |
+} |
+ |
runTests([ |
function testCancelRequest() { |
ignoreUnexpected = true; |
@@ -98,4 +107,63 @@ runTests([ |
function() {navigateAndWait(getURLHttpComplex());} |
); |
}, |
+ |
+ function testRedirectRequest2() { |
+ ignoreUnexpected = true; |
+ expect( |
+ [ |
+ { label: "onCompleted", |
+ event: "onCompleted", |
+ details: { |
+ ip: "127.0.0.1", |
+ url: getURLHttpRedirectTest(), |
+ fromCache: false, |
+ statusCode: 200, |
+ statusLine: "HTTP/1.0 200 OK", |
+ } |
+ }, |
+ // We cannot wait for onCompleted signals because these are not sent |
+ // for data:// URLs. |
+ { label: "onBeforeRedirect-1", |
+ event: "onBeforeRedirect", |
+ details: { |
+ url: getServerURL( |
+ "files/extensions/api_test/webrequest/declarative/image.png"), |
+ redirectUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEA" + |
+ "AAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJ" + |
+ "ggg==", |
+ fromCache: false, |
+ statusCode: -1, |
+ statusLine: "", |
+ type: "image", |
+ } |
+ }, |
+ { label: "onBeforeRedirect-2", |
+ event: "onBeforeRedirect", |
+ details: { |
+ frameId: 1, |
+ parentFrameId: 0, |
+ url: getServerURL( |
+ "files/extensions/api_test/webrequest/declarative/frame.html"), |
+ redirectUrl: "data:text/html,", |
+ fromCache: false, |
+ statusCode: -1, |
+ statusLine: "", |
+ type: "sub_frame", |
+ } |
+ }, |
+ ], |
+ [ ["onCompleted"], ["onBeforeRedirect-1"], ["onBeforeRedirect-2"] ]); |
+ |
+ onRequest.addRules( |
+ [ {'conditions': [ |
+ new RequestMatcher({'url': {'pathSuffix': "image.png"}})], |
+ 'actions': [new RedirectToTransparentImage()]}, |
+ {'conditions': [ |
+ new RequestMatcher({'url': {'pathSuffix': "frame.html"}})], |
+ 'actions': [new RedirectToEmptyDocument()]}, |
+ ], |
+ function() {navigateAndWait(getURLHttpRedirectTest());} |
+ ); |
+ }, |
]); |