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

Side by Side Diff: android_webview/browser/aw_dev_tools_manager_delegate.cc

Issue 560323005: [DevTools] Move target-related methods from DevToolsHttpHandlerDelegate to DevToolsManagerDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 2014 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 "android_webview/browser/aw_dev_tools_manager_delegate.h"
6
7 #include "android_webview/native/aw_contents.h"
8 #include "base/bind.h"
9 #include "base/json/json_writer.h"
10 #include "base/strings/stringprintf.h"
11 #include "base/strings/utf_string_conversions.h"
12 #include "base/values.h"
13 #include "content/public/browser/devtools_agent_host.h"
14 #include "content/public/browser/devtools_target.h"
15 #include "content/public/browser/web_contents.h"
16
17 using content::DevToolsAgentHost;
18 using content::RenderViewHost;
19 using content::WebContents;
20
21 namespace {
22
23 const char kTargetTypePage[] = "page";
pfeldman 2014/09/11 17:42:35 Should we define those in the content/public?
dgozman 2014/09/11 17:48:09 We discussed this with Vlad when he did recent ref
24 const char kTargetTypeServiceWorker[] = "service_worker";
25 const char kTargetTypeOther[] = "other";
26
27 std::string GetViewDescription(WebContents* web_contents);
28
29 class Target : public content::DevToolsTarget {
30 public:
31 explicit Target(scoped_refptr<DevToolsAgentHost> agent_host);
32
33 virtual std::string GetId() const OVERRIDE { return agent_host_->GetId(); }
34 virtual std::string GetParentId() const OVERRIDE { return std::string(); }
35 virtual std::string GetType() const OVERRIDE {
36 switch (agent_host_->GetType()) {
37 case DevToolsAgentHost::TYPE_WEB_CONTENTS:
38 return kTargetTypePage;
39 case DevToolsAgentHost::TYPE_SERVICE_WORKER:
40 return kTargetTypeServiceWorker;
41 default:
42 break;
43 }
44 return kTargetTypeOther;
45 }
46 virtual std::string GetTitle() const OVERRIDE {
47 return agent_host_->GetTitle();
48 }
49 virtual std::string GetDescription() const OVERRIDE { return description_; }
50 virtual GURL GetURL() const OVERRIDE { return agent_host_->GetURL(); }
51 virtual GURL GetFaviconURL() const OVERRIDE { return GURL(); }
52 virtual base::TimeTicks GetLastActivityTime() const OVERRIDE {
53 return last_activity_time_;
54 }
55 virtual bool IsAttached() const OVERRIDE {
56 return agent_host_->IsAttached();
57 }
58 virtual scoped_refptr<DevToolsAgentHost> GetAgentHost() const OVERRIDE {
59 return agent_host_;
60 }
61 virtual bool Activate() const OVERRIDE { return agent_host_->Activate(); }
62 virtual bool Close() const OVERRIDE { return agent_host_->Close(); }
63
64 private:
65 scoped_refptr<DevToolsAgentHost> agent_host_;
66 std::string description_;
67 base::TimeTicks last_activity_time_;
68 };
69
70 Target::Target(scoped_refptr<DevToolsAgentHost> agent_host)
71 : agent_host_(agent_host) {
72 if (WebContents* web_contents = agent_host->GetWebContents()) {
73 description_ = GetViewDescription(web_contents);
74 last_activity_time_ = web_contents->GetLastActiveTime();
75 }
76 }
77
78 std::string GetViewDescription(WebContents* web_contents) {
79 const android_webview::BrowserViewRenderer* bvr =
80 android_webview::AwContents::FromWebContents(web_contents)
81 ->GetBrowserViewRenderer();
82 if (!bvr) return "";
83 base::DictionaryValue description;
84 description.SetBoolean("attached", bvr->attached_to_window());
85 description.SetBoolean("visible", bvr->IsVisible());
86 gfx::Rect screen_rect = bvr->GetScreenRect();
87 description.SetInteger("screenX", screen_rect.x());
88 description.SetInteger("screenY", screen_rect.y());
89 description.SetBoolean("empty", screen_rect.size().IsEmpty());
90 if (!screen_rect.size().IsEmpty()) {
91 description.SetInteger("width", screen_rect.width());
92 description.SetInteger("height", screen_rect.height());
93 }
94 std::string json;
95 base::JSONWriter::Write(&description, &json);
96 return json;
97 }
98
99 } // namespace
100
101 namespace android_webview {
102
103 AwDevToolsManagerDelegate::AwDevToolsManagerDelegate() {
104 }
105
106 AwDevToolsManagerDelegate::~AwDevToolsManagerDelegate() {
107 }
108
109 base::DictionaryValue* AwDevToolsManagerDelegate::HandleCommand(
110 content::DevToolsAgentHost* agent_host,
111 base::DictionaryValue* command_dict) {
112 return NULL;
113 }
114
115 void AwDevToolsManagerDelegate::EnumerateTargets(TargetCallback callback) {
116 TargetList targets;
117 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll();
118 for (DevToolsAgentHost::List::iterator it = agents.begin();
119 it != agents.end(); ++it) {
120 targets.push_back(new Target(*it));
121 }
122 callback.Run(targets);
123 }
124
125 std::string AwDevToolsManagerDelegate::GetPageThumbnailData(const GURL&) {
126 return "";
127 }
128
129 scoped_ptr<content::DevToolsTarget> AwDevToolsManagerDelegate::CreateNewTarget(
130 const GURL&) {
131 return scoped_ptr<content::DevToolsTarget>();
132 }
133
134 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698