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 target with given id found"); |
| 66 bool success = agent_host->AttachClient(this); |
| 67 return success ? Response::OK() : |
| 68 Response::ServerError("Target is already being debugged"); |
| 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 target with given id found"); |
| 76 bool success = agent_host->DetachClient(this); |
| 77 return success ? Response::OK() : |
| 78 Response::ServerError("Target 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 target with given id found"); |
| 87 agent_host->DispatchProtocolMessage(this, 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 } |
| 101 |
| 102 } // namespace browser |
| 103 } // namespace devtools |
| 104 } // namespace content |
OLD | NEW |