Index: content/browser/devtools/protocol/target_handler.cc |
diff --git a/content/browser/devtools/protocol/target_handler.cc b/content/browser/devtools/protocol/target_handler.cc |
index 254a4ac1f18d2bf98d56f8994177e9dab1d841a7..78778f4bd06e36da6eb449c3842d9b133b13fd1e 100644 |
--- a/content/browser/devtools/protocol/target_handler.cc |
+++ b/content/browser/devtools/protocol/target_handler.cc |
@@ -11,10 +11,7 @@ |
#include "content/browser/frame_host/render_frame_host_impl.h" |
namespace content { |
-namespace devtools { |
-namespace target { |
- |
-using Response = DevToolsProtocolClient::Response; |
+namespace protocol { |
namespace { |
@@ -84,12 +81,13 @@ ServiceWorkerDevToolsAgentHost::Map GetMatchingServiceWorkers( |
return result; |
} |
-scoped_refptr<TargetInfo> CreateInfo(DevToolsAgentHost* host) { |
- return TargetInfo::Create() |
- ->set_target_id(host->GetId()) |
- ->set_title(host->GetTitle()) |
- ->set_url(host->GetURL().spec()) |
- ->set_type(host->GetType()); |
+std::unique_ptr<Target::TargetInfo> CreateInfo(DevToolsAgentHost* host) { |
+ return Target::TargetInfo::Create() |
+ .SetTargetId(host->GetId()) |
+ .SetTitle(host->GetTitle()) |
+ .SetUrl(host->GetURL().spec()) |
+ .SetType(host->GetType()) |
+ .Build(); |
} |
} // namespace |
@@ -103,7 +101,11 @@ TargetHandler::TargetHandler() |
} |
TargetHandler::~TargetHandler() { |
- Detached(); |
+} |
+ |
+void TargetHandler::Wire(UberDispatcher* dispatcher) { |
+ frontend_.reset(new Target::Frontend(dispatcher->channel())); |
+ Target::Dispatcher::wire(dispatcher, this); |
} |
void TargetHandler::SetRenderFrameHost(RenderFrameHostImpl* render_frame_host) { |
@@ -111,16 +113,13 @@ void TargetHandler::SetRenderFrameHost(RenderFrameHostImpl* render_frame_host) { |
UpdateFrames(); |
} |
-void TargetHandler::SetClient(std::unique_ptr<Client> client) { |
- client_.swap(client); |
-} |
- |
-void TargetHandler::Detached() { |
+Response TargetHandler::Disable() { |
SetAutoAttach(false, false); |
SetDiscoverTargets(false); |
for (const auto& id_host : attached_hosts_) |
id_host.second->DetachClient(this); |
attached_hosts_.clear(); |
+ return Response::OK(); |
} |
void TargetHandler::UpdateServiceWorkers() { |
@@ -198,8 +197,7 @@ void TargetHandler::ReattachTargetsOfType( |
void TargetHandler::TargetCreatedInternal(DevToolsAgentHost* host) { |
if (reported_hosts_.find(host->GetId()) != reported_hosts_.end()) |
return; |
- client_->TargetCreated( |
- TargetCreatedParams::Create()->set_target_info(CreateInfo(host))); |
+ frontend_->TargetCreated(CreateInfo(host)); |
reported_hosts_[host->GetId()] = host; |
} |
@@ -208,8 +206,7 @@ void TargetHandler::TargetDestroyedInternal( |
auto it = reported_hosts_.find(host->GetId()); |
if (it == reported_hosts_.end()) |
return; |
- client_->TargetDestroyed(TargetDestroyedParams::Create() |
- ->set_target_id(host->GetId())); |
+ frontend_->TargetDestroyed(host->GetId()); |
reported_hosts_.erase(it); |
} |
@@ -218,9 +215,7 @@ bool TargetHandler::AttachToTargetInternal( |
if (!host->AttachClient(this)) |
return false; |
attached_hosts_[host->GetId()] = host; |
- client_->AttachedToTarget(AttachedToTargetParams::Create() |
- ->set_target_info(CreateInfo(host)) |
- ->set_waiting_for_debugger(waiting_for_debugger)); |
+ frontend_->AttachedToTarget(CreateInfo(host), waiting_for_debugger); |
return true; |
} |
@@ -229,8 +224,7 @@ void TargetHandler::DetachFromTargetInternal(DevToolsAgentHost* host) { |
if (it == attached_hosts_.end()) |
return; |
host->DetachClient(this); |
- client_->DetachedFromTarget(DetachedFromTargetParams::Create()-> |
- set_target_id(host->GetId())); |
+ frontend_->DetachedFromTarget(host->GetId()); |
attached_hosts_.erase(it); |
} |
@@ -284,8 +278,8 @@ Response TargetHandler::SetAttachToFrames(bool value) { |
} |
Response TargetHandler::SetRemoteLocations( |
- const std::vector<std::unique_ptr<base::DictionaryValue>>& locations) { |
- return Response::ServerError("Not supported"); |
+ std::unique_ptr<protocol::Array<Target::RemoteLocation>>) { |
+ return Response::Error("Not supported"); |
} |
Response TargetHandler::AttachToTarget(const std::string& target_id, |
@@ -294,7 +288,7 @@ Response TargetHandler::AttachToTarget(const std::string& target_id, |
scoped_refptr<DevToolsAgentHost> agent_host = |
DevToolsAgentHost::GetForId(target_id); |
if (!agent_host) |
- return Response::ServerError("No target with given id found"); |
+ return Response::InvalidParams("No target with given id found"); |
*out_success = AttachToTargetInternal(agent_host.get(), false); |
return Response::OK(); |
} |
@@ -302,7 +296,7 @@ Response TargetHandler::AttachToTarget(const std::string& target_id, |
Response TargetHandler::DetachFromTarget(const std::string& target_id) { |
auto it = attached_hosts_.find(target_id); |
if (it == attached_hosts_.end()) |
- return Response::InternalError("Not attached to the target"); |
+ return Response::Error("Not attached to the target"); |
DevToolsAgentHost* agent_host = it->second.get(); |
DetachFromTargetInternal(agent_host); |
return Response::OK(); |
@@ -320,7 +314,7 @@ Response TargetHandler::SendMessageToTarget( |
Response TargetHandler::GetTargetInfo( |
const std::string& target_id, |
- scoped_refptr<TargetInfo>* target_info) { |
+ std::unique_ptr<Target::TargetInfo>* target_info) { |
// TODO(dgozman): only allow reported hosts. |
scoped_refptr<DevToolsAgentHost> agent_host( |
DevToolsAgentHost::GetForId(target_id)); |
@@ -345,41 +339,42 @@ Response TargetHandler::CloseTarget(const std::string& target_id, |
scoped_refptr<DevToolsAgentHost> agent_host = |
DevToolsAgentHost::GetForId(target_id); |
if (!agent_host) |
- return Response::ServerError("No target with given id found"); |
+ return Response::InvalidParams("No target with given id found"); |
*out_success = agent_host->Close(); |
return Response::OK(); |
} |
Response TargetHandler::CreateBrowserContext(std::string* out_context_id) { |
- return Response::ServerError("Not supported"); |
+ return Response::Error("Not supported"); |
} |
Response TargetHandler::DisposeBrowserContext(const std::string& context_id, |
bool* out_success) { |
- return Response::ServerError("Not supported"); |
+ return Response::Error("Not supported"); |
} |
Response TargetHandler::CreateTarget(const std::string& url, |
- const int* width, |
- const int* height, |
- const std::string* context_id, |
+ Maybe<int> width, |
+ Maybe<int> height, |
+ Maybe<std::string> context_id, |
std::string* out_target_id) { |
DevToolsManagerDelegate* delegate = |
DevToolsManager::GetInstance()->delegate(); |
if (!delegate) |
- return Response::ServerError("Not supported"); |
+ return Response::Error("Not supported"); |
scoped_refptr<content::DevToolsAgentHost> agent_host = |
delegate->CreateNewTarget(GURL(url)); |
if (!agent_host) |
- return Response::ServerError("Not supported"); |
+ return Response::Error("Not supported"); |
*out_target_id = agent_host->GetId(); |
return Response::OK(); |
} |
Response TargetHandler::GetTargets( |
- std::vector<scoped_refptr<TargetInfo>>* target_infos) { |
+ std::unique_ptr<protocol::Array<Target::TargetInfo>>* target_infos) { |
+ *target_infos = protocol::Array<Target::TargetInfo>::create(); |
for (const auto& host : DevToolsAgentHost::GetOrCreateAll()) |
- target_infos->push_back(CreateInfo(host.get())); |
+ (*target_infos)->addItem(CreateInfo(host.get())); |
return Response::OK(); |
} |
@@ -392,17 +387,13 @@ void TargetHandler::DispatchProtocolMessage( |
if (it == attached_hosts_.end()) |
return; // Already disconnected. |
- client_->ReceivedMessageFromTarget( |
- ReceivedMessageFromTargetParams::Create()-> |
- set_target_id(host->GetId())-> |
- set_message(message)); |
+ frontend_->ReceivedMessageFromTarget(host->GetId(), message); |
} |
void TargetHandler::AgentHostClosed( |
DevToolsAgentHost* host, |
bool replaced_with_another_client) { |
- client_->DetachedFromTarget(DetachedFromTargetParams::Create()-> |
- set_target_id(host->GetId())); |
+ frontend_->DetachedFromTarget(host->GetId()); |
attached_hosts_.erase(host->GetId()); |
} |
@@ -462,6 +453,5 @@ void TargetHandler::WorkerDestroyed( |
UpdateServiceWorkers(); |
} |
-} // namespace target |
-} // namespace devtools |
+} // namespace protocol |
} // namespace content |