Index: content/shell/browser/shell_devtools_delegate.cc |
diff --git a/content/shell/browser/shell_devtools_delegate.cc b/content/shell/browser/shell_devtools_delegate.cc |
index d316b2a1c6a1ec8c150ca9e11ad7b2b49e58c319..2e1acb5145c1f05c6514f1a7349c965ba616d636 100644 |
--- a/content/shell/browser/shell_devtools_delegate.cc |
+++ b/content/shell/browser/shell_devtools_delegate.cc |
@@ -75,7 +75,7 @@ net::StreamListenSocketFactory* CreateSocketFactory() { |
class Target : public content::DevToolsTarget { |
public: |
- explicit Target(WebContents* web_contents); |
+ explicit Target(scoped_refptr<DevToolsAgentHost> agent_host); |
virtual std::string GetId() const OVERRIDE { return id_; } |
virtual std::string GetParentId() const OVERRIDE { return std::string(); } |
@@ -105,17 +105,20 @@ class Target : public content::DevToolsTarget { |
base::TimeTicks last_activity_time_; |
}; |
-Target::Target(WebContents* web_contents) { |
- agent_host_ = |
- DevToolsAgentHost::GetOrCreateFor(web_contents->GetRenderViewHost()); |
- id_ = agent_host_->GetId(); |
- title_ = base::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->GetLastActiveTime(); |
+Target::Target(scoped_refptr<DevToolsAgentHost> agent_host) |
+ : agent_host_(agent_host), |
+ id_(agent_host_->GetId()), |
+ url_(agent_host_->GetURL()) { |
+ if (RenderViewHost* rvh = agent_host_->GetRenderViewHost()) { |
+ if (WebContents* web_contents = WebContents::FromRenderViewHost(rvh)) { |
+ title_ = base::UTF16ToUTF8(web_contents->GetTitle()); |
+ 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->GetLastActiveTime(); |
+ } |
+ } |
} |
bool Target::Activate() const { |
@@ -192,22 +195,24 @@ ShellDevToolsDelegate::CreateNewTarget(const GURL& url) { |
NULL, |
MSG_ROUTING_NONE, |
gfx::Size()); |
- return scoped_ptr<DevToolsTarget>(new Target(shell->web_contents())); |
+ return scoped_ptr<DevToolsTarget>( |
+ new Target(DevToolsAgentHost::GetOrCreateFor(shell->web_contents()))); |
} |
-void ShellDevToolsDelegate::EnumerateTargets(TargetCallback callback) { |
- TargetList targets; |
- 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) |
- targets.push_back(new Target(web_contents)); |
+static void CreateTargets(const ShellDevToolsDelegate::TargetCallback& callback, |
+ const DevToolsAgentHost::List& agents) { |
+ ShellDevToolsDelegate::TargetList targets; |
+ for (DevToolsAgentHost::List::const_iterator it = agents.begin(); |
+ it != agents.end(); ++it) { |
+ targets.push_back(new Target(*it)); |
} |
callback.Run(targets); |
} |
+void ShellDevToolsDelegate::EnumerateTargets(TargetCallback callback) { |
+ DevToolsAgentHost::GetOrCreateAllHosts(base::Bind(&CreateTargets, callback)); |
+} |
+ |
scoped_ptr<net::StreamListenSocket> |
ShellDevToolsDelegate::CreateSocketForTethering( |
net::StreamListenSocket::Delegate* delegate, |