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

Side by Side Diff: content/browser/devtools/devtools_target_descriptor_impl.cc

Issue 24995003: DevTools: Extract target discovery and manipulation from DevToolsHttpHandlerImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added Android implementations Created 7 years, 2 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 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/public/browser/devtools_target_descriptor.h"
6
7 #include "base/strings/stringprintf.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "base/values.h"
10 #include "content/public/browser/devtools_agent_host.h"
11 #include "content/public/browser/favicon_status.h"
12 #include "content/public/browser/navigation_entry.h"
13 #include "content/public/browser/web_contents.h"
14 #include "net/base/escape.h"
15
16 namespace content {
17
18 namespace {
19
20 const char kTargetIdField[] = "id";
21 const char kTargetTypeField[] = "type";
22 const char kTargetTitleField[] = "title";
23 const char kTargetDescriptionField[] = "description";
24 const char kTargetUrlField[] = "url";
25 const char kTargetThumbnailUrlField[] = "thumbnailUrl";
26 const char kTargetFaviconUrlField[] = "faviconUrl";
27 const char kTargetLastActivityTimeField[] = "lastActivityTime";
28
29 const char kTargetTypePage[] = "page";
30 const char kTargetTypeOther[] = "other";
31
32 class DevToolsTargetDescriptorImpl : public content::DevToolsTargetDescriptor {
33 public:
34 explicit DevToolsTargetDescriptorImpl(content::WebContents* web_contents);
35
36 explicit DevToolsTargetDescriptorImpl(
37 const WorkerService::WorkerInfo& worker);
38
39 virtual std::string GetId() const OVERRIDE { return id_; }
40
41 virtual std::string GetType() const OVERRIDE { return type_; }
42
43 virtual std::string GetTitle() const OVERRIDE { return title_; };
44
45 virtual std::string GetDescription() const OVERRIDE { return description_; }
46
47 virtual std::string GetUrl() const OVERRIDE { return url_; }
48
49 virtual std::string GetFaviconUrl() const OVERRIDE { return favicon_url_; }
50
51 virtual base::TimeTicks GetLastActivityTime() const OVERRIDE {
52 return last_activity_time_;
53 }
54
55 virtual base::DictionaryValue* Serialize() const OVERRIDE;
56
57 virtual void OverrideType(const std::string& type) OVERRIDE {
58 type_ = type;
59 }
60
61 virtual void OverrideDescription(const std::string& description) OVERRIDE {
62 description_ = description;
63 }
64
65 private:
66 std::string id_;
67 std::string type_;
68 std::string title_;
69 std::string description_;
70 std::string url_;
71 std::string favicon_url_;
72 base::TimeTicks last_activity_time_;
73 };
74
75 DevToolsTargetDescriptorImpl::DevToolsTargetDescriptorImpl(
76 WebContents* web_contents) {
77 scoped_refptr<DevToolsAgentHost> agent(DevToolsAgentHost::GetOrCreateFor(
78 web_contents->GetRenderViewHost()));
79 id_ = agent->GetId();
80 type_ = kTargetTypePage;
81 title_ = UTF16ToUTF8(net::EscapeForHTML(web_contents->GetTitle()));
82 url_ = web_contents->GetURL().spec();
83
84 NavigationController& controller = web_contents->GetController();
85 NavigationEntry* entry = controller.GetActiveEntry();
86 if (entry != NULL && entry->GetURL().is_valid())
87 favicon_url_ = entry->GetFavicon().url.spec();
88
89 last_activity_time_ = web_contents->GetLastSelectedTime();
90 }
91
92 DevToolsTargetDescriptorImpl::DevToolsTargetDescriptorImpl(
93 const WorkerService::WorkerInfo& worker) {
94 scoped_refptr<DevToolsAgentHost> agent(DevToolsAgentHost::GetForWorker(
95 worker.process_id, worker.route_id));
96 id_ = agent->GetId();
97 type_ = kTargetTypeOther;
98 title_ = UTF16ToUTF8(net::EscapeForHTML(worker.name));
99 url_ = worker.url.spec();
100 description_ =
101 base::StringPrintf("Worker pid:%d", base::GetProcId(worker.handle));
102 }
103
104 base::DictionaryValue* DevToolsTargetDescriptorImpl::Serialize() const {
105 base::DictionaryValue* dict = new base::DictionaryValue;
106
107 dict->SetString(kTargetIdField, id_);
108 dict->SetString(kTargetTypeField, type_);
109 dict->SetString(kTargetTitleField, title_);
110 dict->SetString(kTargetDescriptionField, description_);
111 dict->SetString(kTargetUrlField, url_);
112 dict->SetString(kTargetFaviconUrlField, favicon_url_);
113 dict->SetDouble(kTargetLastActivityTimeField,
114 last_activity_time_.ToInternalValue());
115
116 return dict;
117 }
118
119 }
120
121 // static
122 DevToolsTargetDescriptor*
123 DevToolsTargetDescriptor::FromWebContents(WebContents* web_contents) {
124 return new DevToolsTargetDescriptorImpl(web_contents);
125 }
126
127 // static
128 DevToolsTargetDescriptor*
129 DevToolsTargetDescriptor::FromWorkerInfo(
130 const WorkerService::WorkerInfo& worker) {
131 return new DevToolsTargetDescriptorImpl(worker);
132 }
133
134 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698