Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "content/browser/devtools/protocol/browser_handler.h" | |
| 6 | |
| 7 namespace content { | |
| 8 namespace devtools { | |
| 9 namespace browser { | |
| 10 | |
| 11 namespace { | |
| 12 const char kTargetTypeWebContents[] = "web_contents"; | |
| 13 const char kTargetTypeFrame[] = "frame"; | |
| 14 const char kTargetTypeSharedWorker[] = "shared_worker"; | |
| 15 const char kTargetTypeServiceWorker[] = "service_worker"; | |
| 16 const char kTargetTypeServiceOther[] = "other"; | |
| 17 } | |
| 18 | |
| 19 using Response = DevToolsProtocolClient::Response; | |
| 20 | |
| 21 BrowserHandler::BrowserHandler() { | |
| 22 } | |
| 23 | |
| 24 BrowserHandler::~BrowserHandler() { | |
| 25 } | |
| 26 | |
| 27 void BrowserHandler::SetClient(std::unique_ptr<Client> client) { | |
| 28 client_.swap(client); | |
| 29 } | |
| 30 | |
| 31 static std::string GetTypeString(DevToolsAgentHost* agent_host) { | |
| 32 switch (agent_host->GetType()) { | |
| 33 case DevToolsAgentHost::TYPE_WEB_CONTENTS: | |
| 34 return kTargetTypeWebContents; | |
| 35 case DevToolsAgentHost::TYPE_FRAME: | |
| 36 return kTargetTypeFrame; | |
| 37 case DevToolsAgentHost::TYPE_SHARED_WORKER: | |
| 38 return kTargetTypeSharedWorker; | |
| 39 case DevToolsAgentHost::TYPE_SERVICE_WORKER: | |
| 40 return kTargetTypeServiceWorker; | |
| 41 default: | |
| 42 return kTargetTypeServiceOther; | |
| 43 } | |
| 44 } | |
| 45 | |
| 46 Response BrowserHandler::GetTargets(TargetInfos* infos) { | |
| 47 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); | |
| 48 for (DevToolsAgentHost::List::iterator it = agents.begin(); | |
| 49 it != agents.end(); ++it) { | |
| 50 DevToolsAgentHost* agent_host = (*it).get(); | |
| 51 scoped_refptr<devtools::browser::TargetInfo> info = | |
| 52 devtools::browser::TargetInfo::Create()-> | |
| 53 set_target_id(agent_host->GetId())-> | |
| 54 set_type(GetTypeString(agent_host))-> | |
| 55 set_title(agent_host->GetTitle())-> | |
| 56 set_url(agent_host->GetURL().spec()); | |
| 57 } | |
| 58 return Response::OK(); | |
| 59 } | |
| 60 | |
| 61 Response BrowserHandler::Attach(const std::string& targetId) { | |
| 62 scoped_refptr<DevToolsAgentHost> agent_host = | |
| 63 DevToolsAgentHost::GetForId(targetId); | |
| 64 if (!agent_host) | |
| 65 return Response::ServerError("No host with given id found"); | |
| 66 bool success = agent_host->AttachClient(this); | |
| 67 return success ? Response::OK() : | |
| 68 Response::ServerError("Host is already being debugged"); | |
|
dgozman
2016/06/08 03:53:29
s/Host/Target in error messages
pfeldman
2016/06/08 15:54:52
Done.
| |
| 69 } | |
| 70 | |
| 71 Response BrowserHandler::Detach(const std::string& targetId) { | |
| 72 scoped_refptr<DevToolsAgentHost> agent_host = | |
| 73 DevToolsAgentHost::GetForId(targetId); | |
| 74 if (!agent_host) | |
| 75 return Response::ServerError("No host with given id found"); | |
| 76 bool success = agent_host->DetachClient(this); | |
| 77 return success ? Response::OK() : | |
| 78 Response::ServerError("Host is not being debugged"); | |
| 79 } | |
| 80 | |
| 81 Response BrowserHandler::SendMessage(const std::string& targetId, | |
| 82 const std::string& message) { | |
| 83 scoped_refptr<DevToolsAgentHost> agent_host = | |
| 84 DevToolsAgentHost::GetForId(targetId); | |
| 85 if (!agent_host) | |
| 86 return Response::ServerError("No host with given id found"); | |
| 87 agent_host->DispatchProtocolMessage(message); | |
| 88 return Response::OK(); | |
| 89 } | |
| 90 | |
| 91 void BrowserHandler::DispatchProtocolMessage( | |
| 92 DevToolsAgentHost* agent_host, const std::string& message) { | |
| 93 client_->DispatchMessage(DispatchMessageParams::Create()-> | |
| 94 set_target_id(agent_host->GetId())-> | |
| 95 set_message(message)); | |
| 96 } | |
| 97 | |
| 98 void BrowserHandler::AgentHostClosed(DevToolsAgentHost* agent_host, | |
| 99 bool replaced_with_another_client) { | |
| 100 } | |
|
dgozman
2016/06/08 03:53:29
Should we send "detached" event to the target? But
pfeldman
2016/06/08 15:54:52
Don't we deliver detach reason already or should I
dgozman
2016/06/08 15:59:09
We already do. I think it may be better to deliver
| |
| 101 | |
| 102 | |
|
dgozman
2016/06/08 03:53:29
nit: extra blank line
pfeldman
2016/06/08 15:54:52
Done.
| |
| 103 } // namespace browser | |
| 104 } // namespace devtools | |
| 105 } // namespace content | |
| OLD | NEW |