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 #include "extension_prefs_unittest.h" | 5 #include "extension_prefs_unittest.h" |
6 | 6 |
7 #include "base/path_service.h" | 7 #include "base/path_service.h" |
8 #include "base/scoped_temp_dir.h" | 8 #include "base/scoped_temp_dir.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { | 164 class ExtensionPrefsGrantedPermissions : public ExtensionPrefsTest { |
165 public: | 165 public: |
166 virtual void Initialize() { | 166 virtual void Initialize() { |
167 extension_id_ = prefs_.AddExtensionAndReturnId("test"); | 167 extension_id_ = prefs_.AddExtensionAndReturnId("test"); |
168 | 168 |
169 api_perm_set1_.insert(ExtensionAPIPermission::kTab); | 169 api_perm_set1_.insert(ExtensionAPIPermission::kTab); |
170 api_perm_set1_.insert(ExtensionAPIPermission::kBookmark); | 170 api_perm_set1_.insert(ExtensionAPIPermission::kBookmark); |
171 | 171 |
172 api_perm_set2_.insert(ExtensionAPIPermission::kHistory); | 172 api_perm_set2_.insert(ExtensionAPIPermission::kHistory); |
173 | 173 |
| 174 scopes_set1_.insert("scope1"); |
| 175 |
| 176 scopes_set2_.insert("scope1"); |
| 177 scopes_set2_.insert("scope2"); |
| 178 scopes_set2_.insert("scope3"); |
| 179 |
174 AddPattern(&ehost_perm_set1_, "http://*.google.com/*"); | 180 AddPattern(&ehost_perm_set1_, "http://*.google.com/*"); |
175 AddPattern(&ehost_perm_set1_, "http://example.com/*"); | 181 AddPattern(&ehost_perm_set1_, "http://example.com/*"); |
176 AddPattern(&ehost_perm_set1_, "chrome://favicon/*"); | 182 AddPattern(&ehost_perm_set1_, "chrome://favicon/*"); |
177 | 183 |
178 AddPattern(&ehost_perm_set2_, "https://*.google.com/*"); | 184 AddPattern(&ehost_perm_set2_, "https://*.google.com/*"); |
179 // with duplicate: | 185 // with duplicate: |
180 AddPattern(&ehost_perm_set2_, "http://*.google.com/*"); | 186 AddPattern(&ehost_perm_set2_, "http://*.google.com/*"); |
181 | 187 |
182 AddPattern(&shost_perm_set1_, "http://reddit.com/r/test/*"); | 188 AddPattern(&shost_perm_set1_, "http://reddit.com/r/test/*"); |
183 AddPattern(&shost_perm_set2_, "http://reddit.com/r/test/*"); | 189 AddPattern(&shost_perm_set2_, "http://reddit.com/r/test/*"); |
184 AddPattern(&shost_perm_set2_, "http://somesite.com/*"); | 190 AddPattern(&shost_perm_set2_, "http://somesite.com/*"); |
185 AddPattern(&shost_perm_set2_, "http://example.com/*"); | 191 AddPattern(&shost_perm_set2_, "http://example.com/*"); |
186 | 192 |
187 ExtensionAPIPermissionSet expected_apis = api_perm_set1_; | 193 ExtensionAPIPermissionSet expected_apis = api_perm_set1_; |
188 | 194 |
189 AddPattern(&ehost_permissions_, "http://*.google.com/*"); | 195 AddPattern(&ehost_permissions_, "http://*.google.com/*"); |
190 AddPattern(&ehost_permissions_, "http://example.com/*"); | 196 AddPattern(&ehost_permissions_, "http://example.com/*"); |
191 AddPattern(&ehost_permissions_, "chrome://favicon/*"); | 197 AddPattern(&ehost_permissions_, "chrome://favicon/*"); |
192 AddPattern(&ehost_permissions_, "https://*.google.com/*"); | 198 AddPattern(&ehost_permissions_, "https://*.google.com/*"); |
193 | 199 |
194 AddPattern(&shost_permissions_, "http://reddit.com/r/test/*"); | 200 AddPattern(&shost_permissions_, "http://reddit.com/r/test/*"); |
195 AddPattern(&shost_permissions_, "http://somesite.com/*"); | 201 AddPattern(&shost_permissions_, "http://somesite.com/*"); |
196 AddPattern(&shost_permissions_, "http://example.com/*"); | 202 AddPattern(&shost_permissions_, "http://example.com/*"); |
197 | 203 |
| 204 scope_permissions_.insert("scope1"); |
| 205 scope_permissions_.insert("scope2"); |
| 206 scope_permissions_.insert("scope3"); |
| 207 |
198 ExtensionAPIPermissionSet empty_set; | 208 ExtensionAPIPermissionSet empty_set; |
199 URLPatternSet empty_extent; | 209 URLPatternSet empty_extent; |
| 210 ExtensionOAuth2Scopes empty_scopes; |
200 scoped_refptr<ExtensionPermissionSet> permissions; | 211 scoped_refptr<ExtensionPermissionSet> permissions; |
201 scoped_refptr<ExtensionPermissionSet> granted_permissions; | 212 scoped_refptr<ExtensionPermissionSet> granted_permissions; |
202 | 213 |
203 // Make sure both granted api and host permissions start empty. | 214 // Make sure both granted api and host permissions start empty. |
204 granted_permissions = | 215 granted_permissions = |
205 prefs()->GetGrantedPermissions(extension_id_); | 216 prefs()->GetGrantedPermissions(extension_id_); |
206 EXPECT_TRUE(granted_permissions->IsEmpty()); | 217 EXPECT_TRUE(granted_permissions->IsEmpty()); |
207 | 218 |
208 permissions = new ExtensionPermissionSet( | 219 permissions = new ExtensionPermissionSet( |
209 api_perm_set1_, empty_extent, empty_extent); | 220 api_perm_set1_, empty_extent, empty_extent); |
210 | 221 |
211 // Add part of the api permissions. | 222 // Add part of the api permissions. |
212 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); | 223 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); |
213 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); | 224 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); |
214 EXPECT_TRUE(granted_permissions.get()); | 225 EXPECT_TRUE(granted_permissions.get()); |
215 EXPECT_FALSE(granted_permissions->IsEmpty()); | 226 EXPECT_FALSE(granted_permissions->IsEmpty()); |
216 EXPECT_EQ(expected_apis, granted_permissions->apis()); | 227 EXPECT_EQ(expected_apis, granted_permissions->apis()); |
217 EXPECT_TRUE(granted_permissions->effective_hosts().is_empty()); | 228 EXPECT_TRUE(granted_permissions->effective_hosts().is_empty()); |
218 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); | 229 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); |
| 230 EXPECT_EQ(empty_scopes, granted_permissions->scopes()); |
219 granted_permissions = NULL; | 231 granted_permissions = NULL; |
220 | 232 |
221 // Add part of the explicit host permissions. | 233 // Add part of the explicit host permissions. |
222 permissions = new ExtensionPermissionSet( | 234 permissions = new ExtensionPermissionSet( |
223 empty_set, ehost_perm_set1_, empty_extent); | 235 empty_set, ehost_perm_set1_, empty_extent); |
224 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); | 236 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); |
225 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); | 237 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); |
226 EXPECT_FALSE(granted_permissions->IsEmpty()); | 238 EXPECT_FALSE(granted_permissions->IsEmpty()); |
227 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); | 239 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); |
228 EXPECT_EQ(expected_apis, granted_permissions->apis()); | 240 EXPECT_EQ(expected_apis, granted_permissions->apis()); |
229 EXPECT_EQ(ehost_perm_set1_, | 241 EXPECT_EQ(ehost_perm_set1_, |
230 granted_permissions->explicit_hosts()); | 242 granted_permissions->explicit_hosts()); |
231 EXPECT_EQ(ehost_perm_set1_, | 243 EXPECT_EQ(ehost_perm_set1_, |
232 granted_permissions->effective_hosts()); | 244 granted_permissions->effective_hosts()); |
| 245 EXPECT_EQ(empty_scopes, granted_permissions->scopes()); |
233 | 246 |
234 // Add part of the scriptable host permissions. | 247 // Add part of the scriptable host permissions. |
235 permissions = new ExtensionPermissionSet( | 248 permissions = new ExtensionPermissionSet( |
236 empty_set, empty_extent, shost_perm_set1_); | 249 empty_set, empty_extent, shost_perm_set1_); |
237 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); | 250 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); |
238 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); | 251 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); |
239 EXPECT_FALSE(granted_permissions->IsEmpty()); | 252 EXPECT_FALSE(granted_permissions->IsEmpty()); |
240 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); | 253 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); |
241 EXPECT_EQ(expected_apis, granted_permissions->apis()); | 254 EXPECT_EQ(expected_apis, granted_permissions->apis()); |
242 EXPECT_EQ(ehost_perm_set1_, | 255 EXPECT_EQ(ehost_perm_set1_, |
243 granted_permissions->explicit_hosts()); | 256 granted_permissions->explicit_hosts()); |
244 EXPECT_EQ(shost_perm_set1_, | 257 EXPECT_EQ(shost_perm_set1_, |
245 granted_permissions->scriptable_hosts()); | 258 granted_permissions->scriptable_hosts()); |
| 259 EXPECT_EQ(empty_scopes, granted_permissions->scopes()); |
246 | 260 |
247 URLPatternSet::CreateUnion(ehost_perm_set1_, shost_perm_set1_, | 261 URLPatternSet::CreateUnion(ehost_perm_set1_, shost_perm_set1_, |
248 &effective_permissions_); | 262 &effective_permissions_); |
249 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); | 263 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); |
250 | 264 |
251 // Add the rest of both the permissions. | 265 // Add part of the oauth2 scopes. |
252 permissions = new ExtensionPermissionSet( | 266 permissions = new ExtensionPermissionSet( |
253 api_perm_set2_, ehost_perm_set2_, shost_perm_set2_); | 267 empty_set, empty_extent, empty_extent, scopes_set1_); |
| 268 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); |
| 269 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); |
| 270 EXPECT_FALSE(granted_permissions->IsEmpty()); |
| 271 EXPECT_FALSE(granted_permissions->HasEffectiveFullAccess()); |
| 272 EXPECT_EQ(expected_apis, granted_permissions->apis()); |
| 273 EXPECT_EQ(ehost_perm_set1_, |
| 274 granted_permissions->explicit_hosts()); |
| 275 EXPECT_EQ(shost_perm_set1_, |
| 276 granted_permissions->scriptable_hosts()); |
| 277 EXPECT_EQ(scopes_set1_, granted_permissions->scopes()); |
| 278 |
| 279 // Add the rest of the permissions. |
| 280 permissions = new ExtensionPermissionSet( |
| 281 api_perm_set2_, ehost_perm_set2_, shost_perm_set2_, scopes_set2_); |
254 | 282 |
255 std::set_union(expected_apis.begin(), expected_apis.end(), | 283 std::set_union(expected_apis.begin(), expected_apis.end(), |
256 api_perm_set2_.begin(), api_perm_set2_.end(), | 284 api_perm_set2_.begin(), api_perm_set2_.end(), |
257 std::inserter(api_permissions_, api_permissions_.begin())); | 285 std::inserter(api_permissions_, api_permissions_.begin())); |
258 | 286 |
259 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); | 287 prefs()->AddGrantedPermissions(extension_id_, permissions.get()); |
260 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); | 288 granted_permissions = prefs()->GetGrantedPermissions(extension_id_); |
261 EXPECT_TRUE(granted_permissions.get()); | 289 EXPECT_TRUE(granted_permissions.get()); |
262 EXPECT_FALSE(granted_permissions->IsEmpty()); | 290 EXPECT_FALSE(granted_permissions->IsEmpty()); |
263 EXPECT_EQ(api_permissions_, granted_permissions->apis()); | 291 EXPECT_EQ(api_permissions_, granted_permissions->apis()); |
264 EXPECT_EQ(ehost_permissions_, | 292 EXPECT_EQ(ehost_permissions_, |
265 granted_permissions->explicit_hosts()); | 293 granted_permissions->explicit_hosts()); |
266 EXPECT_EQ(shost_permissions_, | 294 EXPECT_EQ(shost_permissions_, |
267 granted_permissions->scriptable_hosts()); | 295 granted_permissions->scriptable_hosts()); |
| 296 EXPECT_EQ(scope_permissions_, granted_permissions->scopes()); |
268 effective_permissions_.ClearPatterns(); | 297 effective_permissions_.ClearPatterns(); |
269 URLPatternSet::CreateUnion(ehost_permissions_, shost_permissions_, | 298 URLPatternSet::CreateUnion(ehost_permissions_, shost_permissions_, |
270 &effective_permissions_); | 299 &effective_permissions_); |
271 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); | 300 EXPECT_EQ(effective_permissions_, granted_permissions->effective_hosts()); |
272 } | 301 } |
273 | 302 |
274 virtual void Verify() { | 303 virtual void Verify() { |
275 scoped_refptr<ExtensionPermissionSet> permissions( | 304 scoped_refptr<ExtensionPermissionSet> permissions( |
276 prefs()->GetGrantedPermissions(extension_id_)); | 305 prefs()->GetGrantedPermissions(extension_id_)); |
277 EXPECT_TRUE(permissions.get()); | 306 EXPECT_TRUE(permissions.get()); |
278 EXPECT_FALSE(permissions->HasEffectiveFullAccess()); | 307 EXPECT_FALSE(permissions->HasEffectiveFullAccess()); |
279 EXPECT_EQ(api_permissions_, permissions->apis()); | 308 EXPECT_EQ(api_permissions_, permissions->apis()); |
280 EXPECT_EQ(ehost_permissions_, | 309 EXPECT_EQ(ehost_permissions_, |
281 permissions->explicit_hosts()); | 310 permissions->explicit_hosts()); |
282 EXPECT_EQ(shost_permissions_, | 311 EXPECT_EQ(shost_permissions_, |
283 permissions->scriptable_hosts()); | 312 permissions->scriptable_hosts()); |
| 313 EXPECT_EQ(scope_permissions_, |
| 314 permissions->scopes()); |
284 } | 315 } |
285 | 316 |
286 private: | 317 private: |
287 std::string extension_id_; | 318 std::string extension_id_; |
288 ExtensionAPIPermissionSet api_perm_set1_; | 319 ExtensionAPIPermissionSet api_perm_set1_; |
289 ExtensionAPIPermissionSet api_perm_set2_; | 320 ExtensionAPIPermissionSet api_perm_set2_; |
290 URLPatternSet ehost_perm_set1_; | 321 URLPatternSet ehost_perm_set1_; |
291 URLPatternSet ehost_perm_set2_; | 322 URLPatternSet ehost_perm_set2_; |
292 URLPatternSet shost_perm_set1_; | 323 URLPatternSet shost_perm_set1_; |
293 URLPatternSet shost_perm_set2_; | 324 URLPatternSet shost_perm_set2_; |
| 325 ExtensionOAuth2Scopes scopes_set1_; |
| 326 ExtensionOAuth2Scopes scopes_set2_; |
294 | 327 |
295 ExtensionAPIPermissionSet api_permissions_; | 328 ExtensionAPIPermissionSet api_permissions_; |
296 URLPatternSet ehost_permissions_; | 329 URLPatternSet ehost_permissions_; |
297 URLPatternSet shost_permissions_; | 330 URLPatternSet shost_permissions_; |
| 331 ExtensionOAuth2Scopes scope_permissions_; |
298 URLPatternSet effective_permissions_; | 332 URLPatternSet effective_permissions_; |
299 }; | 333 }; |
300 TEST_F(ExtensionPrefsGrantedPermissions, GrantedPermissions) {} | 334 TEST_F(ExtensionPrefsGrantedPermissions, GrantedPermissions) {} |
301 | 335 |
302 // Tests the SetActivePermissions / GetActivePermissions functions. | 336 // Tests the SetActivePermissions / GetActivePermissions functions. |
303 class ExtensionPrefsActivePermissions : public ExtensionPrefsTest { | 337 class ExtensionPrefsActivePermissions : public ExtensionPrefsTest { |
304 public: | 338 public: |
305 virtual void Initialize() { | 339 virtual void Initialize() { |
306 extension_id_ = prefs_.AddExtensionAndReturnId("test"); | 340 extension_id_ = prefs_.AddExtensionAndReturnId("test"); |
307 | 341 |
308 ExtensionAPIPermissionSet api_perms; | 342 ExtensionAPIPermissionSet api_perms; |
309 api_perms.insert(ExtensionAPIPermission::kTab); | 343 api_perms.insert(ExtensionAPIPermission::kTab); |
310 api_perms.insert(ExtensionAPIPermission::kBookmark); | 344 api_perms.insert(ExtensionAPIPermission::kBookmark); |
311 api_perms.insert(ExtensionAPIPermission::kHistory); | 345 api_perms.insert(ExtensionAPIPermission::kHistory); |
312 | 346 |
313 URLPatternSet ehosts; | 347 URLPatternSet ehosts; |
314 AddPattern(&ehosts, "http://*.google.com/*"); | 348 AddPattern(&ehosts, "http://*.google.com/*"); |
315 AddPattern(&ehosts, "http://example.com/*"); | 349 AddPattern(&ehosts, "http://example.com/*"); |
316 AddPattern(&ehosts, "chrome://favicon/*"); | 350 AddPattern(&ehosts, "chrome://favicon/*"); |
317 | 351 |
318 URLPatternSet shosts; | 352 URLPatternSet shosts; |
319 AddPattern(&shosts, "https://*.google.com/*"); | 353 AddPattern(&shosts, "https://*.google.com/*"); |
320 AddPattern(&shosts, "http://reddit.com/r/test/*"); | 354 AddPattern(&shosts, "http://reddit.com/r/test/*"); |
321 | 355 |
322 active_perms_ = new ExtensionPermissionSet(api_perms, ehosts, shosts); | 356 ExtensionOAuth2Scopes scopes; |
| 357 scopes.insert("my-new-scope"); |
| 358 |
| 359 active_perms_ = new ExtensionPermissionSet( |
| 360 api_perms, ehosts, shosts, scopes); |
323 | 361 |
324 // Make sure the active permissions start empty. | 362 // Make sure the active permissions start empty. |
325 scoped_refptr<ExtensionPermissionSet> active( | 363 scoped_refptr<ExtensionPermissionSet> active( |
326 prefs()->GetActivePermissions(extension_id_)); | 364 prefs()->GetActivePermissions(extension_id_)); |
327 EXPECT_TRUE(active->IsEmpty()); | 365 EXPECT_TRUE(active->IsEmpty()); |
328 | 366 |
329 // Set the active permissions. | 367 // Set the active permissions. |
330 prefs()->SetActivePermissions(extension_id_, active_perms_.get()); | 368 prefs()->SetActivePermissions(extension_id_, active_perms_.get()); |
331 active = prefs()->GetActivePermissions(extension_id_); | 369 active = prefs()->GetActivePermissions(extension_id_); |
332 EXPECT_EQ(active_perms_->apis(), active->apis()); | 370 EXPECT_EQ(active_perms_->apis(), active->apis()); |
333 EXPECT_EQ(active_perms_->explicit_hosts(), active->explicit_hosts()); | 371 EXPECT_EQ(active_perms_->explicit_hosts(), active->explicit_hosts()); |
334 EXPECT_EQ(active_perms_->scriptable_hosts(), active->scriptable_hosts()); | 372 EXPECT_EQ(active_perms_->scriptable_hosts(), active->scriptable_hosts()); |
| 373 EXPECT_EQ(active_perms_->scopes(), active->scopes()); |
335 EXPECT_EQ(*active_perms_, *active); | 374 EXPECT_EQ(*active_perms_, *active); |
336 } | 375 } |
337 | 376 |
338 virtual void Verify() { | 377 virtual void Verify() { |
339 scoped_refptr<ExtensionPermissionSet> permissions( | 378 scoped_refptr<ExtensionPermissionSet> permissions( |
340 prefs()->GetActivePermissions(extension_id_)); | 379 prefs()->GetActivePermissions(extension_id_)); |
341 EXPECT_EQ(*active_perms_, *permissions); | 380 EXPECT_EQ(*active_perms_, *permissions); |
342 } | 381 } |
343 | 382 |
344 private: | 383 private: |
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1092 ++iteration_; | 1131 ++iteration_; |
1093 } else { | 1132 } else { |
1094 EXPECT_EQ(kDefaultPref1, actual); | 1133 EXPECT_EQ(kDefaultPref1, actual); |
1095 } | 1134 } |
1096 } | 1135 } |
1097 | 1136 |
1098 private: | 1137 private: |
1099 int iteration_; | 1138 int iteration_; |
1100 }; | 1139 }; |
1101 TEST_F(ExtensionPrefsDisableExtensions, ExtensionPrefsDisableExtensions) {} | 1140 TEST_F(ExtensionPrefsDisableExtensions, ExtensionPrefsDisableExtensions) {} |
OLD | NEW |