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

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

Issue 1908953003: Convert //extensions/{common,shell} from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase? Created 4 years, 8 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 <memory>
8
8 #include "base/stl_util.h" 9 #include "base/stl_util.h"
9 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
10 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
11 #include "base/values.h" 12 #include "base/values.h"
12 #include "extensions/common/api/extensions_manifest_types.h" 13 #include "extensions/common/api/extensions_manifest_types.h"
13 #include "extensions/common/api/sockets/sockets_manifest_data.h" 14 #include "extensions/common/api/sockets/sockets_manifest_data.h"
14 #include "extensions/common/error_utils.h" 15 #include "extensions/common/error_utils.h"
15 #include "extensions/common/manifest_constants.h" 16 #include "extensions/common/manifest_constants.h"
16 #include "grit/extensions_strings.h" 17 #include "grit/extensions_strings.h"
17 #include "ipc/ipc_message.h" 18 #include "ipc/ipc_message.h"
(...skipping 24 matching lines...) Expand all
42 errors::kErrorInvalidHostPattern, host_pattern); 43 errors::kErrorInvalidHostPattern, host_pattern);
43 return false; 44 return false;
44 } 45 }
45 permission->AddPermission(entry); 46 permission->AddPermission(entry);
46 return true; 47 return true;
47 } 48 }
48 49
49 static bool ParseHostPatterns( 50 static bool ParseHostPatterns(
50 SocketsManifestPermission* permission, 51 SocketsManifestPermission* permission,
51 content::SocketPermissionRequest::OperationType operation_type, 52 content::SocketPermissionRequest::OperationType operation_type,
52 const scoped_ptr<SocketHostPatterns>& host_patterns, 53 const std::unique_ptr<SocketHostPatterns>& host_patterns,
53 base::string16* error) { 54 base::string16* error) {
54 if (!host_patterns) 55 if (!host_patterns)
55 return true; 56 return true;
56 57
57 if (host_patterns->as_string) { 58 if (host_patterns->as_string) {
58 return ParseHostPattern( 59 return ParseHostPattern(
59 permission, operation_type, *host_patterns->as_string, error); 60 permission, operation_type, *host_patterns->as_string, error);
60 } 61 }
61 62
62 CHECK(host_patterns->as_strings); 63 CHECK(host_patterns->as_strings);
63 for (std::vector<std::string>::const_iterator it = 64 for (std::vector<std::string>::const_iterator it =
64 host_patterns->as_strings->begin(); 65 host_patterns->as_strings->begin();
65 it != host_patterns->as_strings->end(); 66 it != host_patterns->as_strings->end();
66 ++it) { 67 ++it) {
67 if (!ParseHostPattern(permission, operation_type, *it, error)) { 68 if (!ParseHostPattern(permission, operation_type, *it, error)) {
68 return false; 69 return false;
69 } 70 }
70 } 71 }
71 return true; 72 return true;
72 } 73 }
73 74
74 static void SetHostPatterns( 75 static void SetHostPatterns(
75 scoped_ptr<SocketHostPatterns>& host_patterns, 76 std::unique_ptr<SocketHostPatterns>& host_patterns,
76 const SocketsManifestPermission* permission, 77 const SocketsManifestPermission* permission,
77 content::SocketPermissionRequest::OperationType operation_type) { 78 content::SocketPermissionRequest::OperationType operation_type) {
78 host_patterns.reset(new SocketHostPatterns()); 79 host_patterns.reset(new SocketHostPatterns());
79 host_patterns->as_strings.reset(new std::vector<std::string>()); 80 host_patterns->as_strings.reset(new std::vector<std::string>());
80 for (SocketPermissionEntrySet::const_iterator it = 81 for (SocketPermissionEntrySet::const_iterator it =
81 permission->entries().begin(); 82 permission->entries().begin();
82 it != permission->entries().end(); ++it) { 83 it != permission->entries().end(); ++it) {
83 if (it->pattern().type == operation_type) { 84 if (it->pattern().type == operation_type) {
84 host_patterns->as_strings->push_back(it->GetHostPatternAsString()); 85 host_patterns->as_strings->push_back(it->GetHostPatternAsString());
85 } 86 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 } 143 }
143 } 144 }
144 145
145 } // namespace 146 } // namespace
146 147
147 SocketsManifestPermission::SocketsManifestPermission() {} 148 SocketsManifestPermission::SocketsManifestPermission() {}
148 149
149 SocketsManifestPermission::~SocketsManifestPermission() {} 150 SocketsManifestPermission::~SocketsManifestPermission() {}
150 151
151 // static 152 // static
152 scoped_ptr<SocketsManifestPermission> SocketsManifestPermission::FromValue( 153 std::unique_ptr<SocketsManifestPermission> SocketsManifestPermission::FromValue(
153 const base::Value& value, 154 const base::Value& value,
154 base::string16* error) { 155 base::string16* error) {
155 scoped_ptr<Sockets> sockets = Sockets::FromValue(value, error); 156 std::unique_ptr<Sockets> sockets = Sockets::FromValue(value, error);
156 if (!sockets) 157 if (!sockets)
157 return scoped_ptr<SocketsManifestPermission>(); 158 return std::unique_ptr<SocketsManifestPermission>();
158 159
159 scoped_ptr<SocketsManifestPermission> result(new SocketsManifestPermission()); 160 std::unique_ptr<SocketsManifestPermission> result(
161 new SocketsManifestPermission());
160 if (sockets->udp) { 162 if (sockets->udp) {
161 if (!ParseHostPatterns(result.get(), 163 if (!ParseHostPatterns(result.get(),
162 SocketPermissionRequest::UDP_BIND, 164 SocketPermissionRequest::UDP_BIND,
163 sockets->udp->bind, 165 sockets->udp->bind,
164 error)) { 166 error)) {
165 return scoped_ptr<SocketsManifestPermission>(); 167 return std::unique_ptr<SocketsManifestPermission>();
166 } 168 }
167 if (!ParseHostPatterns(result.get(), 169 if (!ParseHostPatterns(result.get(),
168 SocketPermissionRequest::UDP_SEND_TO, 170 SocketPermissionRequest::UDP_SEND_TO,
169 sockets->udp->send, 171 sockets->udp->send,
170 error)) { 172 error)) {
171 return scoped_ptr<SocketsManifestPermission>(); 173 return std::unique_ptr<SocketsManifestPermission>();
172 } 174 }
173 if (!ParseHostPatterns(result.get(), 175 if (!ParseHostPatterns(result.get(),
174 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, 176 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP,
175 sockets->udp->multicast_membership, 177 sockets->udp->multicast_membership,
176 error)) { 178 error)) {
177 return scoped_ptr<SocketsManifestPermission>(); 179 return std::unique_ptr<SocketsManifestPermission>();
178 } 180 }
179 } 181 }
180 if (sockets->tcp) { 182 if (sockets->tcp) {
181 if (!ParseHostPatterns(result.get(), 183 if (!ParseHostPatterns(result.get(),
182 SocketPermissionRequest::TCP_CONNECT, 184 SocketPermissionRequest::TCP_CONNECT,
183 sockets->tcp->connect, 185 sockets->tcp->connect,
184 error)) { 186 error)) {
185 return scoped_ptr<SocketsManifestPermission>(); 187 return std::unique_ptr<SocketsManifestPermission>();
186 } 188 }
187 } 189 }
188 if (sockets->tcp_server) { 190 if (sockets->tcp_server) {
189 if (!ParseHostPatterns(result.get(), 191 if (!ParseHostPatterns(result.get(),
190 SocketPermissionRequest::TCP_LISTEN, 192 SocketPermissionRequest::TCP_LISTEN,
191 sockets->tcp_server->listen, 193 sockets->tcp_server->listen,
192 error)) { 194 error)) {
193 return scoped_ptr<SocketsManifestPermission>(); 195 return std::unique_ptr<SocketsManifestPermission>();
194 } 196 }
195 } 197 }
196 return result; 198 return result;
197 } 199 }
198 200
199 bool SocketsManifestPermission::CheckRequest( 201 bool SocketsManifestPermission::CheckRequest(
200 const Extension* extension, 202 const Extension* extension,
201 const SocketPermissionRequest& request) const { 203 const SocketPermissionRequest& request) const {
202 for (SocketPermissionEntrySet::const_iterator it = permissions_.begin(); 204 for (SocketPermissionEntrySet::const_iterator it = permissions_.begin();
203 it != permissions_.end(); 205 it != permissions_.end();
(...skipping 13 matching lines...) Expand all
217 PermissionIDSet SocketsManifestPermission::GetPermissions() const { 219 PermissionIDSet SocketsManifestPermission::GetPermissions() const {
218 PermissionIDSet ids; 220 PermissionIDSet ids;
219 AddSocketHostPermissions(permissions_, &ids); 221 AddSocketHostPermissions(permissions_, &ids);
220 return ids; 222 return ids;
221 } 223 }
222 224
223 bool SocketsManifestPermission::FromValue(const base::Value* value) { 225 bool SocketsManifestPermission::FromValue(const base::Value* value) {
224 if (!value) 226 if (!value)
225 return false; 227 return false;
226 base::string16 error; 228 base::string16 error;
227 scoped_ptr<SocketsManifestPermission> manifest_permission( 229 std::unique_ptr<SocketsManifestPermission> manifest_permission(
228 SocketsManifestPermission::FromValue(*value, &error)); 230 SocketsManifestPermission::FromValue(*value, &error));
229 231
230 if (!manifest_permission) 232 if (!manifest_permission)
231 return false; 233 return false;
232 234
233 permissions_ = manifest_permission->permissions_; 235 permissions_ = manifest_permission->permissions_;
234 return true; 236 return true;
235 } 237 }
236 238
237 scoped_ptr<base::Value> SocketsManifestPermission::ToValue() const { 239 std::unique_ptr<base::Value> SocketsManifestPermission::ToValue() const {
238 Sockets sockets; 240 Sockets sockets;
239 241
240 sockets.udp.reset(new Sockets::Udp()); 242 sockets.udp.reset(new Sockets::Udp());
241 SetHostPatterns(sockets.udp->bind, this, SocketPermissionRequest::UDP_BIND); 243 SetHostPatterns(sockets.udp->bind, this, SocketPermissionRequest::UDP_BIND);
242 SetHostPatterns( 244 SetHostPatterns(
243 sockets.udp->send, this, SocketPermissionRequest::UDP_SEND_TO); 245 sockets.udp->send, this, SocketPermissionRequest::UDP_SEND_TO);
244 SetHostPatterns(sockets.udp->multicast_membership, 246 SetHostPatterns(sockets.udp->multicast_membership,
245 this, 247 this,
246 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP); 248 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP);
247 if (sockets.udp->bind->as_strings->size() == 0 && 249 if (sockets.udp->bind->as_strings->size() == 0 &&
248 sockets.udp->send->as_strings->size() == 0 && 250 sockets.udp->send->as_strings->size() == 0 &&
249 sockets.udp->multicast_membership->as_strings->size() == 0) { 251 sockets.udp->multicast_membership->as_strings->size() == 0) {
250 sockets.udp.reset(NULL); 252 sockets.udp.reset(NULL);
251 } 253 }
252 254
253 sockets.tcp.reset(new Sockets::Tcp()); 255 sockets.tcp.reset(new Sockets::Tcp());
254 SetHostPatterns( 256 SetHostPatterns(
255 sockets.tcp->connect, this, SocketPermissionRequest::TCP_CONNECT); 257 sockets.tcp->connect, this, SocketPermissionRequest::TCP_CONNECT);
256 if (sockets.tcp->connect->as_strings->size() == 0) { 258 if (sockets.tcp->connect->as_strings->size() == 0) {
257 sockets.tcp.reset(NULL); 259 sockets.tcp.reset(NULL);
258 } 260 }
259 261
260 sockets.tcp_server.reset(new Sockets::TcpServer()); 262 sockets.tcp_server.reset(new Sockets::TcpServer());
261 SetHostPatterns( 263 SetHostPatterns(
262 sockets.tcp_server->listen, this, SocketPermissionRequest::TCP_LISTEN); 264 sockets.tcp_server->listen, this, SocketPermissionRequest::TCP_LISTEN);
263 if (sockets.tcp_server->listen->as_strings->size() == 0) { 265 if (sockets.tcp_server->listen->as_strings->size() == 0) {
264 sockets.tcp_server.reset(NULL); 266 sockets.tcp_server.reset(NULL);
265 } 267 }
266 268
267 return scoped_ptr<base::Value>(sockets.ToValue().release()); 269 return std::unique_ptr<base::Value>(sockets.ToValue().release());
268 } 270 }
269 271
270 ManifestPermission* SocketsManifestPermission::Diff( 272 ManifestPermission* SocketsManifestPermission::Diff(
271 const ManifestPermission* rhs) const { 273 const ManifestPermission* rhs) const {
272 const SocketsManifestPermission* other = 274 const SocketsManifestPermission* other =
273 static_cast<const SocketsManifestPermission*>(rhs); 275 static_cast<const SocketsManifestPermission*>(rhs);
274 276
275 scoped_ptr<SocketsManifestPermission> result(new SocketsManifestPermission()); 277 std::unique_ptr<SocketsManifestPermission> result(
278 new SocketsManifestPermission());
276 result->permissions_ = base::STLSetDifference<SocketPermissionEntrySet>( 279 result->permissions_ = base::STLSetDifference<SocketPermissionEntrySet>(
277 permissions_, other->permissions_); 280 permissions_, other->permissions_);
278 return result.release(); 281 return result.release();
279 } 282 }
280 283
281 ManifestPermission* SocketsManifestPermission::Union( 284 ManifestPermission* SocketsManifestPermission::Union(
282 const ManifestPermission* rhs) const { 285 const ManifestPermission* rhs) const {
283 const SocketsManifestPermission* other = 286 const SocketsManifestPermission* other =
284 static_cast<const SocketsManifestPermission*>(rhs); 287 static_cast<const SocketsManifestPermission*>(rhs);
285 288
286 scoped_ptr<SocketsManifestPermission> result(new SocketsManifestPermission()); 289 std::unique_ptr<SocketsManifestPermission> result(
290 new SocketsManifestPermission());
287 result->permissions_ = base::STLSetUnion<SocketPermissionEntrySet>( 291 result->permissions_ = base::STLSetUnion<SocketPermissionEntrySet>(
288 permissions_, other->permissions_); 292 permissions_, other->permissions_);
289 return result.release(); 293 return result.release();
290 } 294 }
291 295
292 ManifestPermission* SocketsManifestPermission::Intersect( 296 ManifestPermission* SocketsManifestPermission::Intersect(
293 const ManifestPermission* rhs) const { 297 const ManifestPermission* rhs) const {
294 const SocketsManifestPermission* other = 298 const SocketsManifestPermission* other =
295 static_cast<const SocketsManifestPermission*>(rhs); 299 static_cast<const SocketsManifestPermission*>(rhs);
296 300
297 scoped_ptr<SocketsManifestPermission> result(new SocketsManifestPermission()); 301 std::unique_ptr<SocketsManifestPermission> result(
302 new SocketsManifestPermission());
298 result->permissions_ = base::STLSetIntersection<SocketPermissionEntrySet>( 303 result->permissions_ = base::STLSetIntersection<SocketPermissionEntrySet>(
299 permissions_, other->permissions_); 304 permissions_, other->permissions_);
300 return result.release(); 305 return result.release();
301 } 306 }
302 307
303 void SocketsManifestPermission::AddPermission( 308 void SocketsManifestPermission::AddPermission(
304 const SocketPermissionEntry& entry) { 309 const SocketPermissionEntry& entry) {
305 permissions_.insert(entry); 310 permissions_.insert(entry);
306 } 311 }
307 312
308 // static 313 // static
309 void SocketsManifestPermission::AddSocketHostPermissions( 314 void SocketsManifestPermission::AddSocketHostPermissions(
310 const SocketPermissionEntrySet& sockets, 315 const SocketPermissionEntrySet& sockets,
311 PermissionIDSet* ids) { 316 PermissionIDSet* ids) {
312 if (!AddAnyHostMessage(sockets, ids)) { 317 if (!AddAnyHostMessage(sockets, ids)) {
313 AddSpecificHostMessage(sockets, ids); 318 AddSpecificHostMessage(sockets, ids);
314 AddSubdomainHostMessage(sockets, ids); 319 AddSubdomainHostMessage(sockets, ids);
315 } 320 }
316 AddNetworkListMessage(sockets, ids); 321 AddNetworkListMessage(sockets, ids);
317 } 322 }
318 323
319 } // namespace extensions 324 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698