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 "extensions/common/api/sockets/sockets_manifest_permission.h" | 5 #include "extensions/common/api/sockets/sockets_manifest_permission.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "base/strings/string_split.h" | 9 #include "base/strings/string_split.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 if (!domains.empty()) { | 124 if (!domains.empty()) { |
125 // TODO(sashab): This is not correct for all languages - add proper | 125 // TODO(sashab): This is not correct for all languages - add proper |
126 // internationalization of this string for all plural states. | 126 // internationalization of this string for all plural states. |
127 if (messages) { | 127 if (messages) { |
128 int id = (domains.size() == 1) | 128 int id = (domains.size() == 1) |
129 ? IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN | 129 ? IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN |
130 : IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS; | 130 : IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS; |
131 messages->push_back(PermissionMessage( | 131 messages->push_back(PermissionMessage( |
132 PermissionMessage::kSocketDomainHosts, | 132 PermissionMessage::kSocketDomainHosts, |
133 l10n_util::GetStringFUTF16( | 133 l10n_util::GetStringFUTF16( |
134 id, JoinString(std::vector<base::string16>(domains.begin(), | 134 id, base::JoinString(std::vector<base::string16>(domains.begin(), |
135 domains.end()), | 135 domains.end()), |
136 ' ')))); | 136 base::ASCIIToUTF16(" "))))); |
137 } | 137 } |
138 if (ids) { | 138 if (ids) { |
139 for (const auto& domain : domains) | 139 for (const auto& domain : domains) |
140 ids->insert(APIPermission::kSocketDomainHosts, domain); | 140 ids->insert(APIPermission::kSocketDomainHosts, domain); |
141 } | 141 } |
142 } | 142 } |
143 } | 143 } |
144 | 144 |
145 // Helper function for adding specific host socket permissions. Determines what | 145 // Helper function for adding specific host socket permissions. Determines what |
146 // messages are needed from |sockets|, and adds permissions to |ids| and/or | 146 // messages are needed from |sockets|, and adds permissions to |ids| and/or |
147 // |messages|, ignoring them if they are NULL. | 147 // |messages|, ignoring them if they are NULL. |
148 void AddSpecificHostMessage(const SocketPermissionEntrySet& sockets, | 148 void AddSpecificHostMessage(const SocketPermissionEntrySet& sockets, |
149 PermissionIDSet* ids, | 149 PermissionIDSet* ids, |
150 PermissionMessages* messages) { | 150 PermissionMessages* messages) { |
151 std::set<base::string16> hostnames; | 151 std::set<base::string16> hostnames; |
152 for (const auto& socket : sockets) { | 152 for (const auto& socket : sockets) { |
153 if (socket.GetHostType() == SocketPermissionEntry::SPECIFIC_HOSTS) | 153 if (socket.GetHostType() == SocketPermissionEntry::SPECIFIC_HOSTS) |
154 hostnames.insert(base::UTF8ToUTF16(socket.pattern().host)); | 154 hostnames.insert(base::UTF8ToUTF16(socket.pattern().host)); |
155 } | 155 } |
156 if (!hostnames.empty()) { | 156 if (!hostnames.empty()) { |
157 // TODO(sashab): This is not correct for all languages - add proper | 157 // TODO(sashab): This is not correct for all languages - add proper |
158 // internationalization of this string for all plural states. | 158 // internationalization of this string for all plural states. |
159 if (messages) { | 159 if (messages) { |
160 int id = (hostnames.size() == 1) | 160 int id = (hostnames.size() == 1) |
161 ? IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST | 161 ? IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST |
162 : IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS; | 162 : IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS; |
163 messages->push_back(PermissionMessage( | 163 messages->push_back(PermissionMessage( |
164 PermissionMessage::kSocketSpecificHosts, | 164 PermissionMessage::kSocketSpecificHosts, |
165 l10n_util::GetStringFUTF16( | 165 l10n_util::GetStringFUTF16( |
166 id, JoinString(std::vector<base::string16>(hostnames.begin(), | 166 id, base::JoinString(std::vector<base::string16>( |
167 hostnames.end()), | 167 hostnames.begin(), hostnames.end()), |
168 ' ')))); | 168 base::ASCIIToUTF16(" "))))); |
169 } | 169 } |
170 if (ids) { | 170 if (ids) { |
171 for (const auto& hostname : hostnames) | 171 for (const auto& hostname : hostnames) |
172 ids->insert(APIPermission::kSocketSpecificHosts, hostname); | 172 ids->insert(APIPermission::kSocketSpecificHosts, hostname); |
173 } | 173 } |
174 } | 174 } |
175 } | 175 } |
176 | 176 |
177 // Helper function for adding the network list socket permission. Determines if | 177 // Helper function for adding the network list socket permission. Determines if |
178 // the message is needed from |sockets|, and adds the permission to |ids| and/or | 178 // the message is needed from |sockets|, and adds the permission to |ids| and/or |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
374 PermissionIDSet* ids, | 374 PermissionIDSet* ids, |
375 PermissionMessages* messages) { | 375 PermissionMessages* messages) { |
376 if (!AddAnyHostMessage(sockets, ids, messages)) { | 376 if (!AddAnyHostMessage(sockets, ids, messages)) { |
377 AddSpecificHostMessage(sockets, ids, messages); | 377 AddSpecificHostMessage(sockets, ids, messages); |
378 AddSubdomainHostMessage(sockets, ids, messages); | 378 AddSubdomainHostMessage(sockets, ids, messages); |
379 } | 379 } |
380 AddNetworkListMessage(sockets, ids, messages); | 380 AddNetworkListMessage(sockets, ids, messages); |
381 } | 381 } |
382 | 382 |
383 } // namespace extensions | 383 } // namespace extensions |
OLD | NEW |