Chromium Code Reviews| Index: extensions/common/permissions/socket_permission.cc |
| diff --git a/extensions/common/permissions/socket_permission.cc b/extensions/common/permissions/socket_permission.cc |
| index 53c835bccd92b0863937fcf7cbef306e810e0067..f457248e0007504d4c7b0e78f9b9e3be263a3d60 100644 |
| --- a/extensions/common/permissions/socket_permission.cc |
| +++ b/extensions/common/permissions/socket_permission.cc |
| @@ -21,18 +21,34 @@ SocketPermission::SocketPermission(const APIPermissionInfo* info) |
| SocketPermission::~SocketPermission() {} |
| +PermissionIDSet SocketPermission::GetPermissions() const { |
| + PermissionMessages messages; |
| + PermissionIDSet ids; |
| + AddAllHostMessages(messages, ids); |
| + return ids; |
| +} |
| + |
| PermissionMessages SocketPermission::GetMessages() const { |
| DCHECK(HasMessages()); |
| - PermissionMessages result; |
| - if (!AddAnyHostMessage(result)) { |
| - AddSpecificHostMessage(result); |
| - AddSubdomainHostMessage(result); |
| + PermissionMessages messages; |
| + PermissionIDSet ids; |
| + AddAllHostMessages(messages, ids); |
| + return messages; |
| +} |
| + |
| +void SocketPermission::AddAllHostMessages(PermissionMessages& messages, |
| + PermissionIDSet& ids) const { |
| + // TODO(rpaquay): This function and callees is (almost) a copy/paste from |
|
Yoyo Zhou
2014/12/11 00:54:11
Do you have thoughts on unifying these? I really g
sashab
2014/12/11 04:15:36
I have some ideas; let's do it in a follow-up patc
|
| + // extensions::SocketsManifestPermission. |
| + if (!AddAnyHostMessage(messages, ids)) { |
| + AddSpecificHostMessage(messages, ids); |
| + AddSubdomainHostMessage(messages, ids); |
| } |
| - AddNetworkListMessage(result); |
| - return result; |
| + AddNetworkListMessage(messages, ids); |
| } |
| -bool SocketPermission::AddAnyHostMessage(PermissionMessages& messages) const { |
| +bool SocketPermission::AddAnyHostMessage(PermissionMessages& messages, |
| + PermissionIDSet& ids) const { |
| std::set<SocketPermissionData>::const_iterator i; |
| for (i = data_set_.begin(); i != data_set_.end(); ++i) { |
| if (i->entry().IsAddressBoundType() && |
| @@ -41,14 +57,15 @@ bool SocketPermission::AddAnyHostMessage(PermissionMessages& messages) const { |
| PermissionMessage(PermissionMessage::kSocketAnyHost, |
| l10n_util::GetStringUTF16( |
| IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST))); |
| + ids.insert(APIPermission::kSocketAnyHost); |
| return true; |
| } |
| } |
| return false; |
| } |
| -void SocketPermission::AddSubdomainHostMessage( |
| - PermissionMessages& messages) const { |
| +void SocketPermission::AddSubdomainHostMessage(PermissionMessages& messages, |
| + PermissionIDSet& ids) const { |
| std::set<base::string16> domains; |
| std::set<SocketPermissionData>::const_iterator i; |
| for (i = data_set_.begin(); i != data_set_.end(); ++i) { |
| @@ -66,11 +83,13 @@ void SocketPermission::AddSubdomainHostMessage( |
| JoinString( |
| std::vector<base::string16>(domains.begin(), domains.end()), |
| ' ')))); |
| + for (const auto& domain : domains) |
| + ids.insert(APIPermission::kSocketDomainHosts, domain); |
| } |
| } |
| -void SocketPermission::AddSpecificHostMessage( |
| - PermissionMessages& messages) const { |
| +void SocketPermission::AddSpecificHostMessage(PermissionMessages& messages, |
| + PermissionIDSet& ids) const { |
| std::set<base::string16> hostnames; |
| std::set<SocketPermissionData>::const_iterator i; |
| for (i = data_set_.begin(); i != data_set_.end(); ++i) { |
| @@ -88,11 +107,13 @@ void SocketPermission::AddSpecificHostMessage( |
| JoinString( |
| std::vector<base::string16>(hostnames.begin(), hostnames.end()), |
| ' ')))); |
| + for (const auto& hostname : hostnames) |
| + ids.insert(APIPermission::kSocketSpecificHosts, hostname); |
| } |
| } |
| -void SocketPermission::AddNetworkListMessage( |
| - PermissionMessages& messages) const { |
| +void SocketPermission::AddNetworkListMessage(PermissionMessages& messages, |
| + PermissionIDSet& ids) const { |
| std::set<SocketPermissionData>::const_iterator i; |
| for (i = data_set_.begin(); i != data_set_.end(); ++i) { |
| if (i->entry().pattern().type == |
| @@ -101,6 +122,7 @@ void SocketPermission::AddNetworkListMessage( |
| PermissionMessage(PermissionMessage::kNetworkState, |
| l10n_util::GetStringUTF16( |
| IDS_EXTENSION_PROMPT_WARNING_NETWORK_STATE))); |
| + ids.insert(APIPermission::kNetworkState); |
| } |
| } |
| } |