Chromium Code Reviews| Index: chrome/browser/devtools/devtools_target_impl.cc |
| diff --git a/chrome/browser/devtools/devtools_target_impl.cc b/chrome/browser/devtools/devtools_target_impl.cc |
| index 62f6354aa5ca704c86d66f4eb6eb183372155c87..a3b879c1927dd9af4d2e3608e14faf285b6e1b89 100644 |
| --- a/chrome/browser/devtools/devtools_target_impl.cc |
| +++ b/chrome/browser/devtools/devtools_target_impl.cc |
| @@ -41,16 +41,16 @@ const char kTargetTypeWebView[] = "webview"; |
| const char kTargetTypeIFrame[] = "iframe"; |
| const char kTargetTypeOther[] = "other"; |
| -// RenderViewHostTarget -------------------------------------------------------- |
| +// WebContentsTarget -------------------------------------------------------- |
| -class RenderViewHostTarget : public DevToolsTargetImpl { |
| +class WebContentsTarget : public DevToolsTargetImpl { |
| public: |
| - explicit RenderViewHostTarget(RenderViewHost* rvh, bool is_tab); |
| + WebContentsTarget(WebContents* web_contents, bool is_tab); |
| // DevToolsTargetImpl overrides: |
| virtual bool Activate() const OVERRIDE; |
| virtual bool Close() const OVERRIDE; |
| - virtual RenderViewHost* GetRenderViewHost() const OVERRIDE; |
| + virtual WebContents* GetWebContents() const OVERRIDE; |
| virtual int GetTabId() const OVERRIDE; |
| virtual std::string GetExtensionId() const OVERRIDE; |
| virtual void Inspect(Profile* profile) const OVERRIDE; |
| @@ -60,22 +60,21 @@ class RenderViewHostTarget : public DevToolsTargetImpl { |
| std::string extension_id_; |
| }; |
| -RenderViewHostTarget::RenderViewHostTarget(RenderViewHost* rvh, bool is_tab) |
| - : DevToolsTargetImpl(DevToolsAgentHost::GetOrCreateFor(rvh)), |
| +WebContentsTarget::WebContentsTarget(WebContents* web_contents, bool is_tab) |
| + : DevToolsTargetImpl(DevToolsAgentHost::GetOrCreateFor(web_contents)), |
| tab_id_(-1) { |
| set_type(kTargetTypeOther); |
| - WebContents* web_contents = WebContents::FromRenderViewHost(rvh); |
| - if (!web_contents) |
| - return; // Orphan RVH will show up with no title/url/icon in clients. |
| - content::RenderFrameHost* rfh = rvh->GetMainFrame(); |
| + content::RenderFrameHost* rfh = |
| + web_contents->GetRenderViewHost()->GetMainFrame(); |
| if (rfh->IsCrossProcessSubframe()) { |
|
dgozman
2014/08/06 19:22:20
Does this mean OOP frames have their own WebConten
pfeldman
2014/08/07 09:03:08
We'll figure it out. Updated the TODO below.
|
| set_url(rfh->GetLastCommittedURL()); |
| set_type(kTargetTypeIFrame); |
| // TODO(kaznacheev) Try setting the title when the frame navigation |
| // refactoring is done. |
| RenderViewHost* parent_rvh = rfh->GetParent()->GetRenderViewHost(); |
| - set_parent_id(DevToolsAgentHost::GetOrCreateFor(parent_rvh)->GetId()); |
| + set_parent_id(DevToolsAgentHost::GetOrCreateFor( |
| + WebContents::FromRenderViewHost(parent_rvh))->GetId()); |
| return; |
| } |
| @@ -89,11 +88,9 @@ RenderViewHostTarget::RenderViewHostTarget(RenderViewHost* rvh, bool is_tab) |
| GuestViewBase* guest = GuestViewBase::FromWebContents(web_contents); |
| WebContents* guest_contents = guest ? guest->embedder_web_contents() : NULL; |
| - RenderViewHost* guest_parent_rvh = |
| - guest_contents ? guest_contents->GetRenderViewHost() : NULL; |
| - if (guest_parent_rvh) { |
| + if (guest_contents) { |
| set_type(kTargetTypeWebView); |
| - set_parent_id(DevToolsAgentHost::GetOrCreateFor(guest_parent_rvh)->GetId()); |
| + set_parent_id(DevToolsAgentHost::GetOrCreateFor(guest_contents)->GetId()); |
| return; |
| } |
| @@ -133,42 +130,39 @@ RenderViewHostTarget::RenderViewHostTarget(RenderViewHost* rvh, bool is_tab) |
| ExtensionIconSet::MATCH_BIGGER, false, NULL)); |
| } |
| -bool RenderViewHostTarget::Activate() const { |
| - RenderViewHost* rvh = GetRenderViewHost(); |
| - if (!rvh) |
| - return false; |
| - WebContents* web_contents = WebContents::FromRenderViewHost(rvh); |
| +bool WebContentsTarget::Activate() const { |
| + WebContents* web_contents = GetWebContents(); |
| if (!web_contents) |
| return false; |
| web_contents->GetDelegate()->ActivateContents(web_contents); |
| return true; |
| } |
| -bool RenderViewHostTarget::Close() const { |
| - RenderViewHost* rvh = GetRenderViewHost(); |
| - if (!rvh) |
| +bool WebContentsTarget::Close() const { |
| + WebContents* web_contents = GetWebContents(); |
| + if (!web_contents) |
| return false; |
| - rvh->ClosePage(); |
| + web_contents->GetRenderViewHost()->ClosePage(); |
| return true; |
| } |
| -RenderViewHost* RenderViewHostTarget::GetRenderViewHost() const { |
| - return GetAgentHost()->GetRenderViewHost(); |
| +WebContents* WebContentsTarget::GetWebContents() const { |
| + return GetAgentHost()->GetWebContents(); |
| } |
| -int RenderViewHostTarget::GetTabId() const { |
| +int WebContentsTarget::GetTabId() const { |
| return tab_id_; |
| } |
| -std::string RenderViewHostTarget::GetExtensionId() const { |
| +std::string WebContentsTarget::GetExtensionId() const { |
| return extension_id_; |
| } |
| -void RenderViewHostTarget::Inspect(Profile* profile) const { |
| - RenderViewHost* rvh = GetRenderViewHost(); |
| - if (!rvh) |
| +void WebContentsTarget::Inspect(Profile* profile) const { |
| + WebContents* web_contents = GetWebContents(); |
| + if (!web_contents) |
| return; |
| - DevToolsWindow::OpenDevToolsWindow(rvh); |
| + DevToolsWindow::OpenDevToolsWindow(web_contents); |
| } |
| // WorkerTarget ---------------------------------------------------------------- |
| @@ -280,7 +274,7 @@ int DevToolsTargetImpl::GetTabId() const { |
| return -1; |
| } |
| -RenderViewHost* DevToolsTargetImpl::GetRenderViewHost() const { |
| +WebContents* DevToolsTargetImpl::GetWebContents() const { |
| return NULL; |
| } |
| @@ -295,25 +289,28 @@ void DevToolsTargetImpl::Reload() const { |
| } |
| // static |
| -scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForRenderViewHost( |
| - content::RenderViewHost* rvh, bool is_tab) { |
| - return scoped_ptr<DevToolsTargetImpl>(new RenderViewHostTarget(rvh, is_tab)); |
| +scoped_ptr<DevToolsTargetImpl> DevToolsTargetImpl::CreateForWebContents( |
| + content::WebContents* web_contents, |
| + bool is_tab) { |
| + return scoped_ptr<DevToolsTargetImpl>( |
| + new WebContentsTarget(web_contents, is_tab)); |
| } |
| // static |
| -DevToolsTargetImpl::List DevToolsTargetImpl::EnumerateRenderViewHostTargets() { |
| - std::set<RenderViewHost*> tab_rvhs; |
| +DevToolsTargetImpl::List DevToolsTargetImpl::EnumerateWebContentsTargets() { |
| + std::set<WebContents*> tab_web_contents; |
| for (TabContentsIterator it; !it.done(); it.Next()) |
| - tab_rvhs.insert(it->GetRenderViewHost()); |
| + tab_web_contents.insert(*it); |
| 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) { |
| - bool is_tab = tab_rvhs.find(*it) != tab_rvhs.end(); |
| - result.push_back(new RenderViewHostTarget(*it, is_tab)); |
| + std::vector<WebContents*> wc_list = |
| + content::DevToolsAgentHost::GetInspectableWebContents(); |
| + for (std::vector<WebContents*>::iterator it = wc_list.begin(); |
| + it != wc_list.end(); |
| + ++it) { |
| + bool is_tab = tab_web_contents.find(*it) != tab_web_contents.end(); |
| + result.push_back(new WebContentsTarget(*it, is_tab)); |
| } |
| return result; |
| } |
| @@ -345,7 +342,7 @@ static void CollectAllTargets( |
| const DevToolsTargetImpl::List& worker_targets) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| DevToolsTargetImpl::List result = |
| - DevToolsTargetImpl::EnumerateRenderViewHostTargets(); |
| + DevToolsTargetImpl::EnumerateWebContentsTargets(); |
| result.insert(result.begin(), worker_targets.begin(), worker_targets.end()); |
| callback.Run(result); |
| } |