Chromium Code Reviews| 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..28769517b19aa3294ff87cd1f9035a690cbefe1a 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::Error("No target with given id found"); |
|
caseq
2016/12/14 06:44:06
This should perhaps be consistent with CloseTarget
dgozman
2016/12/15 03:16:35
Done.
|
| *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"); |
|
caseq
2016/12/14 06:44:06
ditto.
|
| 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 |