| 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);
 | 
| -}
 | 
| 
 |