OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/android/devtools_manager_delegate_android.h" | 5 #include "chrome/browser/android/devtools_manager_delegate_android.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/memory/ptr_util.h" |
8 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
9 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
10 #include "build/build_config.h" | 11 #include "build/build_config.h" |
11 #include "chrome/browser/android/tab_android.h" | 12 #include "chrome/browser/android/tab_android.h" |
12 #include "chrome/browser/devtools/devtools_network_protocol_handler.h" | 13 #include "chrome/browser/devtools/devtools_network_protocol_handler.h" |
13 #include "chrome/browser/ui/android/tab_model/tab_model.h" | 14 #include "chrome/browser/ui/android/tab_model/tab_model.h" |
14 #include "chrome/browser/ui/android/tab_model/tab_model_list.h" | 15 #include "chrome/browser/ui/android/tab_model/tab_model_list.h" |
15 #include "chrome/common/features.h" | 16 #include "chrome/common/features.h" |
| 17 #include "chrome/grit/browser_resources.h" |
16 #include "content/public/browser/devtools_agent_host.h" | 18 #include "content/public/browser/devtools_agent_host.h" |
17 #include "content/public/browser/devtools_agent_host_client.h" | 19 #include "content/public/browser/devtools_agent_host_client.h" |
18 #include "content/public/browser/devtools_external_agent_proxy.h" | 20 #include "content/public/browser/devtools_external_agent_proxy.h" |
19 #include "content/public/browser/devtools_external_agent_proxy_delegate.h" | 21 #include "content/public/browser/devtools_external_agent_proxy_delegate.h" |
20 #include "content/public/browser/web_contents.h" | 22 #include "content/public/browser/web_contents.h" |
| 23 #include "ui/base/resource/resource_bundle.h" |
21 | 24 |
22 using content::DevToolsAgentHost; | 25 using content::DevToolsAgentHost; |
23 using content::WebContents; | 26 using content::WebContents; |
24 | 27 |
25 namespace { | 28 namespace { |
26 | 29 |
27 class TabProxyDelegate : public content::DevToolsExternalAgentProxyDelegate, | 30 class TabProxyDelegate : public content::DevToolsExternalAgentProxyDelegate, |
28 public content::DevToolsAgentHostClient { | 31 public content::DevToolsAgentHostClient { |
29 public: | 32 public: |
30 explicit TabProxyDelegate(TabAndroid* tab) | 33 explicit TabProxyDelegate(TabAndroid* tab) |
(...skipping 22 matching lines...) Expand all Loading... |
53 MaterializeAgentHost(); | 56 MaterializeAgentHost(); |
54 } | 57 } |
55 | 58 |
56 void Detach() override { | 59 void Detach() override { |
57 if (agent_host_) | 60 if (agent_host_) |
58 agent_host_->DetachClient(this); | 61 agent_host_->DetachClient(this); |
59 agent_host_ = nullptr; | 62 agent_host_ = nullptr; |
60 proxy_ = nullptr; | 63 proxy_ = nullptr; |
61 } | 64 } |
62 | 65 |
63 std::string GetId() override { | |
64 return base::IntToString(tab_id_); | |
65 } | |
66 | |
67 std::string GetType() override { | 66 std::string GetType() override { |
68 return agent_host_ ? agent_host_->GetType() : DevToolsAgentHost::kTypePage; | 67 return agent_host_ ? agent_host_->GetType() : DevToolsAgentHost::kTypePage; |
69 } | 68 } |
70 | 69 |
71 std::string GetTitle() override { | 70 std::string GetTitle() override { |
72 return agent_host_ ? agent_host_->GetTitle() : title_; | 71 return agent_host_ ? agent_host_->GetTitle() : title_; |
73 } | 72 } |
74 | 73 |
75 std::string GetDescription() override { | 74 std::string GetDescription() override { |
76 return agent_host_ ? agent_host_->GetDescription() : ""; | 75 return agent_host_ ? agent_host_->GetDescription() : ""; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 std::set<WebContents*> tab_web_contents; | 164 std::set<WebContents*> tab_web_contents; |
166 for (TabModelList::const_iterator iter = TabModelList::begin(); | 165 for (TabModelList::const_iterator iter = TabModelList::begin(); |
167 iter != TabModelList::end(); ++iter) { | 166 iter != TabModelList::end(); ++iter) { |
168 TabModel* model = *iter; | 167 TabModel* model = *iter; |
169 for (int i = 0; i < model->GetTabCount(); ++i) { | 168 for (int i = 0; i < model->GetTabCount(); ++i) { |
170 TabAndroid* tab = model->GetTabAt(i); | 169 TabAndroid* tab = model->GetTabAt(i); |
171 if (!tab) | 170 if (!tab) |
172 continue; | 171 continue; |
173 | 172 |
174 scoped_refptr<DevToolsAgentHost> host = | 173 scoped_refptr<DevToolsAgentHost> host = |
175 DevToolsAgentHost::Create(new TabProxyDelegate(tab)); | 174 DevToolsAgentHost::Forward( |
| 175 base::IntToString(tab->GetAndroidId()), |
| 176 base::WrapUnique(new TabProxyDelegate(tab))); |
176 } | 177 } |
177 } | 178 } |
178 | 179 |
179 // Add descriptors for targets not associated with any tabs. | 180 // Add descriptors for targets not associated with any tabs. |
180 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); | 181 DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll(); |
181 for (DevToolsAgentHost::List::iterator it = agents.begin(); | 182 for (DevToolsAgentHost::List::iterator it = agents.begin(); |
182 it != agents.end(); ++it) { | 183 it != agents.end(); ++it) { |
183 if (WebContents* web_contents = (*it)->GetWebContents()) { | 184 if (WebContents* web_contents = (*it)->GetWebContents()) { |
184 if (tab_web_contents.find(web_contents) != tab_web_contents.end()) | 185 if (tab_web_contents.find(web_contents) != tab_web_contents.end()) |
185 continue; | 186 continue; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 return nullptr; | 241 return nullptr; |
241 | 242 |
242 WebContents* web_contents = tab_model->CreateNewTabForDevTools(url); | 243 WebContents* web_contents = tab_model->CreateNewTabForDevTools(url); |
243 if (!web_contents) | 244 if (!web_contents) |
244 return nullptr; | 245 return nullptr; |
245 | 246 |
246 TabAndroid* tab = TabAndroid::FromWebContents(web_contents); | 247 TabAndroid* tab = TabAndroid::FromWebContents(web_contents); |
247 if (!tab) | 248 if (!tab) |
248 return nullptr; | 249 return nullptr; |
249 | 250 |
250 return DevToolsAgentHost::Create(new TabProxyDelegate(tab)); | 251 return DevToolsAgentHost::Forward( |
| 252 base::IntToString(tab->GetAndroidId()), |
| 253 base::WrapUnique(new TabProxyDelegate(tab))); |
| 254 } |
| 255 |
| 256 std::string DevToolsManagerDelegateAndroid::GetDiscoveryPageHTML() { |
| 257 return ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 258 IDR_DEVTOOLS_DISCOVERY_PAGE_HTML).as_string(); |
251 } | 259 } |
252 | 260 |
253 void DevToolsManagerDelegateAndroid::DevToolsAgentStateChanged( | 261 void DevToolsManagerDelegateAndroid::DevToolsAgentStateChanged( |
254 DevToolsAgentHost* agent_host, bool attached) { | 262 DevToolsAgentHost* agent_host, bool attached) { |
255 network_protocol_handler_->DevToolsAgentStateChanged(agent_host, attached); | 263 network_protocol_handler_->DevToolsAgentStateChanged(agent_host, attached); |
256 } | 264 } |
OLD | NEW |