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

Side by Side Diff: chrome/browser/extensions/permissions_updater_unittest.cc

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix header Created 4 years, 8 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
OLDNEW
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 "chrome/browser/extensions/permissions_updater.h" 5 #include "chrome/browser/extensions/permissions_updater.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/json/json_file_value_serializer.h" 10 #include "base/json/json_file_value_serializer.h"
11 #include "base/memory/ptr_util.h"
11 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
12 #include "base/run_loop.h" 13 #include "base/run_loop.h"
13 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
14 #include "base/values.h" 15 #include "base/values.h"
15 #include "chrome/browser/chrome_notification_types.h" 16 #include "chrome/browser/chrome_notification_types.h"
16 #include "chrome/browser/extensions/extension_service.h" 17 #include "chrome/browser/extensions/extension_service.h"
17 #include "chrome/browser/extensions/extension_service_test_base.h" 18 #include "chrome/browser/extensions/extension_service_test_base.h"
18 #include "chrome/browser/extensions/extension_util.h" 19 #include "chrome/browser/extensions/extension_util.h"
19 #include "chrome/common/chrome_paths.h" 20 #include "chrome/common/chrome_paths.h"
20 #include "chrome/common/extensions/extension_test_util.h" 21 #include "chrome/common/extensions/extension_test_util.h"
(...skipping 11 matching lines...) Expand all
32 #include "extensions/common/value_builder.h" 33 #include "extensions/common/value_builder.h"
33 #include "testing/gtest/include/gtest/gtest.h" 34 #include "testing/gtest/include/gtest/gtest.h"
34 35
35 using extension_test_util::LoadManifest; 36 using extension_test_util::LoadManifest;
36 37
37 namespace extensions { 38 namespace extensions {
38 39
39 namespace { 40 namespace {
40 41
41 scoped_refptr<const Extension> CreateExtensionWithOptionalPermissions( 42 scoped_refptr<const Extension> CreateExtensionWithOptionalPermissions(
42 scoped_ptr<base::Value> optional_permissions, 43 std::unique_ptr<base::Value> optional_permissions,
43 scoped_ptr<base::Value> permissions, 44 std::unique_ptr<base::Value> permissions,
44 const std::string& name) { 45 const std::string& name) {
45 return ExtensionBuilder() 46 return ExtensionBuilder()
46 .SetLocation(Manifest::INTERNAL) 47 .SetLocation(Manifest::INTERNAL)
47 .SetManifest( 48 .SetManifest(
48 DictionaryBuilder() 49 DictionaryBuilder()
49 .Set("name", name) 50 .Set("name", name)
50 .Set("description", "foo") 51 .Set("description", "foo")
51 .Set("manifest_version", 2) 52 .Set("manifest_version", 2)
52 .Set("version", "0.1.2.3") 53 .Set("version", "0.1.2.3")
53 .Set("permissions", std::move(permissions)) 54 .Set("permissions", std::move(permissions))
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 if (waiting_) { 104 if (waiting_) {
104 waiting_ = false; 105 waiting_ = false;
105 base::MessageLoopForUI::current()->QuitWhenIdle(); 106 base::MessageLoopForUI::current()->QuitWhenIdle();
106 } 107 }
107 } 108 }
108 109
109 bool received_notification_; 110 bool received_notification_;
110 bool waiting_; 111 bool waiting_;
111 content::NotificationRegistrar registrar_; 112 content::NotificationRegistrar registrar_;
112 scoped_refptr<const Extension> extension_; 113 scoped_refptr<const Extension> extension_;
113 scoped_ptr<const PermissionSet> permissions_; 114 std::unique_ptr<const PermissionSet> permissions_;
114 UpdatedExtensionPermissionsInfo::Reason reason_; 115 UpdatedExtensionPermissionsInfo::Reason reason_;
115 }; 116 };
116 117
117 class PermissionsUpdaterTest : public ExtensionServiceTestBase { 118 class PermissionsUpdaterTest : public ExtensionServiceTestBase {
118 }; 119 };
119 120
120 scoped_refptr<Extension> LoadOurManifest() { 121 scoped_refptr<Extension> LoadOurManifest() {
121 base::FilePath path; 122 base::FilePath path;
122 path = path.AppendASCII("api_test") 123 path = path.AppendASCII("api_test")
123 .AppendASCII("permissions") 124 .AppendASCII("permissions")
(...skipping 28 matching lines...) Expand all
152 URLPatternSet default_hosts; 153 URLPatternSet default_hosts;
153 AddPattern(&default_hosts, "http://a.com/*"); 154 AddPattern(&default_hosts, "http://a.com/*");
154 PermissionSet default_permissions(default_apis, empty_manifest_permissions, 155 PermissionSet default_permissions(default_apis, empty_manifest_permissions,
155 default_hosts, URLPatternSet()); 156 default_hosts, URLPatternSet());
156 157
157 // Make sure it loaded properly. 158 // Make sure it loaded properly.
158 ASSERT_EQ(default_permissions, 159 ASSERT_EQ(default_permissions,
159 extension->permissions_data()->active_permissions()); 160 extension->permissions_data()->active_permissions());
160 161
161 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_.get()); 162 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile_.get());
162 scoped_ptr<const PermissionSet> active_permissions; 163 std::unique_ptr<const PermissionSet> active_permissions;
163 scoped_ptr<const PermissionSet> granted_permissions; 164 std::unique_ptr<const PermissionSet> granted_permissions;
164 165
165 // Add a few permissions. 166 // Add a few permissions.
166 APIPermissionSet apis; 167 APIPermissionSet apis;
167 apis.insert(APIPermission::kNotifications); 168 apis.insert(APIPermission::kNotifications);
168 URLPatternSet hosts; 169 URLPatternSet hosts;
169 AddPattern(&hosts, "http://*.c.com/*"); 170 AddPattern(&hosts, "http://*.c.com/*");
170 171
171 { 172 {
172 PermissionSet delta(apis, empty_manifest_permissions, hosts, 173 PermissionSet delta(apis, empty_manifest_permissions, hosts,
173 URLPatternSet()); 174 URLPatternSet());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 } 233 }
233 234
234 TEST_F(PermissionsUpdaterTest, RevokingPermissions) { 235 TEST_F(PermissionsUpdaterTest, RevokingPermissions) {
235 InitializeEmptyExtensionService(); 236 InitializeEmptyExtensionService();
236 237
237 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); 238 ExtensionPrefs* prefs = ExtensionPrefs::Get(profile());
238 239
239 auto api_permission_set = [](APIPermission::ID id) { 240 auto api_permission_set = [](APIPermission::ID id) {
240 APIPermissionSet apis; 241 APIPermissionSet apis;
241 apis.insert(id); 242 apis.insert(id);
242 return make_scoped_ptr(new PermissionSet(apis, ManifestPermissionSet(), 243 return base::WrapUnique(new PermissionSet(
243 URLPatternSet(), URLPatternSet())); 244 apis, ManifestPermissionSet(), URLPatternSet(), URLPatternSet()));
244 }; 245 };
245 246
246 auto url_permission_set = [](const GURL& url) { 247 auto url_permission_set = [](const GURL& url) {
247 URLPatternSet set; 248 URLPatternSet set;
248 URLPattern pattern(URLPattern::SCHEME_ALL, url.spec()); 249 URLPattern pattern(URLPattern::SCHEME_ALL, url.spec());
249 set.AddPattern(pattern); 250 set.AddPattern(pattern);
250 return make_scoped_ptr(new PermissionSet( 251 return base::WrapUnique(new PermissionSet(
251 APIPermissionSet(), ManifestPermissionSet(), set, URLPatternSet())); 252 APIPermissionSet(), ManifestPermissionSet(), set, URLPatternSet()));
252 }; 253 };
253 254
254 { 255 {
255 // Test revoking optional permissions. 256 // Test revoking optional permissions.
256 ListBuilder optional_permissions; 257 ListBuilder optional_permissions;
257 optional_permissions.Append("tabs").Append("cookies").Append("management"); 258 optional_permissions.Append("tabs").Append("cookies").Append("management");
258 ListBuilder required_permissions; 259 ListBuilder required_permissions;
259 required_permissions.Append("topSites"); 260 required_permissions.Append("topSites");
260 scoped_refptr<const Extension> extension = 261 scoped_refptr<const Extension> extension =
261 CreateExtensionWithOptionalPermissions(optional_permissions.Build(), 262 CreateExtensionWithOptionalPermissions(optional_permissions.Build(),
262 required_permissions.Build(), 263 required_permissions.Build(),
263 "My Extension"); 264 "My Extension");
264 265
265 PermissionsUpdater updater(profile()); 266 PermissionsUpdater updater(profile());
266 EXPECT_TRUE(updater.GetRevokablePermissions(extension.get())->IsEmpty()); 267 EXPECT_TRUE(updater.GetRevokablePermissions(extension.get())->IsEmpty());
267 268
268 // Add the optional "cookies" permission. 269 // Add the optional "cookies" permission.
269 updater.AddPermissions(extension.get(), 270 updater.AddPermissions(extension.get(),
270 *api_permission_set(APIPermission::kCookie)); 271 *api_permission_set(APIPermission::kCookie));
271 const PermissionsData* permissions = extension->permissions_data(); 272 const PermissionsData* permissions = extension->permissions_data();
272 // The extension should have the permission in its active permissions and 273 // The extension should have the permission in its active permissions and
273 // its granted permissions (stored in prefs). And, the permission should 274 // its granted permissions (stored in prefs). And, the permission should
274 // be revokable. 275 // be revokable.
275 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kCookie)); 276 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kCookie));
276 scoped_ptr<const PermissionSet> granted_permissions = 277 std::unique_ptr<const PermissionSet> granted_permissions =
277 prefs->GetGrantedPermissions(extension->id()); 278 prefs->GetGrantedPermissions(extension->id());
278 EXPECT_TRUE(granted_permissions->HasAPIPermission(APIPermission::kCookie)); 279 EXPECT_TRUE(granted_permissions->HasAPIPermission(APIPermission::kCookie));
279 EXPECT_TRUE(updater.GetRevokablePermissions(extension.get()) 280 EXPECT_TRUE(updater.GetRevokablePermissions(extension.get())
280 ->HasAPIPermission(APIPermission::kCookie)); 281 ->HasAPIPermission(APIPermission::kCookie));
281 282
282 // Repeat with "tabs". 283 // Repeat with "tabs".
283 updater.AddPermissions(extension.get(), 284 updater.AddPermissions(extension.get(),
284 *api_permission_set(APIPermission::kTab)); 285 *api_permission_set(APIPermission::kTab));
285 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kTab)); 286 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kTab));
286 granted_permissions = prefs->GetGrantedPermissions(extension->id()); 287 granted_permissions = prefs->GetGrantedPermissions(extension->id());
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 ->active_permissions() 358 ->active_permissions()
358 .HasExplicitAccessToOrigin(kOrigin)); 359 .HasExplicitAccessToOrigin(kOrigin));
359 EXPECT_TRUE(extension->permissions_data() 360 EXPECT_TRUE(extension->permissions_data()
360 ->withheld_permissions() 361 ->withheld_permissions()
361 .HasExplicitAccessToOrigin(kOrigin)); 362 .HasExplicitAccessToOrigin(kOrigin));
362 EXPECT_TRUE(updater.GetRevokablePermissions(extension.get())->IsEmpty()); 363 EXPECT_TRUE(updater.GetRevokablePermissions(extension.get())->IsEmpty());
363 } 364 }
364 } 365 }
365 366
366 } // namespace extensions 367 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/permissions_updater.cc ('k') | chrome/browser/extensions/policy_handlers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698