Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(759)

Side by Side Diff: content/browser/devtools/protocol/browser_handler.cc

Issue 2047833002: DevTools: introduce browser domain for basic target discovery. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments addressed Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698