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

Side by Side Diff: chrome/browser/extensions/api/socket/socket_api.cc

Issue 14651017: Move RuntimeData and related permissions out of Extension class (Closed) Base URL: http://git.chromium.org/chromium/src.git@dc_unref_permissions
Patch Set: Latest master Created 7 years, 7 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 (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/browser/extensions/api/socket/socket_api.h" 5 #include "chrome/browser/extensions/api/socket/socket_api.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/hash_tables.h" 10 #include "base/hash_tables.h"
11 #include "chrome/common/extensions/extension.h"
12 #include "chrome/common/extensions/permissions/socket_permission.h"
13 #include "chrome/browser/browser_process.h" 11 #include "chrome/browser/browser_process.h"
14 #include "chrome/browser/extensions/api/dns/host_resolver_wrapper.h" 12 #include "chrome/browser/extensions/api/dns/host_resolver_wrapper.h"
15 #include "chrome/browser/extensions/api/socket/socket.h" 13 #include "chrome/browser/extensions/api/socket/socket.h"
16 #include "chrome/browser/extensions/api/socket/tcp_socket.h" 14 #include "chrome/browser/extensions/api/socket/tcp_socket.h"
17 #include "chrome/browser/extensions/api/socket/udp_socket.h" 15 #include "chrome/browser/extensions/api/socket/udp_socket.h"
18 #include "chrome/browser/extensions/extension_system.h" 16 #include "chrome/browser/extensions/extension_system.h"
19 #include "chrome/browser/io_thread.h" 17 #include "chrome/browser/io_thread.h"
18 #include "chrome/common/extensions/extension.h"
19 #include "chrome/common/extensions/permissions/permissions_data.h"
20 #include "chrome/common/extensions/permissions/socket_permission.h"
20 #include "net/base/host_port_pair.h" 21 #include "net/base/host_port_pair.h"
21 #include "net/base/io_buffer.h" 22 #include "net/base/io_buffer.h"
22 #include "net/base/ip_endpoint.h" 23 #include "net/base/ip_endpoint.h"
23 #include "net/base/net_errors.h" 24 #include "net/base/net_errors.h"
24 #include "net/base/net_log.h" 25 #include "net/base/net_log.h"
25 #include "net/base/net_util.h" 26 #include "net/base/net_util.h"
26 27
27 namespace extensions { 28 namespace extensions {
28 29
29 using content::SocketPermissionRequest; 30 using content::SocketPermissionRequest;
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 case Socket::TYPE_UDP: 199 case Socket::TYPE_UDP:
199 operation_type = SocketPermissionRequest::UDP_SEND_TO; 200 operation_type = SocketPermissionRequest::UDP_SEND_TO;
200 break; 201 break;
201 default: 202 default:
202 NOTREACHED() << "Unknown socket type."; 203 NOTREACHED() << "Unknown socket type.";
203 operation_type = SocketPermissionRequest::NONE; 204 operation_type = SocketPermissionRequest::NONE;
204 break; 205 break;
205 } 206 }
206 207
207 SocketPermission::CheckParam param(operation_type, hostname_, port_); 208 SocketPermission::CheckParam param(operation_type, hostname_, port_);
208 if (!GetExtension()->CheckAPIPermissionWithParam(APIPermission::kSocket, 209 if (!PermissionsData::CheckAPIPermissionWithParam(
209 &param)) { 210 GetExtension(), APIPermission::kSocket, &param)) {
210 error_ = kPermissionError; 211 error_ = kPermissionError;
211 SetResult(Value::CreateIntegerValue(-1)); 212 SetResult(Value::CreateIntegerValue(-1));
212 AsyncWorkCompleted(); 213 AsyncWorkCompleted();
213 return; 214 return;
214 } 215 }
215 216
216 StartDnsLookup(hostname_); 217 StartDnsLookup(hostname_);
217 } 218 }
218 219
219 void SocketConnectFunction::AfterDnsLookup(int lookup_result) { 220 void SocketConnectFunction::AfterDnsLookup(int lookup_result) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 263
263 if (!socket) { 264 if (!socket) {
264 error_ = kSocketNotFoundError; 265 error_ = kSocketNotFoundError;
265 SetResult(Value::CreateIntegerValue(result)); 266 SetResult(Value::CreateIntegerValue(result));
266 return; 267 return;
267 } 268 }
268 269
269 if (socket->GetSocketType() == Socket::TYPE_UDP) { 270 if (socket->GetSocketType() == Socket::TYPE_UDP) {
270 SocketPermission::CheckParam param( 271 SocketPermission::CheckParam param(
271 SocketPermissionRequest::UDP_BIND, address_, port_); 272 SocketPermissionRequest::UDP_BIND, address_, port_);
272 if (!GetExtension()->CheckAPIPermissionWithParam(APIPermission::kSocket, 273 if (!PermissionsData::CheckAPIPermissionWithParam(
273 &param)) { 274 GetExtension(),
275 APIPermission::kSocket,
276 &param)) {
274 error_ = kPermissionError; 277 error_ = kPermissionError;
275 SetResult(Value::CreateIntegerValue(result)); 278 SetResult(Value::CreateIntegerValue(result));
276 return; 279 return;
277 } 280 }
278 } else if (socket->GetSocketType() == Socket::TYPE_TCP) { 281 } else if (socket->GetSocketType() == Socket::TYPE_TCP) {
279 error_ = kTCPSocketBindError; 282 error_ = kTCPSocketBindError;
280 SetResult(Value::CreateIntegerValue(result)); 283 SetResult(Value::CreateIntegerValue(result));
281 return; 284 return;
282 } 285 }
283 286
(...skipping 13 matching lines...) Expand all
297 return true; 300 return true;
298 } 301 }
299 302
300 void SocketListenFunction::Work() { 303 void SocketListenFunction::Work() {
301 int result = -1; 304 int result = -1;
302 305
303 Socket* socket = GetSocket(params_->socket_id); 306 Socket* socket = GetSocket(params_->socket_id);
304 if (socket) { 307 if (socket) {
305 SocketPermission::CheckParam param( 308 SocketPermission::CheckParam param(
306 SocketPermissionRequest::TCP_LISTEN, params_->address, params_->port); 309 SocketPermissionRequest::TCP_LISTEN, params_->address, params_->port);
307 if (!GetExtension()->CheckAPIPermissionWithParam(APIPermission::kSocket, 310 if (!PermissionsData::CheckAPIPermissionWithParam(
308 &param)) { 311 GetExtension(),
312 APIPermission::kSocket,
313 &param)) {
309 error_ = kPermissionError; 314 error_ = kPermissionError;
310 SetResult(Value::CreateIntegerValue(result)); 315 SetResult(Value::CreateIntegerValue(result));
311 return; 316 return;
312 } 317 }
313 318
314 result = socket->Listen( 319 result = socket->Listen(
315 params_->address, 320 params_->address,
316 params_->port, 321 params_->port,
317 params_->backlog.get() ? *params_->backlog.get() : 5, 322 params_->backlog.get() ? *params_->backlog.get() : 5,
318 &error_); 323 &error_);
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 if (!socket_) { 513 if (!socket_) {
509 error_ = kSocketNotFoundError; 514 error_ = kSocketNotFoundError;
510 SetResult(Value::CreateIntegerValue(-1)); 515 SetResult(Value::CreateIntegerValue(-1));
511 AsyncWorkCompleted(); 516 AsyncWorkCompleted();
512 return; 517 return;
513 } 518 }
514 519
515 if (socket_->GetSocketType() == Socket::TYPE_UDP) { 520 if (socket_->GetSocketType() == Socket::TYPE_UDP) {
516 SocketPermission::CheckParam param(SocketPermissionRequest::UDP_SEND_TO, 521 SocketPermission::CheckParam param(SocketPermissionRequest::UDP_SEND_TO,
517 hostname_, port_); 522 hostname_, port_);
518 if (!GetExtension()->CheckAPIPermissionWithParam(APIPermission::kSocket, 523 if (!PermissionsData::CheckAPIPermissionWithParam(
519 &param)) { 524 GetExtension(),
525 APIPermission::kSocket,
526 &param)) {
520 error_ = kPermissionError; 527 error_ = kPermissionError;
521 SetResult(Value::CreateIntegerValue(-1)); 528 SetResult(Value::CreateIntegerValue(-1));
522 AsyncWorkCompleted(); 529 AsyncWorkCompleted();
523 return; 530 return;
524 } 531 }
525 } 532 }
526 533
527 StartDnsLookup(hostname_); 534 StartDnsLookup(hostname_);
528 } 535 }
529 536
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 error_ = kMulticastSocketTypeError; 721 error_ = kMulticastSocketTypeError;
715 SetResult(Value::CreateIntegerValue(result)); 722 SetResult(Value::CreateIntegerValue(result));
716 return; 723 return;
717 } 724 }
718 725
719 SocketPermission::CheckParam param( 726 SocketPermission::CheckParam param(
720 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, 727 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP,
721 kWildcardAddress, 728 kWildcardAddress,
722 kWildcardPort); 729 kWildcardPort);
723 730
724 if (!GetExtension()->CheckAPIPermissionWithParam(APIPermission::kSocket, 731 if (!PermissionsData::CheckAPIPermissionWithParam(
725 &param)) { 732 GetExtension(), APIPermission::kSocket, &param)) {
726 error_ = kPermissionError; 733 error_ = kPermissionError;
727 SetResult(Value::CreateIntegerValue(result)); 734 SetResult(Value::CreateIntegerValue(result));
728 return; 735 return;
729 } 736 }
730 737
731 result = static_cast<UDPSocket*>(socket)->JoinGroup(params_->address); 738 result = static_cast<UDPSocket*>(socket)->JoinGroup(params_->address);
732 if (result != 0) { 739 if (result != 0) {
733 error_ = net::ErrorToString(result); 740 error_ = net::ErrorToString(result);
734 } 741 }
735 SetResult(Value::CreateIntegerValue(result)); 742 SetResult(Value::CreateIntegerValue(result));
(...skipping 24 matching lines...) Expand all
760 if (socket->GetSocketType() != Socket::TYPE_UDP) { 767 if (socket->GetSocketType() != Socket::TYPE_UDP) {
761 error_ = kMulticastSocketTypeError; 768 error_ = kMulticastSocketTypeError;
762 SetResult(Value::CreateIntegerValue(result)); 769 SetResult(Value::CreateIntegerValue(result));
763 return; 770 return;
764 } 771 }
765 772
766 SocketPermission::CheckParam param( 773 SocketPermission::CheckParam param(
767 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, 774 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP,
768 kWildcardAddress, 775 kWildcardAddress,
769 kWildcardPort); 776 kWildcardPort);
770 if (!GetExtension()->CheckAPIPermissionWithParam(APIPermission::kSocket, 777 if (!PermissionsData::CheckAPIPermissionWithParam(GetExtension(),
771 &param)) { 778 APIPermission::kSocket,
779 &param)) {
772 error_ = kPermissionError; 780 error_ = kPermissionError;
773 SetResult(Value::CreateIntegerValue(result)); 781 SetResult(Value::CreateIntegerValue(result));
774 return; 782 return;
775 } 783 }
776 784
777 result = static_cast<UDPSocket*>(socket)->LeaveGroup(params_->address); 785 result = static_cast<UDPSocket*>(socket)->LeaveGroup(params_->address);
778 if (result != 0) 786 if (result != 0)
779 error_ = net::ErrorToString(result); 787 error_ = net::ErrorToString(result);
780 SetResult(Value::CreateIntegerValue(result)); 788 SetResult(Value::CreateIntegerValue(result));
781 } 789 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 if (socket->GetSocketType() != Socket::TYPE_UDP) { 877 if (socket->GetSocketType() != Socket::TYPE_UDP) {
870 error_ = kMulticastSocketTypeError; 878 error_ = kMulticastSocketTypeError;
871 SetResult(Value::CreateIntegerValue(result)); 879 SetResult(Value::CreateIntegerValue(result));
872 return; 880 return;
873 } 881 }
874 882
875 SocketPermission::CheckParam param( 883 SocketPermission::CheckParam param(
876 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP, 884 SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP,
877 kWildcardAddress, 885 kWildcardAddress,
878 kWildcardPort); 886 kWildcardPort);
879 if (!GetExtension()->CheckAPIPermissionWithParam(APIPermission::kSocket, 887 if (!PermissionsData::CheckAPIPermissionWithParam(
880 &param)) { 888 GetExtension(),
889 APIPermission::kSocket,
890 &param)) {
881 error_ = kPermissionError; 891 error_ = kPermissionError;
882 SetResult(Value::CreateIntegerValue(result)); 892 SetResult(Value::CreateIntegerValue(result));
883 return; 893 return;
884 } 894 }
885 895
886 base::ListValue* values = new base::ListValue(); 896 base::ListValue* values = new base::ListValue();
887 values->AppendStrings((std::vector<std::string>&) 897 values->AppendStrings((std::vector<std::string>&)
888 static_cast<UDPSocket*>(socket)->GetJoinedGroups()); 898 static_cast<UDPSocket*>(socket)->GetJoinedGroups());
889 SetResult(values); 899 SetResult(values);
890 } 900 }
891 901
892 } // namespace extensions 902 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/media_galleries/media_galleries_api.cc ('k') | chrome/browser/extensions/api/tabs/tabs_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698