| Index: webkit/tools/test_shell/simple_socket_stream_bridge.cc
|
| diff --git a/webkit/tools/test_shell/simple_socket_stream_bridge.cc b/webkit/tools/test_shell/simple_socket_stream_bridge.cc
|
| deleted file mode 100644
|
| index 23253ccd74513ecab518f028ed0d63ab8001a04f..0000000000000000000000000000000000000000
|
| --- a/webkit/tools/test_shell/simple_socket_stream_bridge.cc
|
| +++ /dev/null
|
| @@ -1,259 +0,0 @@
|
| -// 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 <vector>
|
| -
|
| -#include "webkit/tools/test_shell/simple_socket_stream_bridge.h"
|
| -
|
| -#include "base/atomicops.h"
|
| -#include "base/bind.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/message_loop.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "net/socket_stream/socket_stream_job.h"
|
| -#include "net/websockets/websocket_job.h"
|
| -#include "net/url_request/url_request_context.h"
|
| -#include "third_party/WebKit/public/platform/WebSocketStreamHandle.h"
|
| -#include "webkit/glue/websocketstreamhandle_bridge.h"
|
| -#include "webkit/glue/websocketstreamhandle_delegate.h"
|
| -
|
| -using webkit_glue::WebSocketStreamHandleBridge;
|
| -
|
| -const int kNoSocketId = 0;
|
| -
|
| -namespace {
|
| -
|
| -base::MessageLoop* g_io_thread;
|
| -net::URLRequestContext* g_request_context;
|
| -
|
| -class WebSocketStreamHandleBridgeImpl
|
| - : public WebSocketStreamHandleBridge,
|
| - public net::SocketStream::Delegate {
|
| - public:
|
| - WebSocketStreamHandleBridgeImpl(
|
| - WebKit::WebSocketStreamHandle* handle,
|
| - webkit_glue::WebSocketStreamHandleDelegate* delegate);
|
| -
|
| - // WebSocketStreamHandleBridge methods.
|
| - virtual void Connect(const GURL& url) OVERRIDE;
|
| - virtual bool Send(const std::vector<char>& data) OVERRIDE;
|
| - virtual void Close() OVERRIDE;
|
| -
|
| - // net::SocketStream::Delegate methods.
|
| - virtual void OnConnected(net::SocketStream* req,
|
| - int max_pending_send_allowed) OVERRIDE;
|
| - virtual void OnSentData(net::SocketStream* req,
|
| - int amount_sent) OVERRIDE;
|
| - virtual void OnReceivedData(net::SocketStream* req,
|
| - const char* data, int len) OVERRIDE;
|
| - virtual void OnClose(net::SocketStream* req) OVERRIDE;
|
| - virtual void OnError(const net::SocketStream* req, int error_code) OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebSocketStreamHandleBridgeImpl();
|
| -
|
| - // Runs on |g_io_thread|;
|
| - void DoConnect(const GURL& url);
|
| - void DoSend(std::vector<char>* data);
|
| - void DoClose();
|
| -
|
| - // Runs on |message_loop_|;
|
| - void DoOnConnected(int max_amount_send_allowed);
|
| - void DoOnSentData(int amount_sent);
|
| - void DoOnReceivedData(std::vector<char>* data);
|
| - void DoOnClose();
|
| - void DoOnError(int error_code, const char* error_msg);
|
| -
|
| - int socket_id_;
|
| - base::MessageLoop* message_loop_;
|
| - WebKit::WebSocketStreamHandle* handle_;
|
| - webkit_glue::WebSocketStreamHandleDelegate* delegate_;
|
| -
|
| - scoped_refptr<net::SocketStreamJob> socket_;
|
| - // Number of pending tasks to handle net::SocketStream::Delegate methods.
|
| - base::subtle::Atomic32 num_pending_tasks_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WebSocketStreamHandleBridgeImpl);
|
| -};
|
| -
|
| -WebSocketStreamHandleBridgeImpl::WebSocketStreamHandleBridgeImpl(
|
| - WebKit::WebSocketStreamHandle* handle,
|
| - webkit_glue::WebSocketStreamHandleDelegate* delegate)
|
| - : socket_id_(kNoSocketId),
|
| - message_loop_(base::MessageLoop::current()),
|
| - handle_(handle),
|
| - delegate_(delegate),
|
| - num_pending_tasks_(0) {
|
| - net::WebSocketJob::EnsureInit();
|
| -}
|
| -
|
| -WebSocketStreamHandleBridgeImpl::~WebSocketStreamHandleBridgeImpl() {
|
| - DCHECK_EQ(socket_id_, kNoSocketId);
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::Connect(const GURL& url) {
|
| - DCHECK(g_io_thread);
|
| - AddRef(); // Released in DoOnClose().
|
| - g_io_thread->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&WebSocketStreamHandleBridgeImpl::DoConnect, this, url));
|
| - if (delegate_)
|
| - delegate_->WillOpenStream(handle_, url);
|
| -}
|
| -
|
| -bool WebSocketStreamHandleBridgeImpl::Send(
|
| - const std::vector<char>& data) {
|
| - DCHECK(g_io_thread);
|
| - g_io_thread->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&WebSocketStreamHandleBridgeImpl::DoSend, this,
|
| - new std::vector<char>(data)));
|
| - return true;
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::Close() {
|
| - DCHECK(g_io_thread);
|
| - g_io_thread->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&WebSocketStreamHandleBridgeImpl::DoClose, this));
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::OnConnected(
|
| - net::SocketStream* socket, int max_pending_send_allowed) {
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
|
| - message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnConnected, this,
|
| - max_pending_send_allowed));
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::OnSentData(
|
| - net::SocketStream* socket, int amount_sent) {
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
|
| - message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnSentData, this,
|
| - amount_sent));
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::OnReceivedData(
|
| - net::SocketStream* socket, const char* data, int len) {
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
|
| - message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnReceivedData, this,
|
| - new std::vector<char>(data, data + len)));
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::OnClose(net::SocketStream* socket) {
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
|
| - // Release socket_ on IO thread.
|
| - socket_ = NULL;
|
| - socket_id_ = kNoSocketId;
|
| - message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnClose, this));
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::OnError(
|
| - const net::SocketStream* socket, int error_code) {
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, 1);
|
| - message_loop_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&WebSocketStreamHandleBridgeImpl::DoOnError, this,
|
| - error_code, net::ErrorToString(error_code)));
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::DoConnect(const GURL& url) {
|
| - DCHECK(base::MessageLoop::current() == g_io_thread);
|
| - socket_ = net::SocketStreamJob::CreateSocketStreamJob(
|
| - url, this, g_request_context->transport_security_state(),
|
| - g_request_context->ssl_config_service());
|
| - socket_->set_context(g_request_context);
|
| - socket_->Connect();
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::DoSend(std::vector<char>* data) {
|
| - DCHECK(base::MessageLoop::current() == g_io_thread);
|
| - scoped_ptr<std::vector<char> > scoped_data(data);
|
| - if (!socket_.get())
|
| - return;
|
| - if (!socket_->SendData(&(data->at(0)), data->size()))
|
| - socket_->Close();
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::DoClose() {
|
| - DCHECK(base::MessageLoop::current() == g_io_thread);
|
| - if (!socket_.get())
|
| - return;
|
| - socket_->Close();
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::DoOnConnected(
|
| - int max_pending_send_allowed) {
|
| - DCHECK(base::MessageLoop::current() == message_loop_);
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
|
| - if (delegate_)
|
| - delegate_->DidOpenStream(handle_, max_pending_send_allowed);
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::DoOnSentData(int amount_sent) {
|
| - DCHECK(base::MessageLoop::current() == message_loop_);
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
|
| - if (delegate_)
|
| - delegate_->DidSendData(handle_, amount_sent);
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::DoOnReceivedData(
|
| - std::vector<char>* data) {
|
| - DCHECK(base::MessageLoop::current() == message_loop_);
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
|
| - scoped_ptr<std::vector<char> > scoped_data(data);
|
| - if (delegate_)
|
| - delegate_->DidReceiveData(handle_, &(data->at(0)), data->size());
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::DoOnClose() {
|
| - DCHECK(base::MessageLoop::current() == message_loop_);
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
|
| - // Don't handle OnClose if there are pending tasks.
|
| - DCHECK_EQ(num_pending_tasks_, 0);
|
| - DCHECK(!socket_.get());
|
| - DCHECK_EQ(socket_id_, kNoSocketId);
|
| - webkit_glue::WebSocketStreamHandleDelegate* delegate = delegate_;
|
| - delegate_ = NULL;
|
| - if (delegate)
|
| - delegate->DidClose(handle_);
|
| - Release();
|
| -}
|
| -
|
| -void WebSocketStreamHandleBridgeImpl::DoOnError(
|
| - int error_code, const char* error_msg) {
|
| - DCHECK(base::MessageLoop::current() == message_loop_);
|
| - base::subtle::NoBarrier_AtomicIncrement(&num_pending_tasks_, -1);
|
| - if (delegate_)
|
| - delegate_->DidFail(handle_, error_code, ASCIIToUTF16(error_msg));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -/* static */
|
| -void SimpleSocketStreamBridge::InitializeOnIOThread(
|
| - net::URLRequestContext* request_context) {
|
| - g_io_thread = base::MessageLoop::current();
|
| - g_request_context = request_context;
|
| -}
|
| -
|
| -void SimpleSocketStreamBridge::Cleanup() {
|
| - g_io_thread = NULL;
|
| - g_request_context = NULL;
|
| -}
|
| -
|
| -/* static */
|
| -webkit_glue::WebSocketStreamHandleBridge* SimpleSocketStreamBridge::Create(
|
| - WebKit::WebSocketStreamHandle* handle,
|
| - webkit_glue::WebSocketStreamHandleDelegate* delegate) {
|
| - return new WebSocketStreamHandleBridgeImpl(handle, delegate);
|
| -}
|
|
|