| Index: components/devtools_service/devtools_agent_host.cc
|
| diff --git a/components/devtools_service/devtools_agent_host.cc b/components/devtools_service/devtools_agent_host.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d31811a57c69327be05800e8a9909428a4d60600
|
| --- /dev/null
|
| +++ b/components/devtools_service/devtools_agent_host.cc
|
| @@ -0,0 +1,54 @@
|
| +// Copyright 2015 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 "components/devtools_service/devtools_agent_host.h"
|
| +
|
| +#include "base/guid.h"
|
| +#include "base/logging.h"
|
| +
|
| +namespace devtools_service {
|
| +
|
| +DevToolsAgentHost::DevToolsAgentHost(DevToolsAgentPtr agent)
|
| + : id_(base::GenerateGUID()),
|
| + agent_(agent.Pass()),
|
| + binding_(this),
|
| + delegate_(nullptr) {
|
| + agent_.set_error_handler(this);
|
| +}
|
| +
|
| +DevToolsAgentHost::~DevToolsAgentHost() {
|
| + if (delegate_)
|
| + delegate_->OnAgentHostClosed(this);
|
| +}
|
| +
|
| +void DevToolsAgentHost::SetDelegate(Delegate* delegate) {
|
| + delegate_ = delegate;
|
| + if (delegate_) {
|
| + if (binding_.is_bound())
|
| + return;
|
| +
|
| + DevToolsAgentClientPtr client;
|
| + binding_.Bind(&client);
|
| + agent_->SetClient(client.Pass(), id_);
|
| + } else {
|
| + if (!binding_.is_bound())
|
| + return;
|
| +
|
| + binding_.Close();
|
| + }
|
| +}
|
| +
|
| +void DevToolsAgentHost::SendProtocolMessageToAgent(const std::string& message) {
|
| + agent_->DispatchProtocolMessage(message);
|
| +}
|
| +
|
| +void DevToolsAgentHost::DispatchProtocolMessage(const mojo::String& message) {
|
| + delegate_->DispatchProtocolMessage(this, message);
|
| +}
|
| +
|
| +void DevToolsAgentHost::OnConnectionError() {
|
| + agent_connection_error_handler_.Run();
|
| +}
|
| +
|
| +} // namespace devtools_service
|
|
|