| Index: chrome/browser/android/dev_tools_server.cc
|
| diff --git a/chrome/browser/android/dev_tools_server.cc b/chrome/browser/android/dev_tools_server.cc
|
| index 771aa1e7dc9d8b7eab23750708257015cc60582e..aed5269a9e0f4c9032a3b243ed75ac3b017bb6ff 100644
|
| --- a/chrome/browser/android/dev_tools_server.cc
|
| +++ b/chrome/browser/android/dev_tools_server.cc
|
| @@ -23,9 +23,13 @@
|
| #include "chrome/browser/ui/android/tab_model/tab_model_list.h"
|
| #include "content/public/browser/android/devtools_auth.h"
|
| #include "content/public/browser/browser_thread.h"
|
| +#include "content/public/browser/devtools_agent_host.h"
|
| #include "content/public/browser/devtools_http_handler.h"
|
| #include "content/public/browser/devtools_http_handler_delegate.h"
|
| +#include "content/public/browser/devtools_target_descriptor.h"
|
| +#include "content/public/browser/render_view_host.h"
|
| #include "content/public/browser/web_contents.h"
|
| +#include "content/public/browser/web_contents_delegate.h"
|
| #include "content/public/common/content_switches.h"
|
| #include "content/public/common/url_constants.h"
|
| #include "grit/devtools_discovery_page_resources.h"
|
| @@ -35,6 +39,10 @@
|
| #include "ui/base/resource/resource_bundle.h"
|
| #include "webkit/common/user_agent/user_agent_util.h"
|
|
|
| +using content::DevToolsAgentHost;
|
| +using content::RenderViewHost;
|
| +using content::WebContents;
|
| +
|
| namespace {
|
|
|
| const char kFrontEndURL[] =
|
| @@ -42,6 +50,16 @@ const char kFrontEndURL[] =
|
| const char kDefaultSocketNamePrefix[] = "chrome";
|
| const char kTetheringSocketName[] = "chrome_devtools_tethering_%d_%d";
|
|
|
| +RenderViewHost* GetRenderViewHost(const std::string& id) {
|
| + DevToolsAgentHost* agent_host = DevToolsAgentHost::GetForId(id);
|
| + return agent_host ? agent_host->GetRenderViewHost() : NULL;
|
| +}
|
| +
|
| +WebContents* GetWebContents(const std::string& id) {
|
| + RenderViewHost* rvh = GetRenderViewHost(id);
|
| + return rvh ? WebContents::FromRenderViewHost(rvh) : NULL;
|
| +}
|
| +
|
| // Delegate implementation for the devtools http handler on android. A new
|
| // instance of this gets created each time devtools is enabled.
|
| class DevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate {
|
| @@ -69,7 +87,16 @@ class DevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate {
|
| return base::FilePath();
|
| }
|
|
|
| - virtual std::string GetPageThumbnailData(const GURL& url) OVERRIDE {
|
| + virtual bool SupportsPageThumbnails() OVERRIDE {
|
| + return true;
|
| + }
|
| +
|
| + virtual std::string GetPageThumbnailData(const std::string& id) OVERRIDE {
|
| + WebContents* web_contents = GetWebContents(id);
|
| + if (!web_contents)
|
| + return "";
|
| +
|
| + GURL url = web_contents->GetURL();
|
| Profile* profile =
|
| ProfileManager::GetLastUsedProfile()->GetOriginalProfile();
|
| history::TopSites* top_sites = profile->GetTopSites();
|
| @@ -82,25 +109,51 @@ class DevToolsServerDelegate : public content::DevToolsHttpHandlerDelegate {
|
| return "";
|
| }
|
|
|
| - virtual content::RenderViewHost* CreateNewTarget() OVERRIDE {
|
| + virtual Target* CreateNewTarget() OVERRIDE {
|
| Profile* profile =
|
| g_browser_process->profile_manager()->GetDefaultProfile();
|
| TabModel* tab_model = TabModelList::GetTabModelWithProfile(profile);
|
| if (!tab_model)
|
| return NULL;
|
| - content::WebContents* web_contents =
|
| + WebContents* web_contents =
|
| tab_model->CreateTabForTesting(GURL(content::kAboutBlankURL));
|
| if (!web_contents)
|
| return NULL;
|
| - return web_contents->GetRenderViewHost();
|
| + return Target::FromWebContents(web_contents);
|
| }
|
|
|
| - virtual TargetType GetTargetType(content::RenderViewHost*) OVERRIDE {
|
| - return kTargetTypeTab;
|
| + virtual bool ActivateTarget(const std::string& id) OVERRIDE {
|
| + WebContents* web_contents = GetWebContents(id);
|
| + if (!web_contents)
|
| + return false;
|
| + web_contents->GetDelegate()->ActivateContents(web_contents);
|
| + return true;
|
| }
|
|
|
| - virtual std::string GetViewDescription(content::RenderViewHost*) OVERRIDE {
|
| - return "";
|
| + virtual bool CloseTarget(const std::string& id) OVERRIDE {
|
| + RenderViewHost* rvh = GetRenderViewHost(id);
|
| + if (!rvh)
|
| + return false;
|
| + rvh->ClosePage();
|
| + return true;
|
| + }
|
| +
|
| + virtual scoped_refptr<DevToolsAgentHost> GetAgentHost(
|
| + const std::string& id) OVERRIDE {
|
| + return DevToolsAgentHost::GetForId(id);
|
| + }
|
| +
|
| + virtual void RequestTargets(TargetCallback callback) OVERRIDE {
|
| + TargetList targets;
|
| + std::vector<RenderViewHost*> rvh_list =
|
| + DevToolsAgentHost::GetValidRenderViewHosts();
|
| + for (std::vector<RenderViewHost*>::iterator it = rvh_list.begin();
|
| + it != rvh_list.end(); ++it) {
|
| + WebContents* web_contents = WebContents::FromRenderViewHost(*it);
|
| + if (web_contents)
|
| + targets.push_back(Target::FromWebContents(web_contents));
|
| + }
|
| + callback.Run(targets);
|
| }
|
|
|
| virtual scoped_ptr<net::StreamListenSocket> CreateSocketForTethering(
|
|
|