Commit 71045750 authored by sergeyu@chromium.org's avatar sergeyu@chromium.org

Remove obsolete webkit_glue::P2PTransport interface.

The P2PTransport interface was used to implement PPB_Transport_Dev
Pepper interface. That interface was removed a while ago. Removing
webkit_glue::P2PTransport too as we don't need it.

Review URL: https://chromiumcodereview.appspot.com/10854131

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@151813 0039d316-1c4b-4281-b951-d872f2087c98
parent a5fd82b5
......@@ -333,8 +333,6 @@
'renderer/p2p/ipc_network_manager.h',
'renderer/p2p/ipc_socket_factory.cc',
'renderer/p2p/ipc_socket_factory.h',
'renderer/p2p/p2p_transport_impl.cc',
'renderer/p2p/p2p_transport_impl.h',
'renderer/p2p/port_allocator.cc',
'renderer/p2p/port_allocator.h',
'renderer/p2p/socket_client.cc',
......
......@@ -445,7 +445,6 @@
'renderer/media/peer_connection_handler_jsep_unittest.cc',
'renderer/media/rtc_video_decoder_unittest.cc',
'renderer/media/webrtc_audio_device_unittest.cc',
'renderer/p2p/p2p_transport_impl_unittest.cc',
],
'dependencies': [
'../third_party/libjingle/libjingle.gyp:libjingle_peerconnection',
......
......@@ -34,7 +34,7 @@ class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface {
LOG(ERROR) << "WebFrame is NULL.";
return NULL;
}
webkit_glue::P2PTransport::Config config;
content::P2PPortAllocator::Config config;
if (stun_servers.size() > 0) {
config.stun_server = stun_servers[0].server.hostname();
config.stun_server_port = stun_servers[0].server.port();
......
......@@ -11,7 +11,6 @@
#include "base/memory/ref_counted.h"
#include "content/common/content_export.h"
#include "third_party/libjingle/source/talk/app/webrtc/peerconnectioninterface.h"
#include "webkit/glue/p2p_transport.h"
namespace content {
class IpcNetworkManager;
......
// Copyright (c) 2012 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 "content/renderer/p2p/p2p_transport_impl.h"
#include "content/renderer/p2p/ipc_network_manager.h"
#include "content/renderer/p2p/ipc_socket_factory.h"
#include "content/renderer/p2p/port_allocator.h"
#include "jingle/glue/channel_socket_adapter.h"
#include "jingle/glue/pseudotcp_adapter.h"
#include "jingle/glue/thread_wrapper.h"
#include "jingle/glue/utils.h"
#include "net/base/net_errors.h"
#include "third_party/libjingle/source/talk/base/helpers.h"
#include "third_party/libjingle/source/talk/p2p/base/constants.h"
#include "third_party/libjingle/source/talk/p2p/base/p2ptransportchannel.h"
#include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h"
namespace content {
P2PTransportImpl::P2PTransportImpl(
talk_base::NetworkManager* network_manager,
talk_base::PacketSocketFactory* socket_factory)
: socket_dispatcher_(NULL),
event_handler_(NULL),
state_(STATE_NONE),
network_manager_(network_manager),
socket_factory_(socket_factory) {
}
P2PTransportImpl::P2PTransportImpl(P2PSocketDispatcher* socket_dispatcher)
: socket_dispatcher_(socket_dispatcher),
event_handler_(NULL),
state_(STATE_NONE),
network_manager_(new IpcNetworkManager(socket_dispatcher)),
socket_factory_(new IpcPacketSocketFactory(socket_dispatcher)) {
DCHECK(socket_dispatcher);
}
P2PTransportImpl::~P2PTransportImpl() {
MessageLoop* message_loop = MessageLoop::current();
// Because libjingle's sigslot doesn't handle deletion from a signal
// handler we have to postpone deletion of libjingle objects.
message_loop->DeleteSoon(FROM_HERE, channel_.release());
message_loop->DeleteSoon(FROM_HERE, allocator_.release());
message_loop->DeleteSoon(FROM_HERE, socket_factory_.release());
message_loop->DeleteSoon(FROM_HERE, network_manager_.release());
}
bool P2PTransportImpl::Init(WebKit::WebFrame* web_frame,
const std::string& name,
Protocol protocol,
const Config& config,
EventHandler* event_handler) {
DCHECK(event_handler);
// Before proceeding, ensure we have libjingle thread wrapper for
// the current thread.
jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop();
name_ = name;
event_handler_ = event_handler;
if (socket_dispatcher_) {
DCHECK(web_frame);
allocator_.reset(new P2PPortAllocator(
web_frame, socket_dispatcher_, network_manager_.get(),
socket_factory_.get(), config));
} else {
// Use BasicPortAllocator if we don't have P2PSocketDispatcher
// (for unittests).
allocator_.reset(new cricket::BasicPortAllocator(
network_manager_.get(), socket_factory_.get()));
}
DCHECK(!channel_.get());
channel_.reset(new cricket::P2PTransportChannel(
"", 0, NULL, allocator_.get()));
channel_->SetIceUfrag(
talk_base::CreateRandomString(cricket::ICE_UFRAG_LENGTH));
channel_->SetIcePwd(talk_base::CreateRandomString(cricket::ICE_PWD_LENGTH));
channel_->SignalRequestSignaling.connect(
this, &P2PTransportImpl::OnRequestSignaling);
channel_->SignalCandidateReady.connect(
this, &P2PTransportImpl::OnCandidateReady);
if (protocol == PROTOCOL_UDP) {
channel_->SignalReadableState.connect(
this, &P2PTransportImpl::OnReadableState);
channel_->SignalWritableState.connect(
this, &P2PTransportImpl::OnWriteableState);
}
channel_adapter_.reset(new jingle_glue::TransportChannelSocketAdapter(
channel_.get()));
channel_->Connect();
if (protocol == PROTOCOL_TCP) {
pseudo_tcp_adapter_.reset(new jingle_glue::PseudoTcpAdapter(
channel_adapter_.release()));
if (config.tcp_receive_window > 0)
pseudo_tcp_adapter_->SetReceiveBufferSize(config.tcp_receive_window);
if (config.tcp_send_window > 0)
pseudo_tcp_adapter_->SetReceiveBufferSize(config.tcp_receive_window);
pseudo_tcp_adapter_->SetNoDelay(config.tcp_no_delay);
if (config.tcp_ack_delay_ms > 0)
pseudo_tcp_adapter_->SetAckDelay(config.tcp_ack_delay_ms);
int result = pseudo_tcp_adapter_->Connect(
base::Bind(&P2PTransportImpl::OnTcpConnected, base::Unretained(this)));
if (result != net::ERR_IO_PENDING)
OnTcpConnected(result);
}
return true;
}
bool P2PTransportImpl::AddRemoteCandidate(const std::string& address) {
cricket::Candidate candidate;
if (!jingle_glue::DeserializeP2PCandidate(address, &candidate)) {
LOG(ERROR) << "Failed to parse candidate " << address;
return false;
}
channel_->OnCandidate(candidate);
return true;
}
void P2PTransportImpl::OnRequestSignaling(
cricket::TransportChannelImpl* channel) {
channel_->OnSignalingReady();
}
void P2PTransportImpl::OnCandidateReady(
cricket::TransportChannelImpl* channel,
const cricket::Candidate& candidate) {
event_handler_->OnCandidateReady(
jingle_glue::SerializeP2PCandidate(candidate));
}
void P2PTransportImpl::OnReadableState(cricket::TransportChannel* channel) {
state_ = static_cast<State>(state_ | STATE_READABLE);
event_handler_->OnStateChange(state_);
}
void P2PTransportImpl::OnWriteableState(cricket::TransportChannel* channel) {
state_ = static_cast<State>(state_ | STATE_WRITABLE);
event_handler_->OnStateChange(state_);
}
net::Socket* P2PTransportImpl::GetChannel() {
if (pseudo_tcp_adapter_.get()) {
DCHECK(!channel_adapter_.get());
return pseudo_tcp_adapter_.get();
} else {
DCHECK(channel_adapter_.get());
return channel_adapter_.get();
}
}
void P2PTransportImpl::OnTcpConnected(int result) {
if (result < 0) {
event_handler_->OnError(result);
return;
}
state_ = static_cast<State>(STATE_READABLE | STATE_WRITABLE);
event_handler_->OnStateChange(state_);
}
} // namespace content
// Copyright (c) 2012 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.
#ifndef CONTENT_RENDERER_P2P_P2P_TRANSPORT_IMPL_H_
#define CONTENT_RENDERER_P2P_P2P_TRANSPORT_IMPL_H_
#include <string>
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "content/common/content_export.h"
#include "net/base/completion_callback.h"
#include "third_party/libjingle/source/talk/base/sigslot.h"
#include "webkit/glue/p2p_transport.h"
namespace cricket {
class Candidate;
class PortAllocator;
class P2PTransportChannel;
class TransportChannel;
class TransportChannelImpl;
} // namespace cricket
namespace jingle_glue {
class TransportChannelSocketAdapter;
class PseudoTcpAdapter;
} // namespace jingle_glue
namespace talk_base {
class NetworkManager;
class PacketSocketFactory;
} // namespace talk_base
namespace content {
class P2PSocketDispatcher;
class CONTENT_EXPORT P2PTransportImpl
: NON_EXPORTED_BASE(public webkit_glue::P2PTransport),
public sigslot::has_slots<> {
public:
// Creates P2PTransportImpl using specified NetworkManager and
// PacketSocketFactory. Takes ownership of |network_manager| and
// |socket_factory|. Provided to be used for tests only.
P2PTransportImpl(talk_base::NetworkManager* network_manager,
talk_base::PacketSocketFactory* socket_factory);
// Creates P2PTransportImpl using specified
// P2PSocketDispatcher. This constructor creates IpcNetworkManager
// and IpcPacketSocketFactory, and keeps ownership of these objects.
explicit P2PTransportImpl(P2PSocketDispatcher* socket_dispatcher);
virtual ~P2PTransportImpl();
// webkit_glue::P2PTransport interface.
virtual bool Init(WebKit::WebFrame* web_frame,
const std::string& name,
Protocol protocol,
const Config& config,
EventHandler* event_handler) OVERRIDE;
virtual bool AddRemoteCandidate(const std::string& address) OVERRIDE;
virtual net::Socket* GetChannel() OVERRIDE;
private:
class ChannelAdapter;
void OnRequestSignaling(cricket::TransportChannelImpl* channel);
void OnCandidateReady(cricket::TransportChannelImpl* channel,
const cricket::Candidate& candidate);
void OnReadableState(cricket::TransportChannel* channel);
void OnWriteableState(cricket::TransportChannel* channel);
void OnTcpConnected(int result);
P2PSocketDispatcher* socket_dispatcher_;
std::string name_;
EventHandler* event_handler_;
State state_;
scoped_ptr<talk_base::NetworkManager> network_manager_;
scoped_ptr<talk_base::PacketSocketFactory> socket_factory_;
scoped_ptr<cricket::PortAllocator> allocator_;
scoped_ptr<cricket::P2PTransportChannel> channel_;
scoped_ptr<jingle_glue::TransportChannelSocketAdapter> channel_adapter_;
scoped_ptr<jingle_glue::PseudoTcpAdapter> pseudo_tcp_adapter_;
DISALLOW_COPY_AND_ASSIGN(P2PTransportImpl);
};
} // namespace content
#endif // CONTENT_RENDERER_P2P_P2P_TRANSPORT_IMPL_H_
This diff is collapsed.
......@@ -50,12 +50,22 @@ bool ParsePortNumber(
} // namespace
P2PPortAllocator::Config::Config()
: stun_server_port(0),
relay_server_port(0),
legacy_relay(false),
disable_tcp_transport(false) {
}
P2PPortAllocator::Config::~Config() {
}
P2PPortAllocator::P2PPortAllocator(
WebKit::WebFrame* web_frame,
P2PSocketDispatcher* socket_dispatcher,
talk_base::NetworkManager* network_manager,
talk_base::PacketSocketFactory* socket_factory,
const webkit_glue::P2PTransport::Config& config)
const Config& config)
: cricket::BasicPortAllocator(network_manager, socket_factory),
web_frame_(web_frame),
socket_dispatcher_(socket_dispatcher),
......
......@@ -10,7 +10,6 @@
#include "net/base/net_util.h"
#include "third_party/libjingle/source/talk/p2p/client/basicportallocator.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLLoaderClient.h"
#include "webkit/glue/p2p_transport.h"
namespace WebKit {
class WebFrame;
......@@ -23,15 +22,41 @@ class P2PHostAddressRequest;
class P2PPortAllocatorSession;
class P2PSocketDispatcher;
// TODO(sergeyu): There is overlap between this class and
// HttpPortAllocator. Refactor HttpPortAllocator
// TODO(sergeyu): There is overlap between this class and HttpPortAllocator.
// Refactor this class to inherit from HttpPortAllocator to avoid code
// duplication.
class P2PPortAllocator : public cricket::BasicPortAllocator {
public:
struct Config {
Config();
~Config();
// STUN server address and port.
std::string stun_server;
int stun_server_port;
// Relay server address and port.
std::string relay_server;
int relay_server_port;
// Relay server username.
std::string relay_username;
// Relay server password.
std::string relay_password;
// When set to true relay is a legacy Google relay (not TURN compliant).
bool legacy_relay;
// Disable TCP-based transport when set to true.
bool disable_tcp_transport;
};
P2PPortAllocator(WebKit::WebFrame* web_frame,
P2PSocketDispatcher* socket_dispatcher,
talk_base::NetworkManager* network_manager,
talk_base::PacketSocketFactory* socket_factory,
const webkit_glue::P2PTransport::Config& config);
const Config& config);
virtual ~P2PPortAllocator();
virtual cricket::PortAllocatorSession* CreateSessionInternal(
......@@ -45,7 +70,7 @@ class P2PPortAllocator : public cricket::BasicPortAllocator {
WebKit::WebFrame* web_frame_;
P2PSocketDispatcher* socket_dispatcher_;
webkit_glue::P2PTransport::Config config_;
Config config_;
DISALLOW_COPY_AND_ASSIGN(P2PPortAllocator);
};
......
......@@ -40,7 +40,6 @@
#include "content/renderer/media/audio_hardware.h"
#include "content/renderer/media/media_stream_dispatcher.h"
#include "content/renderer/media/pepper_platform_video_decoder_impl.h"
#include "content/renderer/p2p/p2p_transport_impl.h"
#include "content/renderer/p2p/socket_dispatcher.h"
#include "content/renderer/pepper/content_renderer_pepper_host_factory.h"
#include "content/renderer/pepper/pepper_broker_impl.h"
......@@ -1402,14 +1401,6 @@ void PepperPluginDelegateImpl::SaveURLAs(const GURL& url) {
render_view_->routing_id(), url, referrer));
}
webkit_glue::P2PTransport* PepperPluginDelegateImpl::CreateP2PTransport() {
#if defined(ENABLE_P2P_APIS)
return new P2PTransportImpl(render_view_->p2p_socket_dispatcher());
#else
return NULL;
#endif
}
double PepperPluginDelegateImpl::GetLocalTimeZoneOffset(base::Time t) {
double result = 0.0;
render_view_->Send(new PepperMsg_GetLocalTimeZoneOffset(
......
......@@ -361,7 +361,6 @@ class PepperPluginDelegateImpl
virtual void DidStopLoading() OVERRIDE;
virtual void SetContentRestriction(int restrictions) OVERRIDE;
virtual void SaveURLAs(const GURL& url) OVERRIDE;
virtual webkit_glue::P2PTransport* CreateP2PTransport() OVERRIDE;
virtual double GetLocalTimeZoneOffset(base::Time t) OVERRIDE;
virtual base::SharedMemory* CreateAnonymousSharedMemory(uint32_t size)
OVERRIDE;
......
// Copyright (c) 2011 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 "webkit/glue/p2p_transport.h"
namespace webkit_glue {
P2PTransport::Config::Config()
: stun_server_port(0),
relay_server_port(0),
legacy_relay(false),
tcp_receive_window(0),
tcp_send_window(0),
tcp_no_delay(false),
tcp_ack_delay_ms(0),
disable_tcp_transport(false) {
}
P2PTransport::Config::~Config() {
}
} // namespace webkit_glue
// Copyright (c) 2011 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.
#ifndef WEBKIT_GLUE_P2P_TRANSPORT_H_
#define WEBKIT_GLUE_P2P_TRANSPORT_H_
#include <string>
#include <vector>
#include "base/basictypes.h"
#include "webkit/glue/webkit_glue_export.h"
namespace net {
class Socket;
} // namespace net
namespace WebKit {
class WebFrame;
} // namespace WebKit
namespace webkit_glue {
// Interface for P2P transport.
class P2PTransport {
public:
enum State {
STATE_NONE = 0,
STATE_WRITABLE = 1,
STATE_READABLE = 2,
};
enum Protocol {
PROTOCOL_UDP = 0,
PROTOCOL_TCP = 1,
};
class EventHandler {
public:
virtual ~EventHandler() {}
// Called for each local candidate.
virtual void OnCandidateReady(const std::string& address) = 0;
// Called when readable of writable state of the stream changes.
virtual void OnStateChange(State state) = 0;
// Called when an error occures (e.g. TCP handshake
// failed). P2PTransport object is not usable after that and
// should be destroyed.
virtual void OnError(int error) = 0;
};
struct WEBKIT_GLUE_EXPORT Config {
Config();
~Config();
// STUN server address and port.
std::string stun_server;
int stun_server_port;
// Relay server address and port.
std::string relay_server;
int relay_server_port;
// Relay server username.
std::string relay_username;
// Relay server password.
std::string relay_password;
// When set to true relay is a legacy Google relay (not TURN
// compliant).
bool legacy_relay;
// TCP window sizes. Default size is used when set to 0.
int tcp_receive_window;
int tcp_send_window;
// Disables Neagle's algorithm when set to true.
bool tcp_no_delay;
// TCP ACK delay.
int tcp_ack_delay_ms;
// Disable TCP-based transport when set to true.
bool disable_tcp_transport;
};
virtual ~P2PTransport() {}
// Initialize transport using specified configuration. |web_frame|
// is used to make HTTP requests to relay servers. Returns true
// if initialization succeeded.
virtual bool Init(WebKit::WebFrame* web_frame,
const std::string& name,
Protocol protocol,
const Config& config,
EventHandler* event_handler) = 0;
// Add candidate received from the remote peer. Returns false if the
// provided address is not in a valid format.
virtual bool AddRemoteCandidate(const std::string& address) = 0;
// Returns socket interface that can be used to send/receive
// data. Returned object is owned by the transport. Pending calls on
// the socket are canceled when the transport is destroyed.
virtual net::Socket* GetChannel() = 0;
};
} // namespace webkit_glue
#endif // WEBKIT_GLUE_P2P_TRANSPORT_H_
......@@ -374,8 +374,6 @@
'network_list_observer.h',
'npruntime_util.cc',
'npruntime_util.h',
'p2p_transport.cc',
'p2p_transport.h',
'resource_fetcher.cc',
'resource_fetcher.h',
'resource_loader_bridge.cc',
......
......@@ -398,10 +398,6 @@ void MockPluginDelegate::SetContentRestriction(int restrictions) {
void MockPluginDelegate::SaveURLAs(const GURL& url) {
}
webkit_glue::P2PTransport* MockPluginDelegate::CreateP2PTransport() {
return NULL;
}
double MockPluginDelegate::GetLocalTimeZoneOffset(base::Time t) {
return 0.0;
}
......
......@@ -187,7 +187,6 @@ class MockPluginDelegate : public PluginDelegate {
virtual void DidStopLoading();
virtual void SetContentRestriction(int restrictions);
virtual void SaveURLAs(const GURL& url);
virtual webkit_glue::P2PTransport* CreateP2PTransport();
virtual double GetLocalTimeZoneOffset(base::Time t);
virtual base::SharedMemory* CreateAnonymousSharedMemory(uint32_t size);
virtual ::ppapi::Preferences GetPreferences();
......
......@@ -602,9 +602,6 @@ class PluginDelegate {
// Tells the browser to bring up SaveAs dialog to save specified URL.
virtual void SaveURLAs(const GURL& url) = 0;
// Creates P2PTransport object.
virtual webkit_glue::P2PTransport* CreateP2PTransport() = 0;
virtual double GetLocalTimeZoneOffset(base::Time t) = 0;
// Create an anonymous shared memory segment of size |size| bytes, and return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment