OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var assertEq = chrome.test.assertEq; | 5 var assertEq = chrome.test.assertEq; |
6 var assertFalse = chrome.test.assertFalse; | 6 var assertFalse = chrome.test.assertFalse; |
7 var assertTrue = chrome.test.assertTrue; | 7 var assertTrue = chrome.test.assertTrue; |
8 var fail = chrome.test.callbackFail; | 8 var fail = chrome.test.callbackFail; |
9 var pass = chrome.test.callbackPass; | 9 var pass = chrome.test.callbackPass; |
10 var listenOnce = chrome.test.listenOnce; | 10 var listenOnce = chrome.test.listenOnce; |
11 | 11 |
12 var NOT_OPTIONAL_ERROR = | 12 var NOT_OPTIONAL_ERROR = |
13 "Optional permissions must be listed in extension manifest."; | 13 "Optional permissions must be listed in extension manifest."; |
14 | 14 |
15 var NO_BOOKMARKS_PERMISSION = | |
16 "You do not have permission to use 'bookmarks.getTree'."; | |
17 | |
18 var REQUIRED_ERROR = | 15 var REQUIRED_ERROR = |
19 "You cannot remove required permissions."; | 16 "You cannot remove required permissions."; |
20 | 17 |
21 var NOT_WHITE_LISTED_ERROR = | 18 var NOT_WHITE_LISTED_ERROR = |
22 "The optional permissions API does not support '*'."; | 19 "The optional permissions API does not support '*'."; |
23 | 20 |
24 var UNKNOWN_PERMISSIONS_ERROR = | 21 var UNKNOWN_PERMISSIONS_ERROR = |
25 "'*' is not a recognized permission."; | 22 "'*' is not a recognized permission."; |
26 | 23 |
27 var emptyPermissions = {permissions: [], origins: []}; | 24 var emptyPermissions = {permissions: [], origins: []}; |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 chrome.permissions.request( | 117 chrome.permissions.request( |
121 {origins: ['http://*.b.com/*']}, fail(NOT_OPTIONAL_ERROR)); | 118 {origins: ['http://*.b.com/*']}, fail(NOT_OPTIONAL_ERROR)); |
122 chrome.permissions.request( | 119 chrome.permissions.request( |
123 {permissions: ['history'], origins: ['http://*.b.com/*']}, | 120 {permissions: ['history'], origins: ['http://*.b.com/*']}, |
124 fail(NOT_OPTIONAL_ERROR)); | 121 fail(NOT_OPTIONAL_ERROR)); |
125 }, | 122 }, |
126 | 123 |
127 // We should be able to request the bookmarks API since it's in the granted | 124 // We should be able to request the bookmarks API since it's in the granted |
128 // permissions list (see permissions_apitest.cc). | 125 // permissions list (see permissions_apitest.cc). |
129 function requestBookmarks() { | 126 function requestBookmarks() { |
130 // chrome.bookmarks is a optional permission, so the API definition should | 127 assertEq(undefined, chrome.bookmarks); |
131 // exist but its use disallowed. | |
132 assertTrue(!!chrome.bookmarks); | |
133 try { | |
134 chrome.bookmarks.getTree(function() { | |
135 chrome.test.fail("Should not have bookmarks API permission."); | |
136 }); | |
137 } catch (e) { | |
138 assertTrue(e.message.indexOf(NO_BOOKMARKS_PERMISSION) == 0); | |
139 } | |
140 listenOnce(chrome.permissions.onAdded, | 128 listenOnce(chrome.permissions.onAdded, |
141 function(permissions) { | 129 function(permissions) { |
142 assertTrue(permissions.permissions.length == 1); | 130 assertTrue(permissions.permissions.length == 1); |
143 assertTrue(permissions.permissions[0] == 'bookmarks'); | 131 assertTrue(permissions.permissions[0] == 'bookmarks'); |
144 }); | 132 }); |
145 chrome.permissions.request( | 133 chrome.permissions.request( |
146 {permissions:['bookmarks']}, | 134 {permissions:['bookmarks']}, |
147 pass(function(granted) { | 135 pass(function(granted) { |
148 assertTrue(granted); | 136 assertTrue(granted); |
149 chrome.bookmarks.getTree(pass(function(result) { | 137 chrome.bookmarks.getTree(pass(function(result) { |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 function(permissions) { | 186 function(permissions) { |
199 assertTrue(permissions.permissions.length == 1); | 187 assertTrue(permissions.permissions.length == 1); |
200 assertTrue(permissions.permissions[0] == 'bookmarks'); | 188 assertTrue(permissions.permissions[0] == 'bookmarks'); |
201 }); | 189 }); |
202 chrome.permissions.remove( | 190 chrome.permissions.remove( |
203 {permissions:['bookmarks']}, | 191 {permissions:['bookmarks']}, |
204 pass(function() { | 192 pass(function() { |
205 chrome.permissions.getAll(pass(function(permissions) { | 193 chrome.permissions.getAll(pass(function(permissions) { |
206 assertTrue(checkPermSetsEq(initialPermissions, permissions)); | 194 assertTrue(checkPermSetsEq(initialPermissions, permissions)); |
207 })); | 195 })); |
208 try { | 196 assertEq(undefined, chrome.bookmarks); |
209 chrome.bookmarks.getTree(function() { | |
210 chrome.test.fail("Should not have bookmarks API permission."); | |
211 }); | |
212 } catch (e) { | |
213 assertTrue(e.message.indexOf(NO_BOOKMARKS_PERMISSION) == 0); | |
214 } | |
215 })); | 197 })); |
216 }, | 198 }, |
217 | 199 |
218 // The user shouldn't have to approve permissions that have no warnings. | 200 // The user shouldn't have to approve permissions that have no warnings. |
219 function noPromptForNoWarnings() { | 201 function noPromptForNoWarnings() { |
220 chrome.permissions.request( | 202 chrome.permissions.request( |
221 {permissions: ['notifications']}, | 203 {permissions: ['notifications']}, |
222 pass(function(granted) { | 204 pass(function(granted) { |
223 assertTrue(granted); | 205 assertTrue(granted); |
224 | 206 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 // onAdded and onRemoved event listeners. | 280 // onAdded and onRemoved event listeners. |
299 function eventListenerPermissions() { | 281 function eventListenerPermissions() { |
300 listenOnce(chrome.permissions.onAdded, | 282 listenOnce(chrome.permissions.onAdded, |
301 function(permissions) { | 283 function(permissions) { |
302 chrome.bookmarks.getTree(pass(function() { | 284 chrome.bookmarks.getTree(pass(function() { |
303 assertTrue(true); | 285 assertTrue(true); |
304 })); | 286 })); |
305 }); | 287 }); |
306 listenOnce(chrome.permissions.onRemoved, | 288 listenOnce(chrome.permissions.onRemoved, |
307 function(permissions) { | 289 function(permissions) { |
308 try { | 290 assertEq(undefined, chrome.bookmarks); |
309 chrome.bookmarks.getTree(function() { | |
310 chrome.test.fail("Should not have bookmakrs API permission."); | |
311 }); | |
312 } catch (e) { | |
313 assertTrue(e.message.indexOf(NO_BOOKMARKS_PERMISSION) == 0); | |
314 } | |
315 }); | 291 }); |
316 | 292 |
317 chrome.permissions.request( | 293 chrome.permissions.request( |
318 {permissions: ['bookmarks', 'management']}, pass(function(granted) { | 294 {permissions: ['bookmarks', 'management']}, pass(function(granted) { |
319 assertTrue(granted); | 295 assertTrue(granted); |
320 chrome.permissions.remove( | 296 chrome.permissions.remove( |
321 {permissions: ['bookmarks']}, pass(function() { | 297 {permissions: ['bookmarks']}, pass(function() { |
322 assertTrue(true); | 298 assertTrue(true); |
323 })); | 299 })); |
324 })); | 300 })); |
325 } | 301 } |
326 | 302 |
327 ]); | 303 ]); |
328 }); | 304 }); |
OLD | NEW |