| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/devtools/devtools_agent_host_impl.h" | 5 #include "content/browser/devtools/devtools_agent_host_impl.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/guid.h" | 10 #include "base/guid.h" |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 return NULL; | 95 return NULL; |
| 96 return it->second; | 96 return it->second; |
| 97 } | 97 } |
| 98 | 98 |
| 99 // static | 99 // static |
| 100 scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::Create( | 100 scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::Create( |
| 101 DevToolsExternalAgentProxyDelegate* delegate) { | 101 DevToolsExternalAgentProxyDelegate* delegate) { |
| 102 return new ForwardingAgentHost(delegate); | 102 return new ForwardingAgentHost(delegate); |
| 103 } | 103 } |
| 104 | 104 |
| 105 void DevToolsAgentHostImpl::AttachClient(DevToolsAgentHostClient* client) { | 105 bool DevToolsAgentHostImpl::InnerAttach(DevToolsAgentHostClient* client, |
| 106 bool force) { |
| 107 if (client_ && !force) |
| 108 return false; |
| 109 |
| 106 scoped_refptr<DevToolsAgentHostImpl> protect(this); | 110 scoped_refptr<DevToolsAgentHostImpl> protect(this); |
| 107 ++session_id_; | 111 ++session_id_; |
| 108 if (client_) { | 112 if (client_) { |
| 109 client_->AgentHostClosed(this, true); | 113 client_->AgentHostClosed(this, true); |
| 110 InnerDetach(); | 114 InnerDetach(); |
| 111 } | 115 } |
| 112 client_ = client; | 116 client_ = client; |
| 113 Attach(); | 117 Attach(); |
| 118 return true; |
| 114 } | 119 } |
| 115 | 120 |
| 116 void DevToolsAgentHostImpl::DetachClient() { | 121 bool DevToolsAgentHostImpl::AttachClient(DevToolsAgentHostClient* client) { |
| 117 if (!client_) | 122 return InnerAttach(client, false); |
| 118 return; | 123 } |
| 124 |
| 125 void DevToolsAgentHostImpl::ForceAttachClient(DevToolsAgentHostClient* client) { |
| 126 InnerAttach(client, true); |
| 127 } |
| 128 |
| 129 bool DevToolsAgentHostImpl::DetachClient(DevToolsAgentHostClient* client) { |
| 130 if (!client_ || client_ != client) |
| 131 return false; |
| 119 | 132 |
| 120 scoped_refptr<DevToolsAgentHostImpl> protect(this); | 133 scoped_refptr<DevToolsAgentHostImpl> protect(this); |
| 121 client_ = NULL; | 134 client_ = NULL; |
| 122 InnerDetach(); | 135 InnerDetach(); |
| 136 return true; |
| 137 } |
| 138 |
| 139 bool DevToolsAgentHostImpl::DispatchProtocolMessage( |
| 140 DevToolsAgentHostClient* client, |
| 141 const std::string& message) { |
| 142 if (!client_ || client_ != client) |
| 143 return false; |
| 144 return DispatchProtocolMessage(message); |
| 123 } | 145 } |
| 124 | 146 |
| 125 void DevToolsAgentHostImpl::InnerDetach() { | 147 void DevToolsAgentHostImpl::InnerDetach() { |
| 126 Detach(); | 148 Detach(); |
| 127 io_context_.DiscardAllStreams(); | 149 io_context_.DiscardAllStreams(); |
| 128 } | 150 } |
| 129 | 151 |
| 130 bool DevToolsAgentHostImpl::IsAttached() { | 152 bool DevToolsAgentHostImpl::IsAttached() { |
| 131 return !!client_; | 153 return !!client_; |
| 132 } | 154 } |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 | 303 |
| 282 if (chunk.is_last) { | 304 if (chunk.is_last) { |
| 283 CHECK(message_buffer_.size() == message_buffer_size_); | 305 CHECK(message_buffer_.size() == message_buffer_size_); |
| 284 callback_.Run(chunk.session_id, message_buffer_); | 306 callback_.Run(chunk.session_id, message_buffer_); |
| 285 message_buffer_ = std::string(); | 307 message_buffer_ = std::string(); |
| 286 message_buffer_size_ = 0; | 308 message_buffer_size_ = 0; |
| 287 } | 309 } |
| 288 } | 310 } |
| 289 | 311 |
| 290 } // namespace content | 312 } // namespace content |
| OLD | NEW |