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

Unified Diff: chrome/browser/devtools/chrome_devtools_manager_delegate.cc

Issue 2272213003: DevTools: remove devtools_discovery (merged into content). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
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(&params);
+ 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", &params_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;
+}

Powered by Google App Engine
This is Rietveld 408576698