| OLD | NEW |
| 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/common/extensions/permissions/socket_permission.h" | 5 #include "chrome/common/extensions/permissions/socket_permission.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 SocketPermission::~SocketPermission() { | 23 SocketPermission::~SocketPermission() { |
| 24 } | 24 } |
| 25 | 25 |
| 26 PermissionMessages SocketPermission::GetMessages() const { | 26 PermissionMessages SocketPermission::GetMessages() const { |
| 27 DCHECK(HasMessages()); | 27 DCHECK(HasMessages()); |
| 28 PermissionMessages result; | 28 PermissionMessages result; |
| 29 if (!AddAnyHostMessage(result)) { | 29 if (!AddAnyHostMessage(result)) { |
| 30 AddSpecificHostMessage(result); | 30 AddSpecificHostMessage(result); |
| 31 AddSubdomainHostMessage(result); | 31 AddSubdomainHostMessage(result); |
| 32 } | 32 } |
| 33 AddNetworkListMessage(result); |
| 33 return result; | 34 return result; |
| 34 } | 35 } |
| 35 | 36 |
| 36 bool SocketPermission::AddAnyHostMessage(PermissionMessages& messages) | 37 bool SocketPermission::AddAnyHostMessage(PermissionMessages& messages) const { |
| 37 const { | |
| 38 std::set<SocketPermissionData>::const_iterator i; | 38 std::set<SocketPermissionData>::const_iterator i; |
| 39 for (i = data_set_.begin(); i != data_set_.end(); ++i) { | 39 for (i = data_set_.begin(); i != data_set_.end(); ++i) { |
| 40 if (i->GetHostType() == SocketPermissionData::ANY_HOST) { | 40 if (i->IsAddressBoundType() && |
| 41 i->GetHostType() == SocketPermissionData::ANY_HOST) { |
| 41 messages.push_back(PermissionMessage( | 42 messages.push_back(PermissionMessage( |
| 42 PermissionMessage::kSocketAnyHost, | 43 PermissionMessage::kSocketAnyHost, |
| 43 l10n_util::GetStringUTF16( | 44 l10n_util::GetStringUTF16( |
| 44 IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST))); | 45 IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST))); |
| 45 return true; | 46 return true; |
| 46 } | 47 } |
| 47 } | 48 } |
| 48 return false; | 49 return false; |
| 49 } | 50 } |
| 50 | 51 |
| 51 void SocketPermission::AddSubdomainHostMessage(PermissionMessages& messages) | 52 void SocketPermission::AddSubdomainHostMessage( |
| 52 const { | 53 PermissionMessages& messages) const { |
| 53 std::set<string16> domains; | 54 std::set<string16> domains; |
| 54 std::set<SocketPermissionData>::const_iterator i; | 55 std::set<SocketPermissionData>::const_iterator i; |
| 55 for (i = data_set_.begin(); i != data_set_.end(); ++i) { | 56 for (i = data_set_.begin(); i != data_set_.end(); ++i) { |
| 56 if (i->GetHostType() == SocketPermissionData::HOSTS_IN_DOMAINS) | 57 if (i->GetHostType() == SocketPermissionData::HOSTS_IN_DOMAINS) |
| 57 domains.insert(UTF8ToUTF16(i->GetHost())); | 58 domains.insert(UTF8ToUTF16(i->GetHost())); |
| 58 } | 59 } |
| 59 if (!domains.empty()) { | 60 if (!domains.empty()) { |
| 60 int id = (domains.size() == 1) ? | 61 int id = (domains.size() == 1) ? |
| 61 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN : | 62 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN : |
| 62 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS; | 63 IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS; |
| 63 messages.push_back(PermissionMessage( | 64 messages.push_back(PermissionMessage( |
| 64 PermissionMessage::kSocketDomainHosts, | 65 PermissionMessage::kSocketDomainHosts, |
| 65 l10n_util::GetStringFUTF16( | 66 l10n_util::GetStringFUTF16( |
| 66 id, | 67 id, |
| 67 JoinString( | 68 JoinString( |
| 68 std::vector<string16>( | 69 std::vector<string16>( |
| 69 domains.begin(), domains.end()), ' ')))); | 70 domains.begin(), domains.end()), ' ')))); |
| 70 } | 71 } |
| 71 } | 72 } |
| 72 | 73 |
| 73 void SocketPermission::AddSpecificHostMessage(PermissionMessages& messages) | 74 void SocketPermission::AddSpecificHostMessage( |
| 74 const { | 75 PermissionMessages& messages) const { |
| 75 std::set<string16> hostnames; | 76 std::set<string16> hostnames; |
| 76 std::set<SocketPermissionData>::const_iterator i; | 77 std::set<SocketPermissionData>::const_iterator i; |
| 77 for (i = data_set_.begin(); i != data_set_.end(); ++i) { | 78 for (i = data_set_.begin(); i != data_set_.end(); ++i) { |
| 78 if (i->GetHostType() == SocketPermissionData::SPECIFIC_HOSTS) | 79 if (i->GetHostType() == SocketPermissionData::SPECIFIC_HOSTS) |
| 79 hostnames.insert(UTF8ToUTF16(i->GetHost())); | 80 hostnames.insert(UTF8ToUTF16(i->GetHost())); |
| 80 } | 81 } |
| 81 if (!hostnames.empty()) { | 82 if (!hostnames.empty()) { |
| 82 int id = (hostnames.size() == 1) ? | 83 int id = (hostnames.size() == 1) ? |
| 83 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST : | 84 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST : |
| 84 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS; | 85 IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS; |
| 85 messages.push_back(PermissionMessage( | 86 messages.push_back(PermissionMessage( |
| 86 PermissionMessage::kSocketSpecificHosts, | 87 PermissionMessage::kSocketSpecificHosts, |
| 87 l10n_util::GetStringFUTF16( | 88 l10n_util::GetStringFUTF16( |
| 88 id, | 89 id, |
| 89 JoinString( | 90 JoinString( |
| 90 std::vector<string16>( | 91 std::vector<string16>( |
| 91 hostnames.begin(), hostnames.end()), ' ')))); | 92 hostnames.begin(), hostnames.end()), ' ')))); |
| 92 } | 93 } |
| 93 } | 94 } |
| 94 | 95 |
| 96 void SocketPermission::AddNetworkListMessage( |
| 97 PermissionMessages& messages) const { |
| 98 std::set<SocketPermissionData>::const_iterator i; |
| 99 for (i = data_set_.begin(); i != data_set_.end(); ++i) { |
| 100 if (i->pattern().type == content::SocketPermissionRequest::NETWORK_STATE) { |
| 101 messages.push_back(PermissionMessage( |
| 102 PermissionMessage::kNetworkState, |
| 103 l10n_util::GetStringUTF16( |
| 104 IDS_EXTENSION_PROMPT_WARNING_NETWORK_STATE))); |
| 105 } |
| 106 } |
| 107 } |
| 108 |
| 95 } // namespace extensions | 109 } // namespace extensions |
| OLD | NEW |