| 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 |