- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / data / extensions / api_test / webrequest / test_api.js
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 chrome.test.runTests([
6   function addListeners() {
7     chrome.webRequest.onBeforeRequest.addListener(
8         function(details) {}, {urls: ["<all_urls>"]});
9     chrome.webRequest.onBeforeSendHeaders.addListener(
10         function(details) {}, {urls: ["<all_urls>"]});
11     chrome.webRequest.onSendHeaders.addListener(
12         function(details) {}, {urls: ["<all_urls>"]});
13     chrome.webRequest.onHeadersReceived.addListener(
14         function(details) {}, {urls: ["<all_urls>"]});
15     chrome.webRequest.onBeforeRedirect.addListener(
16         function(details) {}, {urls: ["<all_urls>"]});
17     chrome.webRequest.onResponseStarted.addListener(
18         function(details) {}, {urls: ["<all_urls>"]});
19     chrome.webRequest.onCompleted.addListener(
20         function(details) {}, {urls: ["<all_urls>"]});
21     chrome.webRequest.onErrorOccurred.addListener(
22         function(details) {}, {urls: ["<all_urls>"]});
23     chrome.webRequest.onAuthRequired.addListener(
24         function(details) {}, {urls: ["<all_urls>"]});
25     chrome.test.succeed();
26   },
27
28   // Tests that we can remove a listener and it goes away.
29   // http://crbug.com/96755
30   function removeListeners() {
31     function newCallback(value) {
32       return function(details) { console.log(value); };
33     }
34     var cb1 = newCallback(1);
35     var cb2 = newCallback(2);
36     var event = chrome.webRequest.onBeforeRequest;
37     event.addListener(cb1, {urls: ["<all_urls>"]});
38     event.addListener(cb2, {urls: ["<all_urls>"]});
39     chrome.test.assertTrue(event.hasListener(cb1));
40     chrome.test.assertTrue(event.hasListener(cb2));
41     event.removeListener(cb1);
42     chrome.test.assertFalse(event.hasListener(cb1));
43     chrome.test.assertTrue(event.hasListener(cb2));
44     event.removeListener(cb2);
45     chrome.test.assertFalse(event.hasListener(cb1));
46     chrome.test.assertFalse(event.hasListener(cb2));
47     event.addListener(cb1, {urls: ["http://foo/*"]});
48     event.addListener(cb1, {urls: ["http://bar/*"]});
49     event.removeListener(cb1);
50     chrome.test.assertFalse(event.hasListener(cb1));
51     chrome.test.succeed();
52   },
53
54   // Tests that the extra parameters to addListener are checked for invalid
55   // values.
56   function specialEvents() {
57     var goodFilter = {urls: ["http://*.google.com/*"]};
58     var goodExtraInfo = ["blocking"];
59     chrome.webRequest.onBeforeRequest.addListener(
60         function(details) {},
61         goodFilter, goodExtraInfo);
62
63     // Try a bad RequestFilter.
64     try {
65       chrome.webRequest.onBeforeRequest.addListener(
66           function(details) {},
67           {badFilter: 42, urls: ["<all_urls>"]}, goodExtraInfo);
68       chrome.test.fail();
69     } catch (e) {
70       chrome.test.assertTrue(e.message.search("Invalid value") >= 0);
71     }
72
73     // Try a bad ExtraInfoSpec.
74     try {
75       chrome.webRequest.onBeforeRequest.addListener(
76           function(details) {},
77           goodFilter, ["badExtraInfo"]);
78       chrome.test.fail();
79     } catch (e) {
80       chrome.test.assertTrue(e.message.search("Invalid value") >= 0);
81     }
82
83     // This extraInfoSpec should only work for onBeforeSendHeaders.
84     var headersExtraInfo = ["requestHeaders"];
85     chrome.webRequest.onBeforeSendHeaders.addListener(
86         function(details) {},
87         goodFilter, headersExtraInfo);
88     try {
89       chrome.webRequest.onBeforeRequest.addListener(
90           function(details) {},
91           goodFilter, headersExtraInfo);
92       chrome.test.fail();
93     } catch (e) {
94       chrome.test.assertTrue(e.message.search("Invalid value") >= 0);
95     }
96
97     // ExtraInfoSpec with "responseHeaders" should work for onCompleted.
98     headersExtraInfo = ["responseHeaders"];
99     chrome.webRequest.onCompleted.addListener(
100         function(details) {},
101         goodFilter, headersExtraInfo);
102     try {
103       chrome.webRequest.onBeforeRequest.addListener(
104           function(details) {},
105           goodFilter, headersExtraInfo);
106       chrome.test.fail();
107     } catch (e) {
108       chrome.test.assertTrue(e.message.search("Invalid value") >= 0);
109     }
110
111     // Try a bad URL pattern. The error happens asynchronously. We're just
112     // verifying that the browser doesn't crash.
113     var emptyCallback = function (details) {};
114     chrome.webRequest.onBeforeRequest.addListener(
115         emptyCallback,
116         {urls: ["badpattern://*"]});
117     chrome.webRequest.onBeforeRequest.removeListener(
118         emptyCallback);
119
120     chrome.test.succeed();
121   },
122 ]);