OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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 "chrome/common/extensions/extension_permission_set.h" | 5 #include "chrome/common/extensions/extension_permission_set.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/common/chrome_paths.h" | 10 #include "chrome/common/chrome_paths.h" |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 EXPECT_EQ(ExtensionAPIPermission::kUnlimitedStorage, | 155 EXPECT_EQ(ExtensionAPIPermission::kUnlimitedStorage, |
156 info->GetByName("unlimited_storage")->id()); | 156 info->GetByName("unlimited_storage")->id()); |
157 } | 157 } |
158 | 158 |
159 TEST(ExtensionAPIPermissionTest, HostedAppPermissions) { | 159 TEST(ExtensionAPIPermissionTest, HostedAppPermissions) { |
160 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); | 160 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); |
161 ExtensionAPIPermissionSet hosted_perms; | 161 ExtensionAPIPermissionSet hosted_perms; |
162 hosted_perms.insert(ExtensionAPIPermission::kBackground); | 162 hosted_perms.insert(ExtensionAPIPermission::kBackground); |
163 hosted_perms.insert(ExtensionAPIPermission::kClipboardRead); | 163 hosted_perms.insert(ExtensionAPIPermission::kClipboardRead); |
164 hosted_perms.insert(ExtensionAPIPermission::kClipboardWrite); | 164 hosted_perms.insert(ExtensionAPIPermission::kClipboardWrite); |
| 165 hosted_perms.insert(ExtensionAPIPermission::kChromeAuthPrivate); |
165 hosted_perms.insert(ExtensionAPIPermission::kChromePrivate); | 166 hosted_perms.insert(ExtensionAPIPermission::kChromePrivate); |
166 hosted_perms.insert(ExtensionAPIPermission::kExperimental); | 167 hosted_perms.insert(ExtensionAPIPermission::kExperimental); |
167 hosted_perms.insert(ExtensionAPIPermission::kGeolocation); | 168 hosted_perms.insert(ExtensionAPIPermission::kGeolocation); |
168 hosted_perms.insert(ExtensionAPIPermission::kNotification); | 169 hosted_perms.insert(ExtensionAPIPermission::kNotification); |
169 hosted_perms.insert(ExtensionAPIPermission::kUnlimitedStorage); | 170 hosted_perms.insert(ExtensionAPIPermission::kUnlimitedStorage); |
170 hosted_perms.insert(ExtensionAPIPermission::kWebstorePrivate); | 171 hosted_perms.insert(ExtensionAPIPermission::kWebstorePrivate); |
171 | 172 |
172 ExtensionAPIPermissionSet perms = info->GetAll(); | 173 ExtensionAPIPermissionSet perms = info->GetAll(); |
173 size_t count = 0; | 174 size_t count = 0; |
174 for (ExtensionAPIPermissionSet::iterator i = perms.begin(); | 175 for (ExtensionAPIPermissionSet::iterator i = perms.begin(); |
175 i != perms.end(); ++i) { | 176 i != perms.end(); ++i) { |
176 count += hosted_perms.count(*i); | 177 count += hosted_perms.count(*i); |
177 EXPECT_EQ(hosted_perms.count(*i) > 0, info->GetByID(*i)->is_hosted_app()); | 178 EXPECT_EQ(hosted_perms.count(*i) > 0, info->GetByID(*i)->is_hosted_app()); |
178 } | 179 } |
179 | 180 |
180 EXPECT_EQ(9u, count); | 181 EXPECT_EQ(10u, count); |
181 EXPECT_EQ(9u, info->get_hosted_app_permission_count()); | 182 EXPECT_EQ(10u, info->get_hosted_app_permission_count()); |
182 } | 183 } |
183 | 184 |
184 TEST(ExtensionAPIPermissionTest, ComponentOnlyPermissions) { | 185 TEST(ExtensionAPIPermissionTest, ComponentOnlyPermissions) { |
185 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); | 186 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); |
186 ExtensionAPIPermissionSet private_perms; | 187 ExtensionAPIPermissionSet private_perms; |
| 188 private_perms.insert(ExtensionAPIPermission::kChromeAuthPrivate); |
187 private_perms.insert(ExtensionAPIPermission::kChromeosInfoPrivate); | 189 private_perms.insert(ExtensionAPIPermission::kChromeosInfoPrivate); |
188 private_perms.insert(ExtensionAPIPermission::kFileBrowserPrivate); | 190 private_perms.insert(ExtensionAPIPermission::kFileBrowserPrivate); |
189 private_perms.insert(ExtensionAPIPermission::kMediaPlayerPrivate); | 191 private_perms.insert(ExtensionAPIPermission::kMediaPlayerPrivate); |
190 private_perms.insert(ExtensionAPIPermission::kWebstorePrivate); | 192 private_perms.insert(ExtensionAPIPermission::kWebstorePrivate); |
191 | 193 |
192 ExtensionAPIPermissionSet perms = info->GetAll(); | 194 ExtensionAPIPermissionSet perms = info->GetAll(); |
193 int count = 0; | 195 int count = 0; |
194 for (ExtensionAPIPermissionSet::iterator i = perms.begin(); | 196 for (ExtensionAPIPermissionSet::iterator i = perms.begin(); |
195 i != perms.end(); ++i) { | 197 i != perms.end(); ++i) { |
196 count += private_perms.count(*i); | 198 count += private_perms.count(*i); |
197 EXPECT_EQ(private_perms.count(*i) > 0, | 199 EXPECT_EQ(private_perms.count(*i) > 0, |
198 info->GetByID(*i)->is_component_only()); | 200 info->GetByID(*i)->is_component_only()); |
199 } | 201 } |
200 | 202 |
201 EXPECT_EQ(4, count); | 203 EXPECT_EQ(5, count); |
202 } | 204 } |
203 | 205 |
204 TEST(ExtensionPermissionSetTest, EffectiveHostPermissions) { | 206 TEST(ExtensionPermissionSetTest, EffectiveHostPermissions) { |
205 scoped_refptr<Extension> extension; | 207 scoped_refptr<Extension> extension; |
206 const ExtensionPermissionSet* permissions = NULL; | 208 const ExtensionPermissionSet* permissions = NULL; |
207 | 209 |
208 extension = LoadManifest("effective_host_permissions", "empty.json"); | 210 extension = LoadManifest("effective_host_permissions", "empty.json"); |
209 permissions = extension->permission_set(); | 211 permissions = extension->permission_set(); |
210 EXPECT_EQ(0u, extension->GetEffectiveHostPermissions().patterns().size()); | 212 EXPECT_EQ(0u, extension->GetEffectiveHostPermissions().patterns().size()); |
211 EXPECT_FALSE(permissions->HasEffectiveAccessToURL( | 213 EXPECT_FALSE(permissions->HasEffectiveAccessToURL( |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 skip.insert(ExtensionAPIPermission::kFileBrowserHandler); | 492 skip.insert(ExtensionAPIPermission::kFileBrowserHandler); |
491 | 493 |
492 // If you've turned on the experimental command-line flag, we don't need | 494 // If you've turned on the experimental command-line flag, we don't need |
493 // to warn you further. | 495 // to warn you further. |
494 skip.insert(ExtensionAPIPermission::kExperimental); | 496 skip.insert(ExtensionAPIPermission::kExperimental); |
495 | 497 |
496 // These are private. | 498 // These are private. |
497 skip.insert(ExtensionAPIPermission::kWebstorePrivate); | 499 skip.insert(ExtensionAPIPermission::kWebstorePrivate); |
498 skip.insert(ExtensionAPIPermission::kFileBrowserPrivate); | 500 skip.insert(ExtensionAPIPermission::kFileBrowserPrivate); |
499 skip.insert(ExtensionAPIPermission::kMediaPlayerPrivate); | 501 skip.insert(ExtensionAPIPermission::kMediaPlayerPrivate); |
| 502 skip.insert(ExtensionAPIPermission::kChromeAuthPrivate); |
500 skip.insert(ExtensionAPIPermission::kChromePrivate); | 503 skip.insert(ExtensionAPIPermission::kChromePrivate); |
501 skip.insert(ExtensionAPIPermission::kChromeosInfoPrivate); | 504 skip.insert(ExtensionAPIPermission::kChromeosInfoPrivate); |
502 skip.insert(ExtensionAPIPermission::kWebSocketProxyPrivate); | 505 skip.insert(ExtensionAPIPermission::kWebSocketProxyPrivate); |
503 | 506 |
504 // Warned as part of host permissions. | 507 // Warned as part of host permissions. |
505 skip.insert(ExtensionAPIPermission::kDevtools); | 508 skip.insert(ExtensionAPIPermission::kDevtools); |
506 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); | 509 ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); |
507 ExtensionAPIPermissionSet permissions = info->GetAll(); | 510 ExtensionAPIPermissionSet permissions = info->GetAll(); |
508 for (ExtensionAPIPermissionSet::const_iterator i = permissions.begin(); | 511 for (ExtensionAPIPermissionSet::const_iterator i = permissions.begin(); |
509 i != permissions.end(); ++i) { | 512 i != permissions.end(); ++i) { |
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
932 AddPattern(&non_empty_extent, "http://www.google.com/*"); | 935 AddPattern(&non_empty_extent, "http://www.google.com/*"); |
933 | 936 |
934 perm_set = ExtensionPermissionSet( | 937 perm_set = ExtensionPermissionSet( |
935 empty_apis, non_empty_extent, empty_extent); | 938 empty_apis, non_empty_extent, empty_extent); |
936 EXPECT_FALSE(perm_set.IsEmpty()); | 939 EXPECT_FALSE(perm_set.IsEmpty()); |
937 | 940 |
938 perm_set = ExtensionPermissionSet( | 941 perm_set = ExtensionPermissionSet( |
939 empty_apis, empty_extent, non_empty_extent); | 942 empty_apis, empty_extent, non_empty_extent); |
940 EXPECT_FALSE(perm_set.IsEmpty()); | 943 EXPECT_FALSE(perm_set.IsEmpty()); |
941 } | 944 } |
OLD | NEW |