| Index: chrome/browser/extensions/api/sockets_udp/sockets_udp_api.cc
|
| diff --git a/chrome/browser/extensions/api/sockets_udp/sockets_udp_api.cc b/chrome/browser/extensions/api/sockets_udp/sockets_udp_api.cc
|
| deleted file mode 100644
|
| index a710d0c23b92d80cf77e6f633fade1b95649e7de..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/api/sockets_udp/sockets_udp_api.cc
|
| +++ /dev/null
|
| @@ -1,505 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/extensions/api/sockets_udp/sockets_udp_api.h"
|
| -
|
| -#include "chrome/browser/extensions/api/socket/udp_socket.h"
|
| -#include "chrome/browser/extensions/api/sockets_udp/udp_socket_event_dispatcher.h"
|
| -#include "chrome/common/extensions/api/sockets/sockets_manifest_data.h"
|
| -#include "content/public/common/socket_permission_request.h"
|
| -#include "net/base/net_errors.h"
|
| -
|
| -namespace extensions {
|
| -namespace api {
|
| -
|
| -using content::SocketPermissionRequest;
|
| -
|
| -const char kSocketNotFoundError[] = "Socket not found";
|
| -const char kPermissionError[] = "App does not have permission";
|
| -const char kWildcardAddress[] = "*";
|
| -const int kWildcardPort = 0;
|
| -
|
| -UDPSocketAsyncApiFunction::~UDPSocketAsyncApiFunction() {}
|
| -
|
| -scoped_ptr<SocketResourceManagerInterface>
|
| - UDPSocketAsyncApiFunction::CreateSocketResourceManager() {
|
| - return scoped_ptr<SocketResourceManagerInterface>(
|
| - new SocketResourceManager<ResumableUDPSocket>()).Pass();
|
| -}
|
| -
|
| -ResumableUDPSocket* UDPSocketAsyncApiFunction::GetUdpSocket(int socket_id) {
|
| - return static_cast<ResumableUDPSocket*>(GetSocket(socket_id));
|
| -}
|
| -
|
| -UDPSocketExtensionWithDnsLookupFunction::
|
| - ~UDPSocketExtensionWithDnsLookupFunction() {}
|
| -
|
| -scoped_ptr<SocketResourceManagerInterface>
|
| - UDPSocketExtensionWithDnsLookupFunction::CreateSocketResourceManager() {
|
| - return scoped_ptr<SocketResourceManagerInterface>(
|
| - new SocketResourceManager<ResumableUDPSocket>()).Pass();
|
| -}
|
| -
|
| -ResumableUDPSocket* UDPSocketExtensionWithDnsLookupFunction::GetUdpSocket(
|
| - int socket_id) {
|
| - return static_cast<ResumableUDPSocket*>(GetSocket(socket_id));
|
| -}
|
| -
|
| -linked_ptr<sockets_udp::SocketInfo> CreateSocketInfo(
|
| - int socket_id,
|
| - ResumableUDPSocket* socket) {
|
| - linked_ptr<sockets_udp::SocketInfo> socket_info(
|
| - new sockets_udp::SocketInfo());
|
| - // This represents what we know about the socket, and does not call through
|
| - // to the system.
|
| - socket_info->socket_id = socket_id;
|
| - if (!socket->name().empty()) {
|
| - socket_info->name.reset(new std::string(socket->name()));
|
| - }
|
| - socket_info->persistent = socket->persistent();
|
| - if (socket->buffer_size() > 0) {
|
| - socket_info->buffer_size.reset(new int(socket->buffer_size()));
|
| - }
|
| - socket_info->paused = socket->paused();
|
| -
|
| - // Grab the local address as known by the OS.
|
| - net::IPEndPoint localAddress;
|
| - if (socket->GetLocalAddress(&localAddress)) {
|
| - socket_info->local_address.reset(
|
| - new std::string(localAddress.ToStringWithoutPort()));
|
| - socket_info->local_port.reset(new int(localAddress.port()));
|
| - }
|
| -
|
| - return socket_info;
|
| -}
|
| -
|
| -void SetSocketProperties(ResumableUDPSocket* socket,
|
| - sockets_udp::SocketProperties* properties) {
|
| - if (properties->name.get()) {
|
| - socket->set_name(*properties->name.get());
|
| - }
|
| - if (properties->persistent.get()) {
|
| - socket->set_persistent(*properties->persistent.get());
|
| - }
|
| - if (properties->buffer_size.get()) {
|
| - socket->set_buffer_size(*properties->buffer_size.get());
|
| - }
|
| -}
|
| -
|
| -SocketsUdpCreateFunction::SocketsUdpCreateFunction() {}
|
| -
|
| -SocketsUdpCreateFunction::~SocketsUdpCreateFunction() {}
|
| -
|
| -bool SocketsUdpCreateFunction::Prepare() {
|
| - params_ = sockets_udp::Create::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpCreateFunction::Work() {
|
| - ResumableUDPSocket* socket = new ResumableUDPSocket(extension_->id());
|
| -
|
| - sockets_udp::SocketProperties* properties = params_.get()->properties.get();
|
| - if (properties) {
|
| - SetSocketProperties(socket, properties);
|
| - }
|
| -
|
| - sockets_udp::CreateInfo create_info;
|
| - create_info.socket_id = AddSocket(socket);
|
| - results_ = sockets_udp::Create::Results::Create(create_info);
|
| -}
|
| -
|
| -SocketsUdpUpdateFunction::SocketsUdpUpdateFunction() {}
|
| -
|
| -SocketsUdpUpdateFunction::~SocketsUdpUpdateFunction() {}
|
| -
|
| -bool SocketsUdpUpdateFunction::Prepare() {
|
| - params_ = sockets_udp::Update::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpUpdateFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - SetSocketProperties(socket, ¶ms_.get()->properties);
|
| - results_ = sockets_udp::Update::Results::Create();
|
| -}
|
| -
|
| -SocketsUdpSetPausedFunction::SocketsUdpSetPausedFunction()
|
| - : socket_event_dispatcher_(NULL) {}
|
| -
|
| -SocketsUdpSetPausedFunction::~SocketsUdpSetPausedFunction() {}
|
| -
|
| -bool SocketsUdpSetPausedFunction::Prepare() {
|
| - params_ = api::sockets_udp::SetPaused::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| -
|
| - socket_event_dispatcher_ = UDPSocketEventDispatcher::Get(browser_context());
|
| - DCHECK(socket_event_dispatcher_) << "There is no socket event dispatcher. "
|
| - "If this assertion is failing during a test, then it is likely that "
|
| - "TestExtensionSystem is failing to provide an instance of "
|
| - "UDPSocketEventDispatcher.";
|
| - return socket_event_dispatcher_ != NULL;
|
| -}
|
| -
|
| -void SocketsUdpSetPausedFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - if (socket->paused() != params_->paused) {
|
| - socket->set_paused(params_->paused);
|
| - if (socket->IsBound() && !params_->paused) {
|
| - socket_event_dispatcher_->OnSocketResume(extension_->id(),
|
| - params_->socket_id);
|
| - }
|
| - }
|
| -
|
| - results_ = sockets_udp::SetPaused::Results::Create();
|
| -}
|
| -
|
| -SocketsUdpBindFunction::SocketsUdpBindFunction()
|
| - : socket_event_dispatcher_(NULL) {
|
| -}
|
| -
|
| -SocketsUdpBindFunction::~SocketsUdpBindFunction() {}
|
| -
|
| -bool SocketsUdpBindFunction::Prepare() {
|
| - params_ = sockets_udp::Bind::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| -
|
| - socket_event_dispatcher_ = UDPSocketEventDispatcher::Get(browser_context());
|
| - DCHECK(socket_event_dispatcher_) << "There is no socket event dispatcher. "
|
| - "If this assertion is failing during a test, then it is likely that "
|
| - "TestExtensionSystem is failing to provide an instance of "
|
| - "UDPSocketEventDispatcher.";
|
| - return socket_event_dispatcher_ != NULL;
|
| -}
|
| -
|
| -void SocketsUdpBindFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - content::SocketPermissionRequest param(
|
| - SocketPermissionRequest::UDP_BIND,
|
| - params_->address,
|
| - params_->port);
|
| - if (!SocketsManifestData::CheckRequest(GetExtension(), param)) {
|
| - error_ = kPermissionError;
|
| - return;
|
| - }
|
| -
|
| - int net_result = socket->Bind(params_->address, params_->port);
|
| - if (net_result == net::OK) {
|
| - socket_event_dispatcher_->OnSocketBind(extension_->id(),
|
| - params_->socket_id);
|
| - }
|
| -
|
| - if (net_result != net::OK)
|
| - error_ = net::ErrorToString(net_result);
|
| - results_ = sockets_udp::Bind::Results::Create(net_result);
|
| -}
|
| -
|
| -SocketsUdpSendFunction::SocketsUdpSendFunction()
|
| - : io_buffer_size_(0) {}
|
| -
|
| -SocketsUdpSendFunction::~SocketsUdpSendFunction() {}
|
| -
|
| -bool SocketsUdpSendFunction::Prepare() {
|
| - params_ = sockets_udp::Send::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - io_buffer_size_ = params_->data.size();
|
| - io_buffer_ = new net::WrappedIOBuffer(params_->data.data());
|
| -
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpSendFunction::AsyncWorkStart() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - AsyncWorkCompleted();
|
| - return;
|
| - }
|
| -
|
| - content::SocketPermissionRequest param(
|
| - SocketPermissionRequest::UDP_SEND_TO,
|
| - params_->address,
|
| - params_->port);
|
| - if (!SocketsManifestData::CheckRequest(GetExtension(), param)) {
|
| - error_ = kPermissionError;
|
| - AsyncWorkCompleted();
|
| - return;
|
| - }
|
| -
|
| - StartDnsLookup(params_->address);
|
| -}
|
| -
|
| -void SocketsUdpSendFunction::AfterDnsLookup(int lookup_result) {
|
| - if (lookup_result == net::OK) {
|
| - StartSendTo();
|
| - } else {
|
| - SetSendResult(lookup_result, -1);
|
| - }
|
| -}
|
| -
|
| -void SocketsUdpSendFunction::StartSendTo() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - AsyncWorkCompleted();
|
| - return;
|
| - }
|
| -
|
| - socket->SendTo(io_buffer_, io_buffer_size_, resolved_address_, params_->port,
|
| - base::Bind(&SocketsUdpSendFunction::OnCompleted, this));
|
| -}
|
| -
|
| -void SocketsUdpSendFunction::OnCompleted(int net_result) {
|
| - if (net_result >= net::OK) {
|
| - SetSendResult(net::OK, net_result);
|
| - } else {
|
| - SetSendResult(net_result, -1);
|
| - }
|
| -}
|
| -
|
| -void SocketsUdpSendFunction::SetSendResult(int net_result, int bytes_sent) {
|
| - CHECK(net_result <= net::OK) << "Network status code must be < 0";
|
| -
|
| - sockets_udp::SendInfo send_info;
|
| - send_info.result_code = net_result;
|
| - if (net_result == net::OK) {
|
| - send_info.bytes_sent.reset(new int(bytes_sent));
|
| - }
|
| -
|
| - if (net_result != net::OK)
|
| - error_ = net::ErrorToString(net_result);
|
| - results_ = sockets_udp::Send::Results::Create(send_info);
|
| - AsyncWorkCompleted();
|
| -}
|
| -
|
| -SocketsUdpCloseFunction::SocketsUdpCloseFunction() {}
|
| -
|
| -SocketsUdpCloseFunction::~SocketsUdpCloseFunction() {}
|
| -
|
| -bool SocketsUdpCloseFunction::Prepare() {
|
| - params_ = sockets_udp::Close::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpCloseFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - socket->Disconnect();
|
| - RemoveSocket(params_->socket_id);
|
| - results_ = sockets_udp::Close::Results::Create();
|
| -}
|
| -
|
| -SocketsUdpGetInfoFunction::SocketsUdpGetInfoFunction() {}
|
| -
|
| -SocketsUdpGetInfoFunction::~SocketsUdpGetInfoFunction() {}
|
| -
|
| -bool SocketsUdpGetInfoFunction::Prepare() {
|
| - params_ = sockets_udp::GetInfo::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpGetInfoFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - linked_ptr<sockets_udp::SocketInfo> socket_info =
|
| - CreateSocketInfo(params_->socket_id, socket);
|
| - results_ = sockets_udp::GetInfo::Results::Create(*socket_info);
|
| -}
|
| -
|
| -SocketsUdpGetSocketsFunction::SocketsUdpGetSocketsFunction() {}
|
| -
|
| -SocketsUdpGetSocketsFunction::~SocketsUdpGetSocketsFunction() {}
|
| -
|
| -bool SocketsUdpGetSocketsFunction::Prepare() {
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpGetSocketsFunction::Work() {
|
| - std::vector<linked_ptr<sockets_udp::SocketInfo> > socket_infos;
|
| - base::hash_set<int>* resource_ids = GetSocketIds();
|
| - if (resource_ids != NULL) {
|
| - for (base::hash_set<int>::iterator it = resource_ids->begin();
|
| - it != resource_ids->end(); ++it) {
|
| - int socket_id = *it;
|
| - ResumableUDPSocket* socket = GetUdpSocket(socket_id);
|
| - if (socket) {
|
| - socket_infos.push_back(CreateSocketInfo(socket_id, socket));
|
| - }
|
| - }
|
| - }
|
| - results_ = sockets_udp::GetSockets::Results::Create(socket_infos);
|
| -}
|
| -
|
| -SocketsUdpJoinGroupFunction::SocketsUdpJoinGroupFunction() {}
|
| -
|
| -SocketsUdpJoinGroupFunction::~SocketsUdpJoinGroupFunction() {}
|
| -
|
| -bool SocketsUdpJoinGroupFunction::Prepare() {
|
| - params_ = sockets_udp::JoinGroup::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpJoinGroupFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - content::SocketPermissionRequest param(
|
| - SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP,
|
| - kWildcardAddress,
|
| - kWildcardPort);
|
| - if (!SocketsManifestData::CheckRequest(GetExtension(), param)) {
|
| - error_ = kPermissionError;
|
| - return;
|
| - }
|
| -
|
| - int net_result = socket->JoinGroup(params_->address);
|
| - if (net_result != net::OK)
|
| - error_ = net::ErrorToString(net_result);
|
| - results_ = sockets_udp::JoinGroup::Results::Create(net_result);
|
| -}
|
| -
|
| -SocketsUdpLeaveGroupFunction::SocketsUdpLeaveGroupFunction() {}
|
| -
|
| -SocketsUdpLeaveGroupFunction::~SocketsUdpLeaveGroupFunction() {}
|
| -
|
| -bool SocketsUdpLeaveGroupFunction::Prepare() {
|
| - params_ = api::sockets_udp::LeaveGroup::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpLeaveGroupFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - content::SocketPermissionRequest param(
|
| - SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP,
|
| - kWildcardAddress,
|
| - kWildcardPort);
|
| - if (!SocketsManifestData::CheckRequest(GetExtension(), param)) {
|
| - error_ = kPermissionError;
|
| - return;
|
| - }
|
| -
|
| - int net_result = socket->LeaveGroup(params_->address);
|
| - if (net_result != net::OK)
|
| - error_ = net::ErrorToString(net_result);
|
| - results_ = sockets_udp::LeaveGroup::Results::Create(net_result);
|
| -}
|
| -
|
| -SocketsUdpSetMulticastTimeToLiveFunction::
|
| - SocketsUdpSetMulticastTimeToLiveFunction() {}
|
| -
|
| -SocketsUdpSetMulticastTimeToLiveFunction::
|
| - ~SocketsUdpSetMulticastTimeToLiveFunction() {}
|
| -
|
| -bool SocketsUdpSetMulticastTimeToLiveFunction::Prepare() {
|
| - params_ = api::sockets_udp::SetMulticastTimeToLive::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpSetMulticastTimeToLiveFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - int net_result = socket->SetMulticastTimeToLive(params_->ttl);
|
| - if (net_result != net::OK)
|
| - error_ = net::ErrorToString(net_result);
|
| - results_ = sockets_udp::SetMulticastTimeToLive::Results::Create(net_result);
|
| -}
|
| -
|
| -SocketsUdpSetMulticastLoopbackModeFunction::
|
| - SocketsUdpSetMulticastLoopbackModeFunction() {}
|
| -
|
| -SocketsUdpSetMulticastLoopbackModeFunction::
|
| - ~SocketsUdpSetMulticastLoopbackModeFunction() {}
|
| -
|
| -bool SocketsUdpSetMulticastLoopbackModeFunction::Prepare() {
|
| - params_ = api::sockets_udp::SetMulticastLoopbackMode::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpSetMulticastLoopbackModeFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - int net_result = socket->SetMulticastLoopbackMode(params_->enabled);
|
| - if (net_result != net::OK)
|
| - error_ = net::ErrorToString(net_result);
|
| - results_ = sockets_udp::SetMulticastLoopbackMode::Results::Create(net_result);
|
| -}
|
| -
|
| -SocketsUdpGetJoinedGroupsFunction::SocketsUdpGetJoinedGroupsFunction() {}
|
| -
|
| -SocketsUdpGetJoinedGroupsFunction::~SocketsUdpGetJoinedGroupsFunction() {}
|
| -
|
| -bool SocketsUdpGetJoinedGroupsFunction::Prepare() {
|
| - params_ = api::sockets_udp::GetJoinedGroups::Params::Create(*args_);
|
| - EXTENSION_FUNCTION_VALIDATE(params_.get());
|
| - return true;
|
| -}
|
| -
|
| -void SocketsUdpGetJoinedGroupsFunction::Work() {
|
| - ResumableUDPSocket* socket = GetUdpSocket(params_->socket_id);
|
| - if (!socket) {
|
| - error_ = kSocketNotFoundError;
|
| - return;
|
| - }
|
| -
|
| - content::SocketPermissionRequest param(
|
| - SocketPermissionRequest::UDP_MULTICAST_MEMBERSHIP,
|
| - kWildcardAddress,
|
| - kWildcardPort);
|
| - if (!SocketsManifestData::CheckRequest(GetExtension(), param)) {
|
| - error_ = kPermissionError;
|
| - return;
|
| - }
|
| -
|
| - const std::vector<std::string>& groups = socket->GetJoinedGroups();
|
| - results_ = sockets_udp::GetJoinedGroups::Results::Create(groups);
|
| -}
|
| -
|
| -} // namespace api
|
| -} // namespace extensions
|
|
|