Index: content/child/socket_stream_dispatcher.cc |
diff --git a/content/child/socket_stream_dispatcher.cc b/content/child/socket_stream_dispatcher.cc |
deleted file mode 100644 |
index 789a31a16eb8152f2f9bb64f6785623038d0ac86..0000000000000000000000000000000000000000 |
--- a/content/child/socket_stream_dispatcher.cc |
+++ /dev/null |
@@ -1,255 +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 "content/child/socket_stream_dispatcher.h" |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/bind.h" |
-#include "base/id_map.h" |
-#include "base/lazy_instance.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/strings/string16.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "content/child/child_thread.h" |
-#include "content/child/web_socket_stream_handle_bridge.h" |
-#include "content/child/web_socket_stream_handle_delegate.h" |
-#include "content/child/web_socket_stream_handle_impl.h" |
-#include "content/common/socket_stream.h" |
-#include "content/common/socket_stream_handle_data.h" |
-#include "content/common/socket_stream_messages.h" |
-#include "net/base/net_errors.h" |
-#include "url/gurl.h" |
- |
-namespace content { |
- |
-// IPCWebSocketStreamHandleBridge is owned by each SocketStreamHandle. |
-// It communicates with the main browser process via SocketStreamDispatcher. |
-class IPCWebSocketStreamHandleBridge : public WebSocketStreamHandleBridge { |
- public: |
- IPCWebSocketStreamHandleBridge(blink::WebSocketStreamHandle* handle, |
- WebSocketStreamHandleDelegate* delegate) |
- : socket_id_(kNoSocketId), handle_(handle), delegate_(delegate) {} |
- |
- // Returns the handle having given id or NULL if there is no such handle. |
- static IPCWebSocketStreamHandleBridge* FromSocketId(int id); |
- |
- // WebSocketStreamHandleBridge methods. |
- void Connect(const GURL& url) override; |
- bool Send(const std::vector<char>& data) override; |
- void Close() override; |
- |
- // Called by SocketStreamDispatcher. |
- void OnConnected(int max_amount_send_allowed); |
- void OnSentData(int amount_sent); |
- void OnReceivedData(const std::vector<char>& data); |
- void OnClosed(); |
- void OnFailed(int error_code, const std::string& error_msg); |
- |
- private: |
- ~IPCWebSocketStreamHandleBridge() override; |
- |
- // The ID for this bridge and corresponding SocketStream instance in the |
- // browser process. |
- int socket_id_; |
- |
- blink::WebSocketStreamHandle* handle_; |
- WebSocketStreamHandleDelegate* delegate_; |
- |
- // Map from ID to bridge instance. |
- static base::LazyInstance<IDMap<IPCWebSocketStreamHandleBridge> >::Leaky |
- all_bridges; |
-}; |
- |
-// static |
-base::LazyInstance<IDMap<IPCWebSocketStreamHandleBridge> >::Leaky |
- IPCWebSocketStreamHandleBridge::all_bridges = LAZY_INSTANCE_INITIALIZER; |
- |
-/* static */ |
-IPCWebSocketStreamHandleBridge* IPCWebSocketStreamHandleBridge::FromSocketId( |
- int id) { |
- return all_bridges.Get().Lookup(id); |
-} |
- |
-IPCWebSocketStreamHandleBridge::~IPCWebSocketStreamHandleBridge() { |
- DVLOG(1) << "Bridge (" << this << ", socket_id_=" << socket_id_ |
- << ") Destructor"; |
- |
- if (socket_id_ == kNoSocketId) |
- return; |
- |
- ChildThread::current()->Send(new SocketStreamHostMsg_Close(socket_id_)); |
- socket_id_ = kNoSocketId; |
-} |
- |
-void IPCWebSocketStreamHandleBridge::Connect(const GURL& url) { |
- DVLOG(1) << "Bridge (" << this << ") Connect (url=" << url << ")"; |
- |
- DCHECK_EQ(socket_id_, kNoSocketId); |
- if (delegate_) |
- delegate_->WillOpenStream(handle_, url); |
- |
- socket_id_ = all_bridges.Get().Add(this); |
- DCHECK_NE(socket_id_, kNoSocketId); |
- int render_frame_id = MSG_ROUTING_NONE; |
- WebSocketStreamHandleImpl* impl = |
- static_cast<WebSocketStreamHandleImpl*>(handle_); |
- const SocketStreamHandleData* data = |
- static_cast<SocketStreamHandleData*>(impl->GetUserData(handle_)); |
- if (data) |
- render_frame_id = data->render_frame_id(); |
- AddRef(); // Released in OnClosed(). |
- ChildThread::current()->Send( |
- new SocketStreamHostMsg_Connect(render_frame_id, url, socket_id_)); |
- DVLOG(1) << "Bridge #" << socket_id_ << " sent IPC Connect"; |
- // TODO(ukai): timeout to OnConnected. |
-} |
- |
-bool IPCWebSocketStreamHandleBridge::Send(const std::vector<char>& data) { |
- DVLOG(1) << "Bridge #" << socket_id_ << " Send (" << data.size() |
- << " bytes)"; |
- |
- ChildThread::current()->Send( |
- new SocketStreamHostMsg_SendData(socket_id_, data)); |
- if (delegate_) |
- delegate_->WillSendData(handle_, &data[0], data.size()); |
- return true; |
-} |
- |
-void IPCWebSocketStreamHandleBridge::Close() { |
- DVLOG(1) << "Bridge #" << socket_id_ << " Close"; |
- |
- ChildThread::current()->Send(new SocketStreamHostMsg_Close(socket_id_)); |
-} |
- |
-void IPCWebSocketStreamHandleBridge::OnConnected(int max_pending_send_allowed) { |
- DVLOG(1) << "Bridge #" << socket_id_ |
- << " OnConnected (max_pending_send_allowed=" |
- << max_pending_send_allowed << ")"; |
- |
- if (delegate_) |
- delegate_->DidOpenStream(handle_, max_pending_send_allowed); |
-} |
- |
-void IPCWebSocketStreamHandleBridge::OnSentData(int amount_sent) { |
- DVLOG(1) << "Bridge #" << socket_id_ << " OnSentData (" << amount_sent |
- << " bytes)"; |
- |
- if (delegate_) |
- delegate_->DidSendData(handle_, amount_sent); |
-} |
- |
-void IPCWebSocketStreamHandleBridge::OnReceivedData( |
- const std::vector<char>& data) { |
- DVLOG(1) << "Bridge #" << socket_id_ << " OnReceiveData (" << data.size() |
- << " bytes)"; |
- if (delegate_) |
- delegate_->DidReceiveData(handle_, &data[0], data.size()); |
-} |
- |
-void IPCWebSocketStreamHandleBridge::OnClosed() { |
- DVLOG(1) << "Bridge #" << socket_id_ << " OnClosed"; |
- |
- if (socket_id_ != kNoSocketId) { |
- all_bridges.Get().Remove(socket_id_); |
- socket_id_ = kNoSocketId; |
- } |
- if (delegate_) |
- delegate_->DidClose(handle_); |
- delegate_ = NULL; |
- Release(); |
-} |
- |
-void IPCWebSocketStreamHandleBridge::OnFailed(int error_code, |
- const std::string& error_msg) { |
- DVLOG(1) << "Bridge #" << socket_id_ << " OnFailed (error_code=" << error_code |
- << ")"; |
- if (delegate_) |
- delegate_->DidFail(handle_, error_code, base::ASCIIToUTF16(error_msg)); |
-} |
- |
-SocketStreamDispatcher::SocketStreamDispatcher() { |
-} |
- |
-// static |
-WebSocketStreamHandleBridge* SocketStreamDispatcher::CreateBridge( |
- blink::WebSocketStreamHandle* handle, |
- WebSocketStreamHandleDelegate* delegate) { |
- return new IPCWebSocketStreamHandleBridge(handle, delegate); |
-} |
- |
-bool SocketStreamDispatcher::OnMessageReceived(const IPC::Message& msg) { |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(SocketStreamDispatcher, msg) |
- IPC_MESSAGE_HANDLER(SocketStreamMsg_Connected, OnConnected) |
- IPC_MESSAGE_HANDLER(SocketStreamMsg_SentData, OnSentData) |
- IPC_MESSAGE_HANDLER(SocketStreamMsg_ReceivedData, OnReceivedData) |
- IPC_MESSAGE_HANDLER(SocketStreamMsg_Closed, OnClosed) |
- IPC_MESSAGE_HANDLER(SocketStreamMsg_Failed, OnFailed) |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- return handled; |
-} |
- |
-void SocketStreamDispatcher::OnConnected(int socket_id, |
- int max_pending_send_allowed) { |
- DVLOG(1) << "SocketStreamDispatcher::OnConnected (max_pending_send_allowed=" |
- << max_pending_send_allowed << ") to socket_id=" << socket_id; |
- |
- IPCWebSocketStreamHandleBridge* bridge = |
- IPCWebSocketStreamHandleBridge::FromSocketId(socket_id); |
- if (bridge) |
- bridge->OnConnected(max_pending_send_allowed); |
- else |
- DLOG(ERROR) << "No bridge for socket_id=" << socket_id; |
-} |
- |
-void SocketStreamDispatcher::OnSentData(int socket_id, int amount_sent) { |
- DVLOG(1) << "SocketStreamDispatcher::OnSentData (" << amount_sent |
- << " bytes) to socket_id=" << socket_id; |
- |
- IPCWebSocketStreamHandleBridge* bridge = |
- IPCWebSocketStreamHandleBridge::FromSocketId(socket_id); |
- if (bridge) |
- bridge->OnSentData(amount_sent); |
- else |
- DLOG(ERROR) << "No bridge for socket_id=" << socket_id; |
-} |
- |
-void SocketStreamDispatcher::OnReceivedData( |
- int socket_id, const std::vector<char>& data) { |
- DVLOG(1) << "SocketStreamDispatcher::OnReceivedData (" << data.size() |
- << " bytes) to socket_id=" << socket_id; |
- |
- IPCWebSocketStreamHandleBridge* bridge = |
- IPCWebSocketStreamHandleBridge::FromSocketId(socket_id); |
- if (bridge) |
- bridge->OnReceivedData(data); |
- else |
- DLOG(ERROR) << "No bridge for socket_id=" << socket_id; |
-} |
- |
-void SocketStreamDispatcher::OnClosed(int socket_id) { |
- DVLOG(1) << "SocketStreamDispatcher::OnClosed to socket_id=" << socket_id; |
- |
- IPCWebSocketStreamHandleBridge* bridge = |
- IPCWebSocketStreamHandleBridge::FromSocketId(socket_id); |
- if (bridge) |
- bridge->OnClosed(); |
- else |
- DLOG(ERROR) << "No bridge for socket_id=" << socket_id; |
-} |
- |
-void SocketStreamDispatcher::OnFailed(int socket_id, int error_code) { |
- IPCWebSocketStreamHandleBridge* bridge = |
- IPCWebSocketStreamHandleBridge::FromSocketId(socket_id); |
- if (bridge) |
- bridge->OnFailed(error_code, net::ErrorToString(error_code)); |
- else |
- DLOG(ERROR) << "No bridge for socket_id=" << socket_id; |
-} |
- |
-} // namespace content |