summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaznacheev@chromium.org <kaznacheev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-28 18:25:03 +0000
committerkaznacheev@chromium.org <kaznacheev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-28 18:25:03 +0000
commit32231b7447142fec8edfdff70a86f444c6fa9cf7 (patch)
treef9fae3bac2e84d64393e3b3a11eddb21cc6c94fb
parent5f73ada6eff0a0887f6b860175c5ddd418214953 (diff)
downloadchromium_src-32231b7447142fec8edfdff70a86f444c6fa9cf7.zip
chromium_src-32231b7447142fec8edfdff70a86f444c6fa9cf7.tar.gz
chromium_src-32231b7447142fec8edfdff70a86f444c6fa9cf7.tar.bz2
Migrate DevToolsHTTPHandlerImpl to using DevToolsTargetImpl
TEST=tools/perf/run_benchmark page_cycler.intl_ja_zh --page-filter=google BUG=None Review URL: https://codereview.chromium.org/48033003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231363 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/devtools/browser_list_tabcontents_provider.cc190
-rw-r--r--chrome/browser/devtools/browser_list_tabcontents_provider.h6
-rw-r--r--chrome/browser/devtools/devtools_target_impl.cc69
-rw-r--r--chrome/browser/devtools/devtools_target_impl.h14
-rw-r--r--chrome/browser/ui/webui/inspect_ui.cc22
-rw-r--r--chrome/browser/ui/webui/inspect_ui.h2
-rw-r--r--chrome/test/data/devtools/target_list/background.js5
7 files changed, 72 insertions, 236 deletions
diff --git a/chrome/browser/devtools/browser_list_tabcontents_provider.cc b/chrome/browser/devtools/browser_list_tabcontents_provider.cc
index c0bd8f6..ac75d40 100644
--- a/chrome/browser/devtools/browser_list_tabcontents_provider.cc
+++ b/chrome/browser/devtools/browser_list_tabcontents_provider.cc
@@ -6,11 +6,7 @@
#include "base/path_service.h"
#include "base/strings/string_number_conversions.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/extensions/extension_host.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/extension_system.h"
+#include "chrome/browser/devtools/devtools_target_impl.h"
#include "chrome/browser/history/top_sites.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/browser.h"
@@ -19,14 +15,9 @@
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/host_desktop.h"
-#include "chrome/browser/ui/tab_contents/tab_contents_iterator.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/chrome_paths.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/devtools_target.h"
-#include "content/public/browser/favicon_status.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/url_constants.h"
#include "grit/devtools_discovery_page_resources.h"
@@ -34,142 +25,10 @@
#include "net/url_request/url_request_context_getter.h"
#include "ui/base/resource/resource_bundle.h"
-using content::DevToolsAgentHost;
-using content::DevToolsHttpHandlerDelegate;
using content::DevToolsTarget;
using content::RenderViewHost;
using content::WebContents;
-namespace {
-
-const char kTargetTypePage[] = "page";
-const char kTargetTypeOther[] = "other";
-
-std::string GetExtensionName(WebContents* web_contents) {
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
- if (!profile)
- return std::string();
-
- extensions::ExtensionHost* extension_host =
- extensions::ExtensionSystem::Get(profile)->process_manager()->
- GetBackgroundHostForExtension(web_contents->GetURL().host());
-
- if (!extension_host || extension_host->host_contents() != web_contents)
- return std::string();
-
- return extension_host->extension()->name();
-}
-
-class Target : public content::DevToolsTarget {
- public:
- Target(WebContents* web_contents, bool is_tab);
-
- virtual std::string GetId() const OVERRIDE { return id_; }
- virtual std::string GetType() const OVERRIDE { return type_; }
- virtual std::string GetTitle() const OVERRIDE { return title_; }
- virtual std::string GetDescription() const OVERRIDE { return description_; }
- virtual GURL GetUrl() const OVERRIDE { return url_; }
- virtual GURL GetFaviconUrl() const OVERRIDE { return favicon_url_; }
- virtual base::TimeTicks GetLastActivityTime() const OVERRIDE {
- return last_activity_time_;
- }
- virtual bool IsAttached() const OVERRIDE {
- return agent_host_->IsAttached();
- }
- virtual scoped_refptr<DevToolsAgentHost> GetAgentHost() const OVERRIDE {
- return agent_host_;
- }
- virtual bool Activate() const OVERRIDE;
- virtual bool Close() const OVERRIDE;
-
- private:
- scoped_refptr<DevToolsAgentHost> agent_host_;
- std::string id_;
- std::string type_;
- std::string title_;
- std::string description_;
- GURL url_;
- GURL favicon_url_;
- base::TimeTicks last_activity_time_;
-};
-
-Target::Target(WebContents* web_contents, bool is_tab) {
- agent_host_ =
- DevToolsAgentHost::GetOrCreateFor(web_contents->GetRenderViewHost());
- id_ = agent_host_->GetId();
- type_ = is_tab ? kTargetTypePage : kTargetTypeOther;
- description_ = GetExtensionName(web_contents);
- title_ = UTF16ToUTF8(web_contents->GetTitle());
- url_ = web_contents->GetURL();
- content::NavigationController& controller = web_contents->GetController();
- content::NavigationEntry* entry = controller.GetActiveEntry();
- if (entry != NULL && entry->GetURL().is_valid())
- favicon_url_ = entry->GetFavicon().url;
- last_activity_time_ = web_contents->GetLastSelectedTime();
-}
-
-bool Target::Activate() const {
- RenderViewHost* rvh = agent_host_->GetRenderViewHost();
- if (!rvh)
- return false;
- WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
- if (!web_contents)
- return false;
- web_contents->GetDelegate()->ActivateContents(web_contents);
- return true;
-}
-
-bool Target::Close() const {
- RenderViewHost* rvh = agent_host_->GetRenderViewHost();
- if (!rvh)
- return false;
- rvh->ClosePage();
- return true;
-}
-
-class WorkerTarget : public content::DevToolsTarget {
- public:
- explicit WorkerTarget(const content::WorkerService::WorkerInfo& worker_info);
-
- virtual std::string GetId() const OVERRIDE { return id_; }
- virtual std::string GetType() const OVERRIDE { return "other"; }
- virtual std::string GetTitle() const OVERRIDE { return title_; }
- virtual std::string GetDescription() const OVERRIDE { return description_; }
- virtual GURL GetUrl() const OVERRIDE { return url_; }
- virtual GURL GetFaviconUrl() const OVERRIDE { return GURL(); }
- virtual base::TimeTicks GetLastActivityTime() const OVERRIDE {
- return base::TimeTicks();
- }
- virtual bool IsAttached() const OVERRIDE {
- return agent_host_->IsAttached();
- }
- virtual scoped_refptr<DevToolsAgentHost> GetAgentHost() const OVERRIDE {
- return agent_host_;
- }
- virtual bool Activate() const OVERRIDE { return false; }
- virtual bool Close() const OVERRIDE { return false; }
-
- private:
- scoped_refptr<DevToolsAgentHost> agent_host_;
- std::string id_;
- std::string title_;
- std::string description_;
- GURL url_;
-};
-
-WorkerTarget::WorkerTarget(const content::WorkerService::WorkerInfo& worker) {
- agent_host_ =
- DevToolsAgentHost::GetForWorker(worker.process_id, worker.route_id);
- id_ = agent_host_->GetId();
- title_ = UTF16ToUTF8(worker.name);
- description_ =
- base::StringPrintf("Worker pid:%d", base::GetProcId(worker.handle));
- url_ = worker.url;
-}
-
-} // namespace
-
BrowserListTabContentsProvider::BrowserListTabContentsProvider(
chrome::HostDesktopType host_desktop_type)
: host_desktop_type_(host_desktop_type) {
@@ -246,17 +105,16 @@ BrowserListTabContentsProvider::CreateNewTarget(const GURL& url) {
url,
content::PAGE_TRANSITION_LINK);
}
- return scoped_ptr<DevToolsTarget>(new Target(web_contents, true));
+ content::RenderViewHost* rvh = web_contents->GetRenderViewHost();
+ if (!rvh)
+ return scoped_ptr<DevToolsTarget>();
+ return scoped_ptr<DevToolsTarget>(
+ DevToolsTargetImpl::CreateForRenderViewHost(rvh, true));
}
+
void BrowserListTabContentsProvider::EnumerateTargets(TargetCallback callback) {
- content::BrowserThread::PostTaskAndReplyWithResult(
- content::BrowserThread::IO,
- FROM_HERE,
- base::Bind(&BrowserListTabContentsProvider::GetWorkerInfo,
- base::Unretained(this)),
- base::Bind(&BrowserListTabContentsProvider::RespondWithTargetList,
- base::Unretained(this),
- callback));
+ DevToolsTargetImpl::EnumerateAllTargets(
+ *reinterpret_cast<DevToolsTargetImpl::Callback*>(&callback));
}
#if defined(DEBUG_DEVTOOLS)
@@ -281,33 +139,3 @@ BrowserListTabContentsProvider::CreateSocketForTethering(
return scoped_ptr<net::StreamListenSocket>();
}
#endif // defined(DEBUG_DEVTOOLS)
-
-BrowserListTabContentsProvider::WorkerInfoList
-BrowserListTabContentsProvider::GetWorkerInfo() {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
- return content::WorkerService::GetInstance()->GetWorkers();
-}
-
-void BrowserListTabContentsProvider::RespondWithTargetList(
- TargetCallback callback, const WorkerInfoList& worker_info_list) {
- std::set<RenderViewHost*> tab_rvhs;
- for (TabContentsIterator it; !it.done(); it.Next())
- tab_rvhs.insert(it->GetRenderViewHost());
-
- TargetList targets;
-
- std::vector<RenderViewHost*> rvh_list =
- content::DevToolsAgentHost::GetValidRenderViewHosts();
- for (std::vector<RenderViewHost*>::iterator it = rvh_list.begin();
- it != rvh_list.end(); ++it) {
- bool is_tab = tab_rvhs.find(*it) != tab_rvhs.end();
- WebContents* web_contents = WebContents::FromRenderViewHost(*it);
- if (web_contents)
- targets.push_back(new Target(web_contents, is_tab));
- }
-
- for (size_t i = 0; i < worker_info_list.size(); ++i)
- targets.push_back(new WorkerTarget(worker_info_list[i]));
-
- callback.Run(targets);
-}
diff --git a/chrome/browser/devtools/browser_list_tabcontents_provider.h b/chrome/browser/devtools/browser_list_tabcontents_provider.h
index 28b3d29..3f557dd 100644
--- a/chrome/browser/devtools/browser_list_tabcontents_provider.h
+++ b/chrome/browser/devtools/browser_list_tabcontents_provider.h
@@ -12,7 +12,6 @@
#include "base/compiler_specific.h"
#include "chrome/browser/ui/host_desktop.h"
#include "content/public/browser/devtools_http_handler_delegate.h"
-#include "content/public/browser/worker_service.h"
class BrowserListTabContentsProvider
: public content::DevToolsHttpHandlerDelegate {
@@ -34,11 +33,6 @@ class BrowserListTabContentsProvider
std::string* name) OVERRIDE;
private:
- typedef std::vector<content::WorkerService::WorkerInfo> WorkerInfoList;
- WorkerInfoList GetWorkerInfo();
- void RespondWithTargetList(TargetCallback callback,
- const WorkerInfoList& worker_info_list);
-
chrome::HostDesktopType host_desktop_type_;
DISALLOW_COPY_AND_ASSIGN(BrowserListTabContentsProvider);
};
diff --git a/chrome/browser/devtools/devtools_target_impl.cc b/chrome/browser/devtools/devtools_target_impl.cc
index 5a2d44c..3974f76 100644
--- a/chrome/browser/devtools/devtools_target_impl.cc
+++ b/chrome/browser/devtools/devtools_target_impl.cc
@@ -12,6 +12,7 @@
#include "chrome/browser/extensions/extension_system.h"
#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/tab_contents/tab_contents_iterator.h"
#include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
#include "chrome/common/extensions/extension_constants.h"
#include "content/public/browser/browser_thread.h"
@@ -50,16 +51,16 @@ std::string GetExtensionName(WebContents* web_contents) {
return extension_host->extension()->name();
}
-class WebContentsTarget : public DevToolsTargetImpl {
+class RenderViewHostTarget : public DevToolsTargetImpl {
public:
- explicit WebContentsTarget(WebContents* web_contents);
+ explicit RenderViewHostTarget(RenderViewHost* rvh, bool is_tab);
// content::DevToolsTarget overrides:
virtual bool Activate() const OVERRIDE;
virtual bool Close() const OVERRIDE;
// DevToolsTargetImpl overrides:
- virtual WebContents* GetWebContents() const OVERRIDE;
+ virtual RenderViewHost* GetRenderViewHost() const OVERRIDE;
virtual int GetTabId() const OVERRIDE;
virtual std::string GetExtensionId() const OVERRIDE;
virtual void Inspect(Profile* profile) const OVERRIDE;
@@ -69,10 +70,16 @@ class WebContentsTarget : public DevToolsTargetImpl {
std::string extension_id_;
};
-WebContentsTarget::WebContentsTarget(WebContents* web_contents) {
- agent_host_ =
- DevToolsAgentHost::GetOrCreateFor(web_contents->GetRenderViewHost());
+RenderViewHostTarget::RenderViewHostTarget(RenderViewHost* rvh, bool is_tab) {
+ agent_host_ = DevToolsAgentHost::GetOrCreateFor(rvh);
id_ = agent_host_->GetId();
+ type_ = kTargetTypeOther;
+ tab_id_ = -1;
+
+ WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
+ if (!web_contents)
+ return; // Orphan RVH will show up with no title/url/icon in clients.
+
title_ = UTF16ToUTF8(web_contents->GetTitle());
url_ = web_contents->GetURL();
content::NavigationController& controller = web_contents->GetController();
@@ -81,11 +88,10 @@ WebContentsTarget::WebContentsTarget(WebContents* web_contents) {
favicon_url_ = entry->GetFavicon().url;
last_activity_time_ = web_contents->GetLastSelectedTime();
- tab_id_ = ExtensionTabUtil::GetTabId(web_contents);
- if (tab_id_ >= 0) {
+ if (is_tab) {
type_ = kTargetTypePage;
+ tab_id_ = ExtensionTabUtil::GetTabId(web_contents);
} else {
- type_ = kTargetTypeOther;
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
if (profile) {
@@ -122,37 +128,39 @@ WebContentsTarget::WebContentsTarget(WebContents* web_contents) {
}
}
-bool WebContentsTarget::Activate() const {
- WebContents* web_contents = GetWebContents();
+bool RenderViewHostTarget::Activate() const {
+ RenderViewHost* rvh = GetRenderViewHost();
+ if (!rvh)
+ return false;
+ WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
if (!web_contents)
return false;
web_contents->GetDelegate()->ActivateContents(web_contents);
return true;
}
-bool WebContentsTarget::Close() const {
- RenderViewHost* rvh = agent_host_->GetRenderViewHost();
+bool RenderViewHostTarget::Close() const {
+ RenderViewHost* rvh = GetRenderViewHost();
if (!rvh)
return false;
rvh->ClosePage();
return true;
}
-WebContents* WebContentsTarget::GetWebContents() const {
- RenderViewHost* rvh = agent_host_->GetRenderViewHost();
- return rvh ? WebContents::FromRenderViewHost(rvh) : NULL;
+RenderViewHost* RenderViewHostTarget::GetRenderViewHost() const {
+ return agent_host_->GetRenderViewHost();
}
-int WebContentsTarget::GetTabId() const {
+int RenderViewHostTarget::GetTabId() const {
return tab_id_;
}
-std::string WebContentsTarget::GetExtensionId() const {
+std::string RenderViewHostTarget::GetExtensionId() const {
return extension_id_;
}
-void WebContentsTarget::Inspect(Profile* profile) const {
- RenderViewHost* rvh = agent_host_->GetRenderViewHost();
+void RenderViewHostTarget::Inspect(Profile* profile) const {
+ RenderViewHost* rvh = GetRenderViewHost();
if (!rvh)
return;
DevToolsWindow::OpenDevToolsWindow(rvh);
@@ -260,7 +268,7 @@ int DevToolsTargetImpl::GetTabId() const {
return -1;
}
-WebContents* DevToolsTargetImpl::GetWebContents() const {
+RenderViewHost* DevToolsTargetImpl::GetRenderViewHost() const {
return NULL;
}
@@ -275,9 +283,9 @@ void DevToolsTargetImpl::Reload() const {
}
// static
-scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForWebContents(
- content::WebContents* web_contents) {
- return scoped_ptr<DevToolsTargetImpl>(new WebContentsTarget(web_contents));
+scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForRenderViewHost(
+ content::RenderViewHost* rvh, bool is_tab) {
+ return scoped_ptr<DevToolsTargetImpl>(new RenderViewHostTarget(rvh, is_tab));
}
// static
@@ -287,16 +295,19 @@ scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForWorker(
}
// static
-DevToolsTargetImpl::List DevToolsTargetImpl::EnumerateWebContentsTargets() {
+DevToolsTargetImpl::List DevToolsTargetImpl::EnumerateRenderViewHostTargets() {
+ std::set<RenderViewHost*> tab_rvhs;
+ for (TabContentsIterator it; !it.done(); it.Next())
+ tab_rvhs.insert(it->GetRenderViewHost());
+
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DevToolsTargetImpl::List result;
std::vector<RenderViewHost*> rvh_list =
content::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)
- result.push_back(new WebContentsTarget(web_contents));
+ bool is_tab = tab_rvhs.find(*it) != tab_rvhs.end();
+ result.push_back(new RenderViewHostTarget(*it, is_tab));
}
return result;
}
@@ -328,7 +339,7 @@ static void CollectAllTargets(
const DevToolsTargetImpl::List& worker_targets) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DevToolsTargetImpl::List result =
- DevToolsTargetImpl::EnumerateWebContentsTargets();
+ DevToolsTargetImpl::EnumerateRenderViewHostTargets();
result.insert(result.begin(), worker_targets.begin(), worker_targets.end());
callback.Run(result);
}
diff --git a/chrome/browser/devtools/devtools_target_impl.h b/chrome/browser/devtools/devtools_target_impl.h
index df65175a..d02be13 100644
--- a/chrome/browser/devtools/devtools_target_impl.h
+++ b/chrome/browser/devtools/devtools_target_impl.h
@@ -15,7 +15,7 @@ class Profile;
namespace content {
class DevToolsAgentHost;
-class WebContents;
+class RenderViewHost;
}
class DevToolsTargetImpl : public content::DevToolsTarget {
@@ -38,9 +38,9 @@ class DevToolsTargetImpl : public content::DevToolsTarget {
virtual bool Activate() const OVERRIDE;
virtual bool Close() const OVERRIDE;
- // Returns the WebContents is associated with the target on NULL if there is
+ // Returns the RenderViewHost associated with the target on NULL if there is
// not any.
- virtual content::WebContents* GetWebContents() const;
+ virtual content::RenderViewHost* GetRenderViewHost() const;
// Returns the tab id if the target is associated with a tab, -1 otherwise.
virtual int GetTabId() const;
@@ -55,9 +55,9 @@ class DevToolsTargetImpl : public content::DevToolsTarget {
// Reload the target page.
virtual void Reload() const;
- // Creates a new target associated with WebContents.
- static scoped_ptr<DevToolsTargetImpl> CreateForWebContents(
- content::WebContents*);
+ // Creates a new target associated with RenderViewHost.
+ static scoped_ptr<DevToolsTargetImpl> CreateForRenderViewHost(
+ content::RenderViewHost*, bool is_tab);
// Creates a new target associated with a shared worker.
static scoped_ptr<DevToolsTargetImpl> CreateForWorker(
@@ -66,7 +66,7 @@ class DevToolsTargetImpl : public content::DevToolsTarget {
typedef std::vector<DevToolsTargetImpl*> List;
typedef base::Callback<void(const List&)> Callback;
- static List EnumerateWebContentsTargets();
+ static List EnumerateRenderViewHostTargets();
static void EnumerateWorkerTargets(Callback callback);
static void EnumerateAllTargets(Callback callback);
diff --git a/chrome/browser/ui/webui/inspect_ui.cc b/chrome/browser/ui/webui/inspect_ui.cc
index f1dbdc3..a70fa45 100644
--- a/chrome/browser/ui/webui/inspect_ui.cc
+++ b/chrome/browser/ui/webui/inspect_ui.cc
@@ -393,8 +393,8 @@ DevToolsTargetImpl* InspectUI::FindTarget(const std::string& type,
TargetMap::iterator it = remote_targets_.find(id);
return it == remote_targets_.end() ? NULL : it->second;
} else {
- TargetMap::iterator it = web_contents_targets_.find(id);
- return it == web_contents_targets_.end() ? NULL : it->second;
+ TargetMap::iterator it = render_view_host_targets_.find(id);
+ return it == render_view_host_targets_.end() ? NULL : it->second;
}
}
@@ -419,20 +419,20 @@ void InspectUI::PopulateWebContentsTargets() {
std::vector<DevToolsTargetImpl*> guest_targets;
DevToolsTargetImpl::List targets =
- DevToolsTargetImpl::EnumerateWebContentsTargets();
+ DevToolsTargetImpl::EnumerateRenderViewHostTargets();
- STLDeleteValues(&web_contents_targets_);
+ STLDeleteValues(&render_view_host_targets_);
for (DevToolsTargetImpl::List::iterator it = targets.begin();
it != targets.end(); ++it) {
DevToolsTargetImpl* target = *it;
- WebContents* web_contents = target->GetWebContents();
- if (!web_contents)
- continue;
- RenderViewHost* rvh = web_contents->GetRenderViewHost();
+ RenderViewHost* rvh = target->GetRenderViewHost();
if (!rvh)
continue;
+ WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
+ if (!web_contents)
+ continue;
- web_contents_targets_[target->GetId()] = target;
+ render_view_host_targets_[target->GetId()] = target;
if (rvh->GetProcess()->IsGuest()) {
guest_targets.push_back(target);
} else {
@@ -446,7 +446,9 @@ void InspectUI::PopulateWebContentsTargets() {
for (std::vector<DevToolsTargetImpl*>::iterator it(guest_targets.begin());
it != guest_targets.end(); ++it) {
DevToolsTargetImpl* guest = (*it);
- WebContents* embedder = guest->GetWebContents()->GetEmbedderWebContents();
+ WebContents* guest_web_contents =
+ WebContents::FromRenderViewHost(guest->GetRenderViewHost());
+ WebContents* embedder = guest_web_contents->GetEmbedderWebContents();
if (embedder && web_contents_to_descriptor_.count(embedder) > 0) {
DictionaryValue* parent = web_contents_to_descriptor_[embedder];
ListValue* guests = NULL;
diff --git a/chrome/browser/ui/webui/inspect_ui.h b/chrome/browser/ui/webui/inspect_ui.h
index 7be764c..d1d186e 100644
--- a/chrome/browser/ui/webui/inspect_ui.h
+++ b/chrome/browser/ui/webui/inspect_ui.h
@@ -75,7 +75,7 @@ class InspectUI : public content::WebUIController,
PrefChangeRegistrar pref_change_registrar_;
typedef std::map<std::string, DevToolsTargetImpl*> TargetMap;
- TargetMap web_contents_targets_;
+ TargetMap render_view_host_targets_;
TargetMap worker_targets_;
TargetMap remote_targets_;
diff --git a/chrome/test/data/devtools/target_list/background.js b/chrome/test/data/devtools/target_list/background.js
index 607f1e5..60a6ca0 100644
--- a/chrome/test/data/devtools/target_list/background.js
+++ b/chrome/test/data/devtools/target_list/background.js
@@ -32,7 +32,7 @@ function checkTarget(targets, url, type, opt_title, opt_faviconUrl) {
target.devtoolsFrontendUrl);
// On some platforms (e.g. Chrome OS) target.faviconUrl might be empty for
// a freshly created tab. Ignore the check then.
- if (target.faviconUrl)
+ if (target.faviconUrl && opt_faviconUrl)
chrome.test.assertEq(opt_faviconUrl, target.faviconUrl);
// Sometimes thumbnailUrl is not available for a freshly loaded tab.
if (target.thumbnailUrl)
@@ -56,7 +56,8 @@ chrome.test.runTests([
chrome.extension.getURL('favicon.png'));
checkTarget(targets,
chrome.extension.getURL('_generated_background_page.html'),
- 'other');
+ 'background_page',
+ 'Remote Debugger Test');
chrome.test.succeed();
});