Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(376)

Side by Side Diff: extensions/common/api/sockets/sockets_manifest_permission.cc

Issue 1213623006: Extensions: Remove PermissionMessage (permission_message.h/cc) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@kill_getmessages
Patch Set: fix app_shell build, rebase Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 for (SocketPermissionEntrySet::const_iterator it = 80 for (SocketPermissionEntrySet::const_iterator it =
81 permission->entries().begin(); 81 permission->entries().begin();
82 it != permission->entries().end(); ++it) { 82 it != permission->entries().end(); ++it) {
83 if (it->pattern().type == operation_type) { 83 if (it->pattern().type == operation_type) {
84 host_patterns->as_strings->push_back(it->GetHostPatternAsString()); 84 host_patterns->as_strings->push_back(it->GetHostPatternAsString());
85 } 85 }
86 } 86 }
87 } 87 }
88 88
89 // Helper function for adding the 'any host' permission. Determines if the 89 // Helper function for adding the 'any host' permission. Determines if the
90 // message is needed from |sockets|, and adds the permission to |ids| and/or 90 // message is needed from |sockets|, and adds the permission to |ids|.
91 // |messages|, ignoring them if they are NULL. Returns true if it added the 91 // Returns true if it added the message.
92 // message.
93 bool AddAnyHostMessage(const SocketPermissionEntrySet& sockets, 92 bool AddAnyHostMessage(const SocketPermissionEntrySet& sockets,
94 PermissionIDSet* ids, 93 PermissionIDSet* ids) {
95 PermissionMessages* messages) {
96 for (const auto& socket : sockets) { 94 for (const auto& socket : sockets) {
97 if (socket.IsAddressBoundType() && 95 if (socket.IsAddressBoundType() &&
98 socket.GetHostType() == SocketPermissionEntry::ANY_HOST) { 96 socket.GetHostType() == SocketPermissionEntry::ANY_HOST) {
99 if (ids) 97 ids->insert(APIPermission::kSocketAnyHost);
100 ids->insert(APIPermission::kSocketAnyHost);
101 if (messages) {
102 messages->push_back(PermissionMessage(
103 PermissionMessage::kSocketAnyHost,
104 l10n_util::GetStringUTF16(
105 IDS_EXTENSION_PROMPT_WARNING_SOCKET_ANY_HOST)));
106 }
107 return true; 98 return true;
108 } 99 }
109 } 100 }
110 return false; 101 return false;
111 } 102 }
112 103
113 // Helper function for adding subdomain socket permissions. Determines what 104 // Helper function for adding subdomain socket permissions. Determines what
114 // messages are needed from |sockets|, and adds permissions to |ids| and/or 105 // messages are needed from |sockets|, and adds permissions to |ids|.
115 // |messages|, ignoring them if they are NULL.
116 void AddSubdomainHostMessage(const SocketPermissionEntrySet& sockets, 106 void AddSubdomainHostMessage(const SocketPermissionEntrySet& sockets,
117 PermissionIDSet* ids, 107 PermissionIDSet* ids) {
118 PermissionMessages* messages) {
119 std::set<base::string16> domains; 108 std::set<base::string16> domains;
120 for (const auto& socket : sockets) { 109 for (const auto& socket : sockets) {
121 if (socket.GetHostType() == SocketPermissionEntry::HOSTS_IN_DOMAINS) 110 if (socket.GetHostType() == SocketPermissionEntry::HOSTS_IN_DOMAINS)
122 domains.insert(base::UTF8ToUTF16(socket.pattern().host)); 111 domains.insert(base::UTF8ToUTF16(socket.pattern().host));
123 } 112 }
124 if (!domains.empty()) { 113 if (!domains.empty()) {
125 // TODO(sashab): This is not correct for all languages - add proper 114 for (const auto& domain : domains)
126 // internationalization of this string for all plural states. 115 ids->insert(APIPermission::kSocketDomainHosts, domain);
127 if (messages) {
128 int id = (domains.size() == 1)
129 ? IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAIN
130 : IDS_EXTENSION_PROMPT_WARNING_SOCKET_HOSTS_IN_DOMAINS;
131 messages->push_back(PermissionMessage(
132 PermissionMessage::kSocketDomainHosts,
133 l10n_util::GetStringFUTF16(
134 id, base::JoinString(std::vector<base::string16>(domains.begin(),
135 domains.end()),
136 base::ASCIIToUTF16(" ")))));
137 }
138 if (ids) {
139 for (const auto& domain : domains)
140 ids->insert(APIPermission::kSocketDomainHosts, domain);
141 }
142 } 116 }
143 } 117 }
144 118
145 // Helper function for adding specific host socket permissions. Determines what 119 // Helper function for adding specific host socket permissions. Determines what
146 // messages are needed from |sockets|, and adds permissions to |ids| and/or 120 // messages are needed from |sockets|, and adds permissions to |ids|.
147 // |messages|, ignoring them if they are NULL.
148 void AddSpecificHostMessage(const SocketPermissionEntrySet& sockets, 121 void AddSpecificHostMessage(const SocketPermissionEntrySet& sockets,
149 PermissionIDSet* ids, 122 PermissionIDSet* ids) {
150 PermissionMessages* messages) {
151 std::set<base::string16> hostnames; 123 std::set<base::string16> hostnames;
152 for (const auto& socket : sockets) { 124 for (const auto& socket : sockets) {
153 if (socket.GetHostType() == SocketPermissionEntry::SPECIFIC_HOSTS) 125 if (socket.GetHostType() == SocketPermissionEntry::SPECIFIC_HOSTS)
154 hostnames.insert(base::UTF8ToUTF16(socket.pattern().host)); 126 hostnames.insert(base::UTF8ToUTF16(socket.pattern().host));
155 } 127 }
156 if (!hostnames.empty()) { 128 if (!hostnames.empty()) {
157 // TODO(sashab): This is not correct for all languages - add proper 129 for (const auto& hostname : hostnames)
158 // internationalization of this string for all plural states. 130 ids->insert(APIPermission::kSocketSpecificHosts, hostname);
159 if (messages) {
160 int id = (hostnames.size() == 1)
161 ? IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOST
162 : IDS_EXTENSION_PROMPT_WARNING_SOCKET_SPECIFIC_HOSTS;
163 messages->push_back(PermissionMessage(
164 PermissionMessage::kSocketSpecificHosts,
165 l10n_util::GetStringFUTF16(
166 id, base::JoinString(std::vector<base::string16>(
167 hostnames.begin(), hostnames.end()),
168 base::ASCIIToUTF16(" ")))));
169 }
170 if (ids) {
171 for (const auto& hostname : hostnames)
172 ids->insert(APIPermission::kSocketSpecificHosts, hostname);
173 }
174 } 131 }
175 } 132 }
176 133
177 // Helper function for adding the network list socket permission. Determines if 134 // 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 135 // the message is needed from |sockets|, and adds the permission to |ids|.
179 // |messages|, ignoring them if they are NULL.
180 void AddNetworkListMessage(const SocketPermissionEntrySet& sockets, 136 void AddNetworkListMessage(const SocketPermissionEntrySet& sockets,
181 PermissionIDSet* ids, 137 PermissionIDSet* ids) {
182 PermissionMessages* messages) {
183 for (const auto& socket : sockets) { 138 for (const auto& socket : sockets) {
184 if (socket.pattern().type == SocketPermissionRequest::NETWORK_STATE) { 139 if (socket.pattern().type == SocketPermissionRequest::NETWORK_STATE) {
185 if (ids) 140 ids->insert(APIPermission::kNetworkState);
186 ids->insert(APIPermission::kNetworkState);
187 if (messages) {
188 messages->push_back(
189 PermissionMessage(PermissionMessage::kNetworkState,
190 l10n_util::GetStringUTF16(
191 IDS_EXTENSION_PROMPT_WARNING_NETWORK_STATE)));
192 }
193 } 141 }
194 } 142 }
195 } 143 }
196 144
197 } // namespace 145 } // namespace
198 146
199 SocketsManifestPermission::SocketsManifestPermission() {} 147 SocketsManifestPermission::SocketsManifestPermission() {}
200 148
201 SocketsManifestPermission::~SocketsManifestPermission() {} 149 SocketsManifestPermission::~SocketsManifestPermission() {}
202 150
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 } 209 }
262 210
263 std::string SocketsManifestPermission::name() const { 211 std::string SocketsManifestPermission::name() const {
264 return manifest_keys::kSockets; 212 return manifest_keys::kSockets;
265 } 213 }
266 214
267 std::string SocketsManifestPermission::id() const { return name(); } 215 std::string SocketsManifestPermission::id() const { return name(); }
268 216
269 PermissionIDSet SocketsManifestPermission::GetPermissions() const { 217 PermissionIDSet SocketsManifestPermission::GetPermissions() const {
270 PermissionIDSet ids; 218 PermissionIDSet ids;
271 AddSocketHostPermissions(permissions_, &ids, NULL); 219 AddSocketHostPermissions(permissions_, &ids);
272 return ids; 220 return ids;
273 } 221 }
274 222
275 bool SocketsManifestPermission::FromValue(const base::Value* value) { 223 bool SocketsManifestPermission::FromValue(const base::Value* value) {
276 if (!value) 224 if (!value)
277 return false; 225 return false;
278 base::string16 error; 226 base::string16 error;
279 scoped_ptr<SocketsManifestPermission> manifest_permission( 227 scoped_ptr<SocketsManifestPermission> manifest_permission(
280 SocketsManifestPermission::FromValue(*value, &error)); 228 SocketsManifestPermission::FromValue(*value, &error));
281 229
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 } 301 }
354 302
355 void SocketsManifestPermission::AddPermission( 303 void SocketsManifestPermission::AddPermission(
356 const SocketPermissionEntry& entry) { 304 const SocketPermissionEntry& entry) {
357 permissions_.insert(entry); 305 permissions_.insert(entry);
358 } 306 }
359 307
360 // static 308 // static
361 void SocketsManifestPermission::AddSocketHostPermissions( 309 void SocketsManifestPermission::AddSocketHostPermissions(
362 const SocketPermissionEntrySet& sockets, 310 const SocketPermissionEntrySet& sockets,
363 PermissionIDSet* ids, 311 PermissionIDSet* ids) {
364 PermissionMessages* messages) { 312 if (!AddAnyHostMessage(sockets, ids)) {
365 if (!AddAnyHostMessage(sockets, ids, messages)) { 313 AddSpecificHostMessage(sockets, ids);
366 AddSpecificHostMessage(sockets, ids, messages); 314 AddSubdomainHostMessage(sockets, ids);
367 AddSubdomainHostMessage(sockets, ids, messages);
368 } 315 }
369 AddNetworkListMessage(sockets, ids, messages); 316 AddNetworkListMessage(sockets, ids);
370 } 317 }
371 318
372 } // namespace extensions 319 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/common/api/sockets/sockets_manifest_permission.h ('k') | extensions/common/extensions_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698