| OLD | NEW |
| (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 |
| OLD | NEW |