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

Side by Side Diff: chrome/browser/extensions/permission_messages_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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <memory>
7 #include <utility> 8 #include <utility>
8 9
9 #include "base/macros.h" 10 #include "base/macros.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/extensions/extension_service.h" 12 #include "chrome/browser/extensions/extension_service.h"
13 #include "chrome/browser/extensions/permissions_updater.h" 13 #include "chrome/browser/extensions/permissions_updater.h"
14 #include "chrome/browser/extensions/test_extension_environment.h" 14 #include "chrome/browser/extensions/test_extension_environment.h"
15 #include "chrome/common/extensions/permissions/chrome_permission_message_provide r.h" 15 #include "chrome/common/extensions/permissions/chrome_permission_message_provide r.h"
16 #include "chrome/grit/generated_resources.h" 16 #include "chrome/grit/generated_resources.h"
17 #include "chrome/test/base/testing_profile.h" 17 #include "chrome/test/base/testing_profile.h"
18 #include "components/crx_file/id_util.h" 18 #include "components/crx_file/id_util.h"
19 #include "extensions/browser/extension_prefs.h" 19 #include "extensions/browser/extension_prefs.h"
20 #include "extensions/common/extension.h" 20 #include "extensions/common/extension.h"
(...skipping 26 matching lines...) Expand all
47 // be changed as the correct behaviour is implemented. TODOs in the test explain 47 // be changed as the correct behaviour is implemented. TODOs in the test explain
48 // the currently problematic behaviour. 48 // the currently problematic behaviour.
49 class PermissionMessagesUnittest : public testing::Test { 49 class PermissionMessagesUnittest : public testing::Test {
50 public: 50 public:
51 PermissionMessagesUnittest() 51 PermissionMessagesUnittest()
52 : message_provider_(new ChromePermissionMessageProvider()) {} 52 : message_provider_(new ChromePermissionMessageProvider()) {}
53 ~PermissionMessagesUnittest() override {} 53 ~PermissionMessagesUnittest() override {}
54 54
55 protected: 55 protected:
56 void CreateAndInstallExtensionWithPermissions( 56 void CreateAndInstallExtensionWithPermissions(
57 scoped_ptr<base::ListValue> required_permissions, 57 std::unique_ptr<base::ListValue> required_permissions,
58 scoped_ptr<base::ListValue> optional_permissions) { 58 std::unique_ptr<base::ListValue> optional_permissions) {
59 app_ = test_util::BuildExtension(ExtensionBuilder()) 59 app_ = test_util::BuildExtension(ExtensionBuilder())
60 .MergeManifest( 60 .MergeManifest(
61 DictionaryBuilder() 61 DictionaryBuilder()
62 .Set("permissions", std::move(required_permissions)) 62 .Set("permissions", std::move(required_permissions))
63 .Set("optional_permissions", 63 .Set("optional_permissions",
64 std::move(optional_permissions)) 64 std::move(optional_permissions))
65 .Build()) 65 .Build())
66 .SetID(crx_file::id_util::GenerateId("extension")) 66 .SetID(crx_file::id_util::GenerateId("extension"))
67 .SetLocation(Manifest::INTERNAL) 67 .SetLocation(Manifest::INTERNAL)
68 .Build(); 68 .Build();
69 env_.GetExtensionService()->AddExtension(app_.get()); 69 env_.GetExtensionService()->AddExtension(app_.get());
70 } 70 }
71 71
72 // Returns the permission messages that would display in the prompt that 72 // Returns the permission messages that would display in the prompt that
73 // requests all the optional permissions for the current |app_|. 73 // requests all the optional permissions for the current |app_|.
74 std::vector<base::string16> GetOptionalPermissionMessages() { 74 std::vector<base::string16> GetOptionalPermissionMessages() {
75 scoped_ptr<const PermissionSet> granted_permissions = 75 std::unique_ptr<const PermissionSet> granted_permissions =
76 env_.GetExtensionPrefs()->GetGrantedPermissions(app_->id()); 76 env_.GetExtensionPrefs()->GetGrantedPermissions(app_->id());
77 const PermissionSet& optional_permissions = 77 const PermissionSet& optional_permissions =
78 PermissionsParser::GetOptionalPermissions(app_.get()); 78 PermissionsParser::GetOptionalPermissions(app_.get());
79 scoped_ptr<const PermissionSet> requested_permissions = 79 std::unique_ptr<const PermissionSet> requested_permissions =
80 PermissionSet::CreateDifference(optional_permissions, 80 PermissionSet::CreateDifference(optional_permissions,
81 *granted_permissions); 81 *granted_permissions);
82 return GetMessages(*requested_permissions); 82 return GetMessages(*requested_permissions);
83 } 83 }
84 84
85 void GrantOptionalPermissions() { 85 void GrantOptionalPermissions() {
86 PermissionsUpdater perms_updater(env_.profile()); 86 PermissionsUpdater perms_updater(env_.profile());
87 perms_updater.AddPermissions( 87 perms_updater.AddPermissions(
88 app_.get(), PermissionsParser::GetOptionalPermissions(app_.get())); 88 app_.get(), PermissionsParser::GetOptionalPermissions(app_.get()));
89 } 89 }
(...skipping 16 matching lines...) Expand all
106 for (const PermissionMessage& msg : 106 for (const PermissionMessage& msg :
107 message_provider_->GetPermissionMessages( 107 message_provider_->GetPermissionMessages(
108 message_provider_->GetAllPermissionIDs(permissions, 108 message_provider_->GetAllPermissionIDs(permissions,
109 app_->GetType()))) { 109 app_->GetType()))) {
110 messages.push_back(msg.message()); 110 messages.push_back(msg.message());
111 } 111 }
112 return messages; 112 return messages;
113 } 113 }
114 114
115 extensions::TestExtensionEnvironment env_; 115 extensions::TestExtensionEnvironment env_;
116 scoped_ptr<ChromePermissionMessageProvider> message_provider_; 116 std::unique_ptr<ChromePermissionMessageProvider> message_provider_;
117 scoped_refptr<const Extension> app_; 117 scoped_refptr<const Extension> app_;
118 118
119 DISALLOW_COPY_AND_ASSIGN(PermissionMessagesUnittest); 119 DISALLOW_COPY_AND_ASSIGN(PermissionMessagesUnittest);
120 }; 120 };
121 121
122 // If an app has both the 'history' and 'tabs' permission, one should hide the 122 // If an app has both the 'history' and 'tabs' permission, one should hide the
123 // other (the 'history' permission has superset permissions). 123 // other (the 'history' permission has superset permissions).
124 TEST_F(PermissionMessagesUnittest, HistoryHidesTabsMessage) { 124 TEST_F(PermissionMessagesUnittest, HistoryHidesTabsMessage) {
125 CreateAndInstallExtensionWithPermissions( 125 CreateAndInstallExtensionWithPermissions(
126 ListBuilder().Append("tabs").Append("history").Build(), 126 ListBuilder().Append("tabs").Append("history").Build(),
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 public: 249 public:
250 USBDevicePermissionMessagesTest() 250 USBDevicePermissionMessagesTest()
251 : message_provider_(new ChromePermissionMessageProvider()) {} 251 : message_provider_(new ChromePermissionMessageProvider()) {}
252 ~USBDevicePermissionMessagesTest() override {} 252 ~USBDevicePermissionMessagesTest() override {}
253 253
254 PermissionMessages GetMessages(const PermissionIDSet& permissions) { 254 PermissionMessages GetMessages(const PermissionIDSet& permissions) {
255 return message_provider_->GetPermissionMessages(permissions); 255 return message_provider_->GetPermissionMessages(permissions);
256 } 256 }
257 257
258 private: 258 private:
259 scoped_ptr<ChromePermissionMessageProvider> message_provider_; 259 std::unique_ptr<ChromePermissionMessageProvider> message_provider_;
260 }; 260 };
261 261
262 TEST_F(USBDevicePermissionMessagesTest, SingleDevice) { 262 TEST_F(USBDevicePermissionMessagesTest, SingleDevice) {
263 { 263 {
264 const char kMessage[] = 264 const char kMessage[] =
265 "Access any PVR Mass Storage from HUMAX Co., Ltd. via USB"; 265 "Access any PVR Mass Storage from HUMAX Co., Ltd. via USB";
266 266
267 scoped_ptr<base::ListValue> permission_list(new base::ListValue()); 267 std::unique_ptr<base::ListValue> permission_list(new base::ListValue());
268 permission_list->Append( 268 permission_list->Append(
269 UsbDevicePermissionData(0x02ad, 0x138c, -1).ToValue().release()); 269 UsbDevicePermissionData(0x02ad, 0x138c, -1).ToValue().release());
270 270
271 UsbDevicePermission permission( 271 UsbDevicePermission permission(
272 PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); 272 PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice));
273 ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); 273 ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL));
274 274
275 PermissionMessages messages = GetMessages(permission.GetPermissions()); 275 PermissionMessages messages = GetMessages(permission.GetPermissions());
276 ASSERT_EQ(1U, messages.size()); 276 ASSERT_EQ(1U, messages.size());
277 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); 277 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message());
278 } 278 }
279 { 279 {
280 const char kMessage[] = "Access USB devices from HUMAX Co., Ltd."; 280 const char kMessage[] = "Access USB devices from HUMAX Co., Ltd.";
281 281
282 scoped_ptr<base::ListValue> permission_list(new base::ListValue()); 282 std::unique_ptr<base::ListValue> permission_list(new base::ListValue());
283 permission_list->Append( 283 permission_list->Append(
284 UsbDevicePermissionData(0x02ad, 0x138d, -1).ToValue().release()); 284 UsbDevicePermissionData(0x02ad, 0x138d, -1).ToValue().release());
285 285
286 UsbDevicePermission permission( 286 UsbDevicePermission permission(
287 PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); 287 PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice));
288 ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); 288 ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL));
289 289
290 PermissionMessages messages = GetMessages(permission.GetPermissions()); 290 PermissionMessages messages = GetMessages(permission.GetPermissions());
291 ASSERT_EQ(1U, messages.size()); 291 ASSERT_EQ(1U, messages.size());
292 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); 292 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message());
293 } 293 }
294 { 294 {
295 const char kMessage[] = "Access USB devices from an unknown vendor"; 295 const char kMessage[] = "Access USB devices from an unknown vendor";
296 296
297 scoped_ptr<base::ListValue> permission_list(new base::ListValue()); 297 std::unique_ptr<base::ListValue> permission_list(new base::ListValue());
298 permission_list->Append( 298 permission_list->Append(
299 UsbDevicePermissionData(0x02ae, 0x138d, -1).ToValue().release()); 299 UsbDevicePermissionData(0x02ae, 0x138d, -1).ToValue().release());
300 300
301 UsbDevicePermission permission( 301 UsbDevicePermission permission(
302 PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice)); 302 PermissionsInfo::GetInstance()->GetByID(APIPermission::kUsbDevice));
303 ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL)); 303 ASSERT_TRUE(permission.FromValue(permission_list.get(), NULL, NULL));
304 304
305 PermissionMessages messages = GetMessages(permission.GetPermissions()); 305 PermissionMessages messages = GetMessages(permission.GetPermissions());
306 ASSERT_EQ(1U, messages.size()); 306 ASSERT_EQ(1U, messages.size());
307 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); 307 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message());
308 } 308 }
309 } 309 }
310 310
311 TEST_F(USBDevicePermissionMessagesTest, MultipleDevice) { 311 TEST_F(USBDevicePermissionMessagesTest, MultipleDevice) {
312 const char kMessage[] = "Access any of these USB devices"; 312 const char kMessage[] = "Access any of these USB devices";
313 const char* kDetails[] = { 313 const char* kDetails[] = {
314 "PVR Mass Storage from HUMAX Co., Ltd.", 314 "PVR Mass Storage from HUMAX Co., Ltd.",
315 "unknown devices from HUMAX Co., Ltd.", 315 "unknown devices from HUMAX Co., Ltd.",
316 "devices from an unknown vendor" 316 "devices from an unknown vendor"
317 }; 317 };
318 318
319 // Prepare data set 319 // Prepare data set
320 scoped_ptr<base::ListValue> permission_list(new base::ListValue()); 320 std::unique_ptr<base::ListValue> permission_list(new base::ListValue());
321 permission_list->Append( 321 permission_list->Append(
322 UsbDevicePermissionData(0x02ad, 0x138c, -1).ToValue().release()); 322 UsbDevicePermissionData(0x02ad, 0x138c, -1).ToValue().release());
323 // This device's product ID is not in Chrome's database. 323 // This device's product ID is not in Chrome's database.
324 permission_list->Append( 324 permission_list->Append(
325 UsbDevicePermissionData(0x02ad, 0x138d, -1).ToValue().release()); 325 UsbDevicePermissionData(0x02ad, 0x138d, -1).ToValue().release());
326 // This additional unknown product will be collapsed into the entry above. 326 // This additional unknown product will be collapsed into the entry above.
327 permission_list->Append( 327 permission_list->Append(
328 UsbDevicePermissionData(0x02ad, 0x138e, -1).ToValue().release()); 328 UsbDevicePermissionData(0x02ad, 0x138e, -1).ToValue().release());
329 // This device's vendor ID is not in Chrome's database. 329 // This device's vendor ID is not in Chrome's database.
330 permission_list->Append( 330 permission_list->Append(
(...skipping 10 matching lines...) Expand all
341 ASSERT_EQ(1U, messages.size()); 341 ASSERT_EQ(1U, messages.size());
342 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); 342 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message());
343 const std::vector<base::string16>& submessages = 343 const std::vector<base::string16>& submessages =
344 messages.front().submessages(); 344 messages.front().submessages();
345 ASSERT_EQ(arraysize(kDetails), submessages.size()); 345 ASSERT_EQ(arraysize(kDetails), submessages.size());
346 for (size_t i = 0; i < submessages.size(); i++) 346 for (size_t i = 0; i < submessages.size(); i++)
347 EXPECT_EQ(base::ASCIIToUTF16(kDetails[i]), submessages[i]); 347 EXPECT_EQ(base::ASCIIToUTF16(kDetails[i]), submessages[i]);
348 } 348 }
349 349
350 } // namespace extensions 350 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698