| Index: chrome/test/data/extensions/api_test/webrequest/test_api.js
|
| ===================================================================
|
| --- chrome/test/data/extensions/api_test/webrequest/test_api.js (revision 0)
|
| +++ chrome/test/data/extensions/api_test/webrequest/test_api.js (revision 0)
|
| @@ -0,0 +1,118 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +chrome.test.runTests([
|
| + function addListeners() {
|
| + chrome.webRequest.onBeforeRequest.addListener(
|
| + function(details) {});
|
| + chrome.webRequest.onBeforeSendHeaders.addListener(
|
| + function(details) {});
|
| + chrome.webRequest.onSendHeaders.addListener(
|
| + function(details) {});
|
| + chrome.webRequest.onHeadersReceived.addListener(
|
| + function(details) {});
|
| + chrome.webRequest.onBeforeRedirect.addListener(
|
| + function(details) {});
|
| + chrome.webRequest.onResponseStarted.addListener(
|
| + function(details) {});
|
| + chrome.webRequest.onCompleted.addListener(
|
| + function(details) {});
|
| + chrome.webRequest.onErrorOccurred.addListener(
|
| + function(details) {});
|
| + chrome.webRequest.onAuthRequired.addListener(
|
| + function(details) {});
|
| + chrome.test.succeed();
|
| + },
|
| +
|
| + // Tests that we can remove a listener and it goes away.
|
| + // http://crbug.com/96755
|
| + function removeListeners() {
|
| + function newCallback(value) {
|
| + return function(details) { console.log(value); };
|
| + }
|
| + var cb1 = newCallback(1);
|
| + var cb2 = newCallback(2);
|
| + var event = chrome.webRequest.onBeforeRequest;
|
| + event.addListener(cb1);
|
| + event.addListener(cb2);
|
| + chrome.test.assertTrue(event.hasListener(cb1));
|
| + chrome.test.assertTrue(event.hasListener(cb2));
|
| + event.removeListener(cb1);
|
| + chrome.test.assertFalse(event.hasListener(cb1));
|
| + chrome.test.assertTrue(event.hasListener(cb2));
|
| + event.removeListener(cb2);
|
| + chrome.test.assertFalse(event.hasListener(cb1));
|
| + chrome.test.assertFalse(event.hasListener(cb2));
|
| + chrome.test.succeed();
|
| + },
|
| +
|
| + // Tests that the extra parameters to addListener are checked for invalid
|
| + // values.
|
| + function specialEvents() {
|
| + var goodFilter = {urls: ["http://*.google.com/*"]};
|
| + var goodExtraInfo = ["blocking"];
|
| + chrome.webRequest.onBeforeRequest.addListener(
|
| + function(details) {},
|
| + goodFilter, goodExtraInfo);
|
| +
|
| + // Try a bad RequestFilter.
|
| + try {
|
| + chrome.webRequest.onBeforeRequest.addListener(
|
| + function(details) {},
|
| + {badFilter: 42}, goodExtraInfo);
|
| + chrome.test.fail();
|
| + } catch (e) {
|
| + chrome.test.assertTrue(e.message.search("Invalid value") >= 0);
|
| + }
|
| +
|
| + // Try a bad ExtraInfoSpec.
|
| + try {
|
| + chrome.webRequest.onBeforeRequest.addListener(
|
| + function(details) {},
|
| + goodFilter, ["badExtraInfo"]);
|
| + chrome.test.fail();
|
| + } catch (e) {
|
| + chrome.test.assertTrue(e.message.search("Invalid value") >= 0);
|
| + }
|
| +
|
| + // This extraInfoSpec should only work for onBeforeSendHeaders.
|
| + var headersExtraInfo = ["requestHeaders"];
|
| + chrome.webRequest.onBeforeSendHeaders.addListener(
|
| + function(details) {},
|
| + goodFilter, headersExtraInfo);
|
| + try {
|
| + chrome.webRequest.onBeforeRequest.addListener(
|
| + function(details) {},
|
| + goodFilter, headersExtraInfo);
|
| + chrome.test.fail();
|
| + } catch (e) {
|
| + chrome.test.assertTrue(e.message.search("Invalid value") >= 0);
|
| + }
|
| +
|
| + // ExtraInfoSpec with "responseHeaders" should work for onCompleted.
|
| + headersExtraInfo = ["responseHeaders"];
|
| + chrome.webRequest.onCompleted.addListener(
|
| + function(details) {},
|
| + goodFilter, headersExtraInfo);
|
| + try {
|
| + chrome.webRequest.onBeforeRequest.addListener(
|
| + function(details) {},
|
| + goodFilter, headersExtraInfo);
|
| + chrome.test.fail();
|
| + } catch (e) {
|
| + chrome.test.assertTrue(e.message.search("Invalid value") >= 0);
|
| + }
|
| +
|
| + // Try a bad URL pattern. The error happens asynchronously. We're just
|
| + // verifying that the browser doesn't crash.
|
| + var emptyCallback = function (details) {};
|
| + chrome.webRequest.onBeforeRequest.addListener(
|
| + emptyCallback,
|
| + {urls: ["badpattern://*"]});
|
| + chrome.webRequest.onBeforeRequest.removeListener(
|
| + emptyCallback);
|
| +
|
| + chrome.test.succeed();
|
| + },
|
| +]);
|
|
|