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

Unified Diff: chrome/browser/android/dev_tools_discovery_provider_android.cc

Issue 1099243004: [DevTools] Migrate android to devtools_discovery. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 8 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/android/dev_tools_discovery_provider_android.cc
diff --git a/chrome/browser/android/dev_tools_manager_delegate_android.cc b/chrome/browser/android/dev_tools_discovery_provider_android.cc
similarity index 42%
copy from chrome/browser/android/dev_tools_manager_delegate_android.cc
copy to chrome/browser/android/dev_tools_discovery_provider_android.cc
index b7561ad6afeb2adb95a7ad0c7ea00b391c6a2252..e1a481f3495b22fc0f23a7af9ec6cf8ed35614f4 100644
--- a/chrome/browser/android/dev_tools_manager_delegate_android.cc
+++ b/chrome/browser/android/dev_tools_discovery_provider_android.cc
@@ -1,20 +1,20 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
+// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/android/dev_tools_manager_delegate_android.h"
+#include "chrome/browser/android/dev_tools_discovery_provider_android.h"
#include "base/basictypes.h"
+#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/android/tab_android.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/history/top_sites_factory.h"
-#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/android/tab_model/tab_model.h"
#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
-#include "components/history/core/browser/top_sites.h"
+#include "components/devtools_discovery/basic_target_descriptor.h"
+#include "components/devtools_discovery/devtools_discovery_manager.h"
#include "content/public/browser/devtools_agent_host.h"
#include "content/public/browser/devtools_target.h"
#include "content/public/browser/favicon_status.h"
@@ -26,10 +26,6 @@ using content::WebContents;
namespace {
-const char kTargetTypePage[] = "page";
-const char kTargetTypeServiceWorker[] = "service_worker";
-const char kTargetTypeOther[] = "other";
-
GURL GetFaviconURLForContents(WebContents* web_contents) {
content::NavigationController& controller = web_contents->GetController();
content::NavigationEntry* entry = controller.GetActiveEntry();
@@ -38,81 +34,54 @@ GURL GetFaviconURLForContents(WebContents* web_contents) {
return GURL();
}
-GURL GetFaviconURLForAgentHost(
- scoped_refptr<DevToolsAgentHost> agent_host) {
- if (WebContents* web_contents = agent_host->GetWebContents())
- return GetFaviconURLForContents(web_contents);
- return GURL();
-}
-
-base::TimeTicks GetLastActiveTimeForAgentHost(
- scoped_refptr<DevToolsAgentHost> agent_host) {
- if (WebContents* web_contents = agent_host->GetWebContents())
- return web_contents->GetLastActiveTime();
- return base::TimeTicks();
-}
-
-class TargetBase : public content::DevToolsTarget {
+class TabDescriptor : public devtools_discovery::DevToolsTargetDescriptor {
public:
- // content::DevToolsTarget implementation:
- std::string GetParentId() const override { return std::string(); }
-
- std::string GetTitle() const override { return title_; }
-
- std::string GetDescription() const override { return std::string(); }
-
- GURL GetURL() const override { return url_; }
+ static TabDescriptor* CreateForWebContents(int tab_id,
+ WebContents* web_contents) {
+ return new TabDescriptor(tab_id, web_contents);
+ }
- GURL GetFaviconURL() const override { return favicon_url_; }
+ static TabDescriptor* CreateForUnloadedTab(int tab_id,
+ const base::string16& title,
+ const GURL& url) {
+ return new TabDescriptor(tab_id, title, url);
+ }
- base::TimeTicks GetLastActivityTime() const override {
- return last_activity_time_;
+ ~TabDescriptor() override {
}
- protected:
- explicit TargetBase(WebContents* web_contents)
- : title_(base::UTF16ToUTF8(web_contents->GetTitle())),
- url_(web_contents->GetURL()),
- favicon_url_(GetFaviconURLForContents(web_contents)),
- last_activity_time_(web_contents->GetLastActiveTime()) {
+ // devtools_discovery::DevToolsTargetDescriptor implementation.
+ std::string GetParentId() const override {
+ return std::string();
}
- explicit TargetBase(scoped_refptr<DevToolsAgentHost> agent_host)
- : title_(agent_host->GetTitle()),
- url_(agent_host->GetURL()),
- favicon_url_(GetFaviconURLForAgentHost(agent_host)),
- last_activity_time_(GetLastActiveTimeForAgentHost(agent_host)) {
+ std::string GetTitle() const override {
+ return title_;
}
- TargetBase(const std::string& title, const GURL& url)
- : title_(title),
- url_(url) {
+ std::string GetDescription() const override {
+ return std::string();
}
- private:
- const std::string title_;
- const GURL url_;
- const GURL favicon_url_;
- const base::TimeTicks last_activity_time_;
-};
+ GURL GetURL() const override {
+ return url_;
+ }
-class TabTarget : public TargetBase {
- public:
- static TabTarget* CreateForWebContents(int tab_id,
- WebContents* web_contents) {
- return new TabTarget(tab_id, web_contents);
+ GURL GetFaviconURL() const override {
+ return favicon_url_;
}
- static TabTarget* CreateForUnloadedTab(int tab_id,
- const base::string16& title,
- const GURL& url) {
- return new TabTarget(tab_id, title, url);
+ base::TimeTicks GetLastActivityTime() const override {
+ return last_activity_time_;
}
- // content::DevToolsTarget implementation:
- std::string GetId() const override { return base::IntToString(tab_id_); }
+ std::string GetId() const override {
+ return base::IntToString(tab_id_);
+ }
- std::string GetType() const override { return kTargetTypePage; }
+ std::string GetType() const override {
+ return devtools_discovery::BasicTargetDescriptor::kTypePage;
+ }
bool IsAttached() const override {
TabModel* model;
@@ -166,14 +135,18 @@ class TabTarget : public TargetBase {
}
private:
- TabTarget(int tab_id, WebContents* web_contents)
- : TargetBase(web_contents),
- tab_id_(tab_id) {
+ TabDescriptor(int tab_id, WebContents* web_contents)
+ : tab_id_(tab_id),
+ title_(base::UTF16ToUTF8(web_contents->GetTitle())),
+ url_(web_contents->GetURL()),
+ favicon_url_(GetFaviconURLForContents(web_contents)),
+ last_activity_time_(web_contents->GetLastActiveTime()) {
}
- TabTarget(int tab_id, const base::string16& title, const GURL& url)
- : TargetBase(base::UTF16ToUTF8(title), url),
- tab_id_(tab_id) {
+ TabDescriptor(int tab_id, const base::string16& title, const GURL& url)
+ : tab_id_(tab_id),
+ title_(base::UTF16ToUTF8(title)),
+ url_(url) {
}
bool FindTab(TabModel** model_result, int* index_result) const {
@@ -193,98 +166,46 @@ class TabTarget : public TargetBase {
}
const int tab_id_;
-};
-
-class NonTabTarget : public TargetBase {
- public:
- explicit NonTabTarget(scoped_refptr<DevToolsAgentHost> agent_host)
- : TargetBase(agent_host),
- agent_host_(agent_host) {
- }
-
- // content::DevToolsTarget implementation:
- std::string GetId() const override { return agent_host_->GetId(); }
-
- std::string GetType() const override {
- switch (agent_host_->GetType()) {
- case DevToolsAgentHost::TYPE_WEB_CONTENTS:
- if (TabModelList::begin() == TabModelList::end()) {
- // If there are no tab models we must be running in ChromeShell.
- // Return the 'page' target type for backwards compatibility.
- return kTargetTypePage;
- }
- break;
- case DevToolsAgentHost::TYPE_SERVICE_WORKER:
- return kTargetTypeServiceWorker;
- default:
- break;
- }
- return kTargetTypeOther;
- }
-
- bool IsAttached() const override { return agent_host_->IsAttached(); }
-
- scoped_refptr<DevToolsAgentHost> GetAgentHost() const override {
- return agent_host_;
- }
-
- bool Activate() const override { return agent_host_->Activate(); }
-
- bool Close() const override { return agent_host_->Close(); }
+ const std::string title_;
+ const GURL url_;
+ const GURL favicon_url_;
+ const base::TimeTicks last_activity_time_;
- private:
- scoped_refptr<DevToolsAgentHost> agent_host_;
+ DISALLOW_COPY_AND_ASSIGN(TabDescriptor);
};
-} // namespace
-
-DevToolsManagerDelegateAndroid::DevToolsManagerDelegateAndroid()
- : network_protocol_handler_(new DevToolsNetworkProtocolHandler()) {
-}
-
-DevToolsManagerDelegateAndroid::~DevToolsManagerDelegateAndroid() {
-}
-
-void DevToolsManagerDelegateAndroid::Inspect(
- content::BrowserContext* browser_context,
- content::DevToolsAgentHost* agent_host) {
-}
-
-base::DictionaryValue* DevToolsManagerDelegateAndroid::HandleCommand(
- content::DevToolsAgentHost* agent_host,
- base::DictionaryValue* command_dict) {
- return network_protocol_handler_->HandleCommand(agent_host, command_dict);
-}
-
-void DevToolsManagerDelegateAndroid::DevToolsAgentStateChanged(
- content::DevToolsAgentHost* agent_host,
- bool attached) {
- network_protocol_handler_->DevToolsAgentStateChanged(agent_host, attached);
-}
-
-scoped_ptr<content::DevToolsTarget>
- DevToolsManagerDelegateAndroid::CreateNewTarget(const GURL& url) {
+scoped_ptr<devtools_discovery::DevToolsTargetDescriptor>
+CreateNewAndroidTab(const GURL& url) {
if (TabModelList::empty())
- return scoped_ptr<content::DevToolsTarget>();
+ return scoped_ptr<devtools_discovery::DevToolsTargetDescriptor>();
TabModel* tab_model = TabModelList::get(0);
if (!tab_model)
- return scoped_ptr<content::DevToolsTarget>();
+ return scoped_ptr<devtools_discovery::DevToolsTargetDescriptor>();
WebContents* web_contents = tab_model->CreateNewTabForDevTools(url);
if (!web_contents)
- return scoped_ptr<content::DevToolsTarget>();
+ return scoped_ptr<devtools_discovery::DevToolsTargetDescriptor>();
TabAndroid* tab = TabAndroid::FromWebContents(web_contents);
if (!tab)
- return scoped_ptr<content::DevToolsTarget>();
+ return scoped_ptr<devtools_discovery::DevToolsTargetDescriptor>();
- return scoped_ptr<content::DevToolsTarget>(
- TabTarget::CreateForWebContents(tab->GetAndroidId(), web_contents));
+ return make_scoped_ptr(TabDescriptor::CreateForWebContents(
+ tab->GetAndroidId(), web_contents));
}
-void DevToolsManagerDelegateAndroid::EnumerateTargets(TargetCallback callback) {
- TargetList targets;
+} // namespace
+
+DevToolsDiscoveryProviderAndroid::DevToolsDiscoveryProviderAndroid() {
+}
+
+DevToolsDiscoveryProviderAndroid::~DevToolsDiscoveryProviderAndroid() {
+}
+
+devtools_discovery::DevToolsTargetDescriptor::List
+DevToolsDiscoveryProviderAndroid::GetDescriptors() {
+ devtools_discovery::DevToolsTargetDescriptor::List result;
// Enumerate existing tabs, including the ones with no WebContents.
std::set<WebContents*> tab_web_contents;
@@ -296,20 +217,19 @@ void DevToolsManagerDelegateAndroid::EnumerateTargets(TargetCallback callback) {
if (!tab)
continue;
- WebContents* web_contents = model->GetWebContentsAt(i);
+ WebContents* web_contents = tab->web_contents();
if (web_contents) {
tab_web_contents.insert(web_contents);
- targets.push_back(TabTarget::CreateForWebContents(tab->GetAndroidId(),
- web_contents));
+ result.push_back(TabDescriptor::CreateForWebContents(
+ tab->GetAndroidId(), web_contents));
} else {
- targets.push_back(TabTarget::CreateForUnloadedTab(tab->GetAndroidId(),
- tab->GetTitle(),
- tab->GetURL()));
+ result.push_back(TabDescriptor::CreateForUnloadedTab(
+ tab->GetAndroidId(), tab->GetTitle(), tab->GetURL()));
}
}
}
- // Add targets for WebContents not associated with any tabs.
+ // Add descriptors for targets not associated with any tabs.
DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll();
for (DevToolsAgentHost::List::iterator it = agents.begin();
it != agents.end(); ++it) {
@@ -317,21 +237,17 @@ void DevToolsManagerDelegateAndroid::EnumerateTargets(TargetCallback callback) {
if (tab_web_contents.find(web_contents) != tab_web_contents.end())
continue;
}
- targets.push_back(new NonTabTarget(*it));
+ result.push_back(new devtools_discovery::BasicTargetDescriptor(*it));
}
- callback.Run(targets);
+ return result;
}
-std::string DevToolsManagerDelegateAndroid::GetPageThumbnailData(
- const GURL& url) {
- Profile* profile = ProfileManager::GetLastUsedProfile()->GetOriginalProfile();
- scoped_refptr<history::TopSites> top_sites =
- TopSitesFactory::GetForProfile(profile);
- if (top_sites) {
- scoped_refptr<base::RefCountedMemory> data;
- if (top_sites->GetPageThumbnail(url, false, &data))
- return std::string(data->front_as<char>(), data->size());
- }
- return std::string();
+// static
+void DevToolsDiscoveryProviderAndroid::Install() {
+ devtools_discovery::DevToolsDiscoveryManager* discovery_manager =
+ devtools_discovery::DevToolsDiscoveryManager::GetInstance();
+ discovery_manager->AddProvider(
+ make_scoped_ptr(new DevToolsDiscoveryProviderAndroid()));
+ discovery_manager->SetCreateCallback(base::Bind(&CreateNewAndroidTab));
}

Powered by Google App Engine
This is Rietveld 408576698