OLD | NEW |
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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
7 #include "chrome/browser/extensions/extension_service.h" | 7 #include "chrome/browser/extensions/extension_service.h" |
8 #include "chrome/browser/extensions/permissions_updater.h" | 8 #include "chrome/browser/extensions/permissions_updater.h" |
9 #include "chrome/browser/extensions/test_extension_environment.h" | 9 #include "chrome/browser/extensions/test_extension_environment.h" |
10 #include "chrome/common/extensions/permissions/chrome_permission_message_provide
r.h" | 10 #include "chrome/common/extensions/permissions/chrome_permission_message_provide
r.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 .Set("optional_permissions", optional_permissions)) | 71 .Set("optional_permissions", optional_permissions)) |
72 .SetID(crx_file::id_util::GenerateId("extension")) | 72 .SetID(crx_file::id_util::GenerateId("extension")) |
73 .SetLocation(Manifest::INTERNAL) | 73 .SetLocation(Manifest::INTERNAL) |
74 .Build(); | 74 .Build(); |
75 env_.GetExtensionService()->AddExtension(app_.get()); | 75 env_.GetExtensionService()->AddExtension(app_.get()); |
76 } | 76 } |
77 | 77 |
78 // Returns the permission messages that would display in the prompt that | 78 // Returns the permission messages that would display in the prompt that |
79 // requests all the optional permissions for the current |app_|. | 79 // requests all the optional permissions for the current |app_|. |
80 std::vector<base::string16> GetOptionalPermissionMessages() { | 80 std::vector<base::string16> GetOptionalPermissionMessages() { |
81 scoped_refptr<const PermissionSet> granted_permissions = | 81 scoped_ptr<const PermissionSet> granted_permissions = |
82 env_.GetExtensionPrefs()->GetGrantedPermissions(app_->id()); | 82 env_.GetExtensionPrefs()->GetGrantedPermissions(app_->id()); |
83 scoped_refptr<const PermissionSet> optional_permissions = | 83 const PermissionSet* optional_permissions = |
84 PermissionsParser::GetOptionalPermissions(app_.get()); | 84 PermissionsParser::GetOptionalPermissions(app_.get()); |
85 scoped_refptr<const PermissionSet> requested_permissions = | 85 scoped_ptr<const PermissionSet> requested_permissions = |
86 PermissionSet::CreateDifference(*optional_permissions, | 86 PermissionSet::CreateDifference(*optional_permissions, |
87 *granted_permissions); | 87 *granted_permissions); |
88 return GetMessages(requested_permissions); | 88 return GetMessages(*requested_permissions); |
89 } | 89 } |
90 | 90 |
91 void GrantOptionalPermissions() { | 91 void GrantOptionalPermissions() { |
92 PermissionsUpdater perms_updater(env_.profile()); | 92 PermissionsUpdater perms_updater(env_.profile()); |
93 perms_updater.AddPermissions( | 93 perms_updater.AddPermissions( |
94 app_.get(), | 94 app_.get(), PermissionsParser::GetOptionalPermissions(app_.get())); |
95 PermissionsParser::GetOptionalPermissions(app_.get()).get()); | |
96 } | 95 } |
97 | 96 |
98 std::vector<base::string16> active_permissions() { | 97 std::vector<base::string16> active_permissions() { |
99 return GetMessages(app_->permissions_data()->active_permissions()); | 98 return GetMessages(*app_->permissions_data()->active_permissions()); |
100 } | 99 } |
101 | 100 |
102 std::vector<base::string16> required_permissions() { | 101 std::vector<base::string16> required_permissions() { |
103 return GetMessages(PermissionsParser::GetRequiredPermissions(app_.get())); | 102 return GetMessages(*PermissionsParser::GetRequiredPermissions(app_.get())); |
104 } | 103 } |
105 | 104 |
106 std::vector<base::string16> optional_permissions() { | 105 std::vector<base::string16> optional_permissions() { |
107 return GetMessages(PermissionsParser::GetOptionalPermissions(app_.get())); | 106 return GetMessages(*PermissionsParser::GetOptionalPermissions(app_.get())); |
108 } | 107 } |
109 | 108 |
110 private: | 109 private: |
111 std::vector<base::string16> GetMessages( | 110 std::vector<base::string16> GetMessages(const PermissionSet& permissions) { |
112 scoped_refptr<const PermissionSet> permissions) { | |
113 std::vector<base::string16> messages; | 111 std::vector<base::string16> messages; |
114 for (const PermissionMessage& msg : | 112 for (const PermissionMessage& msg : |
115 message_provider_->GetPermissionMessages( | 113 message_provider_->GetPermissionMessages( |
116 message_provider_->GetAllPermissionIDs(permissions.get(), | 114 message_provider_->GetAllPermissionIDs(&permissions, |
117 app_->GetType()))) { | 115 app_->GetType()))) { |
118 messages.push_back(msg.message()); | 116 messages.push_back(msg.message()); |
119 } | 117 } |
120 return messages; | 118 return messages; |
121 } | 119 } |
122 | 120 |
123 extensions::TestExtensionEnvironment env_; | 121 extensions::TestExtensionEnvironment env_; |
124 scoped_ptr<ChromePermissionMessageProvider> message_provider_; | 122 scoped_ptr<ChromePermissionMessageProvider> message_provider_; |
125 scoped_refptr<const Extension> app_; | 123 scoped_refptr<const Extension> app_; |
126 | 124 |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 ASSERT_EQ(1U, messages.size()); | 347 ASSERT_EQ(1U, messages.size()); |
350 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); | 348 EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message()); |
351 const std::vector<base::string16>& submessages = | 349 const std::vector<base::string16>& submessages = |
352 messages.front().submessages(); | 350 messages.front().submessages(); |
353 ASSERT_EQ(arraysize(kDetails), submessages.size()); | 351 ASSERT_EQ(arraysize(kDetails), submessages.size()); |
354 for (size_t i = 0; i < submessages.size(); i++) | 352 for (size_t i = 0; i < submessages.size(); i++) |
355 EXPECT_EQ(base::ASCIIToUTF16(kDetails[i]), submessages[i]); | 353 EXPECT_EQ(base::ASCIIToUTF16(kDetails[i]), submessages[i]); |
356 } | 354 } |
357 | 355 |
358 } // namespace extensions | 356 } // namespace extensions |
OLD | NEW |