Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1190)

Side by Side Diff: chrome/test/data/extensions/api_test/permissions/optional/background.html

Issue 7432006: Add an experimental permissions API for extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix clang Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 <script>
2
3 var assertFalse = chrome.test.assertFalse;
4 var assertTrue = chrome.test.assertTrue;
5 var fail = chrome.test.callbackFail;
6 var pass = chrome.test.callbackPass;
7 var listenOnce = chrome.test.listenOnce;
8
9 var NOT_OPTIONAL_ERROR =
10 "Optional permissions must be listed in extension manifest.";
11
12 var NO_TABS_PERMISSION =
13 "You do not have permission to use 'windows.getAll'.";
14
15 var REQUIRED_ERROR =
16 "You cannot remove required permissions.";
17
18 var NOT_WHITE_LISTED_ERROR =
19 "The optional permissions API does not support '*'.";
20
21 var UNKNOWN_PERMISSIONS_ERROR =
22 "'*' is not a recognized permission.";
23
24 var emptyPermissions = {permissions: []};
25
26 var initialPermissions = {
27 permissions: ['experimental', 'management', 'permissions']
28 };
29
30 var permissionsWithTabs = {
31 permissions: ['experimental', 'management', 'permissions', 'tabs']
32 }
33
34 function checkEqualSets(set1, set2) {
35 if (set1.length != set2.length)
36 return false;
37
38 for (var x = 0; x < set1.length; x++) {
39 if (!set2.some(function(v) { return v == set1[x]; }))
40 return false;
41 }
42
43 return true;
44 }
45
46 function checkPermSetsEq(set1, set2) {
47 return checkEqualSets(set1.permissions, set2.permissions);
48 }
49
50 chrome.test.runTests([
51 function contains() {
52 chrome.experimental.permissions.contains(
53 {permissions: ['management']},
54 pass(function(result) {
55 assertTrue(result);
56 }));
57 chrome.experimental.permissions.contains(
58 {permissions: ['devtools']},
59 pass(function(result) {
60 assertFalse(result);
61 }));
62 chrome.experimental.permissions.contains(
63 {permissions: ['permissions', 'management']},
64 pass(function(result) {
65 assertTrue(result);
66 }));
67 chrome.experimental.permissions.contains(
68 {permissions: ['management', 'permissions']},
69 pass(function(result) {
70 assertTrue(result);
71 }));
72 },
73
74 function getAll() {
75 chrome.experimental.permissions.getAll(pass(function(permissions) {
76 assertTrue(checkPermSetsEq(initialPermissions, permissions));
77 }));
78 },
79
80 // Nothing should happen if we request permission we already have
81 function requestNoOp() {
82 chrome.experimental.permissions.request(
83 {permissions:['management']},
84 pass(function(granted) {
85 assertTrue(granted);
86 }));
87 },
88
89 // We should get an error when requesting permissions that haven't been
90 // defined in "optional_permissions".
91 function requestNonOptional() {
92 chrome.experimental.permissions.request(
93 {permissions:['debugger']}, fail(NOT_OPTIONAL_ERROR));
94 },
95
96 // We should be able to request the tabs API since it's in the granted
97 // permissions list (see permissions_apitest.cc).
98 function requestTabs() {
99 try {
100 chrome.windows.getAll({populate: true}, function() {
101 chrome.test.fail("Should not have tabs API permission.");
102 });
103 } catch (e) {
104 assertTrue(e.message.indexOf(NO_TABS_PERMISSION) == 0);
105 }
106 listenOnce(chrome.experimental.permissions.onAdded, function(permissions) {
107 assertTrue(permissions.permissions.length == 1);
108 assertTrue(permissions.permissions[0] == 'tabs');
109 });
110 chrome.experimental.permissions.request(
111 {permissions:['tabs']},
112 pass(function(granted) {
113 assertTrue(granted);
114 chrome.windows.getAll({populate: true}, pass(function(windows) {
115 assertTrue(true);
116 }));
117 chrome.experimental.permissions.getAll(pass(function(permissions) {
118 assertTrue(checkPermSetsEq(permissionsWithTabs, permissions));
119 }));
120 }));
121 },
122
123 // You can't remove required permissions.
124 function removeRequired() {
125 chrome.experimental.permissions.remove(
126 {permissions:['management']}, fail(REQUIRED_ERROR));
127 },
128
129 // You can remove permissions you don't have (nothing happens).
130 function removeNoOp() {
131 chrome.experimental.permissions.remove(
132 {permissions:['background']},
133 pass(function(removed) {
134 assertTrue(removed);
135 }));
136 },
137
138 function removeTabs() {
139 chrome.windows.getAll({populate: true}, pass(function(windows) {
140 assertTrue(true);
141 }));
142 listenOnce(chrome.experimental.permissions.onRemoved,
143 function(permissions) {
144 assertTrue(permissions.permissions.length == 1);
145 assertTrue(permissions.permissions[0] == 'tabs');
146 });
147 chrome.experimental.permissions.remove(
148 {permissions:['tabs']},
149 pass(function() {
150 chrome.experimental.permissions.getAll(pass(function(permissions) {
151 assertTrue(checkPermSetsEq(initialPermissions, permissions));
152 }));
153 try {
154 chrome.windows.getAll({populate: true}, function() {
155 chrome.test.fail("Should not have tabs API permission.");
156 });
157 } catch (e) {
158 assertTrue(e.message.indexOf(NO_TABS_PERMISSION) == 0);
159 }
160 }));
161 },
162
163 // The user shouldn't have to approve permissions that have no warnings.
164 // TODO(jstritar): move to its own test and set a low timeout
165 function noPromptForNoWarnings() {
166 chrome.experimental.permissions.request(
167 {permissions: ['notifications']},
168 pass(function(granted) {
169 assertTrue(granted);
170 }));
171 },
172
173 // Make sure you can only access the white listed permissions.
174 function whitelist() {
175 var error_msg = NOT_WHITE_LISTED_ERROR.replace('*', 'chromeAuthPrivate');
176 chrome.experimental.permissions.request(
177 {permissions: ['chromeAuthPrivate']}, fail(error_msg));
178 chrome.experimental.permissions.remove(
179 {permissions: ['chromeAuthPrivate']}, fail(error_msg));
180 },
181
182 function unknownPermission() {
183 var error_msg = UNKNOWN_PERMISSIONS_ERROR.replace('*', 'asdf');
184 chrome.experimental.permissions.request(
185 {permissions: ['asdf']}, fail(error_msg));
186 }
187 ]);
188 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698