Index: chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
diff --git a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
index ca25d95a7575ef5eb795cfd9f54c407ab63c03c2..08c9743764d866d629fbe2c3d726a48fa2fa625f 100644 |
--- a/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
+++ b/chrome/browser/devtools/chrome_devtools_manager_delegate.cc |
@@ -7,7 +7,6 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
#include "chrome/browser/devtools/devtools_network_protocol_handler.h" |
-#include "components/devtools_discovery/devtools_discovery_manager.h" |
#include "content/public/browser/devtools_agent_host.h" |
#include "content/public/browser/web_contents.h" |
@@ -15,6 +14,9 @@ |
#include "chrome/browser/devtools/devtools_window.h" |
#include "chrome/browser/extensions/extension_tab_util.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/profiles/profile_manager.h" |
+#include "chrome/browser/ui/browser_navigator.h" |
+#include "chrome/browser/ui/browser_navigator_params.h" |
#include "chrome/browser/ui/tab_contents/tab_contents_iterator.h" |
#include "content/public/browser/render_frame_host.h" |
#include "extensions/browser/extension_host.h" |
@@ -26,8 +28,6 @@ |
#include "chrome/browser/ui/android/tab_model/tab_model_list.h" |
#endif // !defined(OS_ANDROID) |
-using devtools_discovery::DevToolsDiscoveryManager; |
- |
char ChromeDevToolsManagerDelegate::kTypeApp[] = "app"; |
char ChromeDevToolsManagerDelegate::kTypeBackgroundPage[] = "background_page"; |
@@ -61,8 +61,7 @@ base::DictionaryValue* ChromeDevToolsManagerDelegate::HandleCommand( |
content::DevToolsAgentHost* agent_host, |
base::DictionaryValue* command_dict) { |
std::unique_ptr<base::DictionaryValue> result = |
- DevToolsDiscoveryManager::GetInstance()->HandleCreateTargetCommand( |
- command_dict); |
+ HandleCreateTargetCommand(command_dict); |
if (result) |
return result.release(); // Caller takes ownership. |
return network_protocol_handler_->HandleCommand(agent_host, command_dict); |
@@ -137,8 +136,70 @@ std::string ChromeDevToolsManagerDelegate::GetTargetTitle( |
return ""; |
} |
+scoped_refptr<content::DevToolsAgentHost> |
+ChromeDevToolsManagerDelegate::CreateNewTarget(const GURL& url) { |
+#if !defined(OS_ANDROID) |
+ chrome::NavigateParams params(ProfileManager::GetLastUsedProfile(), |
+ url, ui::PAGE_TRANSITION_AUTO_TOPLEVEL); |
+ params.disposition = NEW_FOREGROUND_TAB; |
+ chrome::Navigate(¶ms); |
+ if (!params.target_contents) |
+ return nullptr; |
+ |
+ if (!params.target_contents) |
dgozman
2016/08/25 01:08:11
This is checked 3 lines above.
|
+ return nullptr; |
+ return content::DevToolsAgentHost::GetOrCreateFor(params.target_contents); |
+ |
+#else |
+ if (TabModelList::empty()) |
+ return nullptr; |
+ |
+ TabModel* tab_model = TabModelList::get(0); |
+ if (!tab_model) |
+ return nullptr; |
+ |
+ WebContents* web_contents = tab_model->CreateNewTabForDevTools(url); |
+ if (!web_contents) |
+ return nullptr; |
+ |
+ TabAndroid* tab = TabAndroid::FromWebContents(web_contents); |
+ if (!tab) |
+ return nullptr; |
+ |
+ return content::DevToolsAgentHost::Create(new TabProxyDelegate( |
dgozman
2016/08/25 01:08:11
TabProxyDelegate is a private class from another f
|
+ tab->GetAndroidId(), tab->GetTitle(), tab->GetURL())); |
+#endif // !defined(OS_ANDROID) |
+} |
+ |
void ChromeDevToolsManagerDelegate::DevToolsAgentStateChanged( |
content::DevToolsAgentHost* agent_host, |
bool attached) { |
network_protocol_handler_->DevToolsAgentStateChanged(agent_host, attached); |
} |
+ |
+std::unique_ptr<base::DictionaryValue> |
+ChromeDevToolsManagerDelegate::HandleCreateTargetCommand( |
+ base::DictionaryValue* command_dict) { |
+ int id; |
+ std::string method; |
+ std::string url; |
+ const base::DictionaryValue* params_dict = nullptr; |
+ if (command_dict->GetInteger("id", &id) && |
+ command_dict->GetString("method", &method) && |
+ method == "Browser.createTarget" && |
+ command_dict->GetDictionary("params", ¶ms_dict) && |
+ params_dict->GetString("url", &url)) { |
+ scoped_refptr<content::DevToolsAgentHost> agent_host = |
+ CreateNewTarget(GURL(url)); |
+ if (!agent_host) |
+ return nullptr; |
+ std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); |
+ result->SetInteger("id", id); |
+ std::unique_ptr<base::DictionaryValue> cmd_result( |
+ new base::DictionaryValue()); |
+ cmd_result->SetString("targetId", agent_host->GetId()); |
+ result->Set("result", std::move(cmd_result)); |
+ return result; |
+ } |
+ return nullptr; |
+} |