| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/devtools/devtools_target_impl.h" | 5 #include "chrome/browser/devtools/devtools_target_impl.h" |
| 6 | 6 |
| 7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/browser/devtools/devtools_window.h" | 9 #include "chrome/browser/devtools/devtools_window.h" |
| 10 #include "chrome/browser/extensions/extension_tab_util.h" | 10 #include "chrome/browser/extensions/extension_tab_util.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 virtual int GetTabId() const OVERRIDE; | 54 virtual int GetTabId() const OVERRIDE; |
| 55 virtual std::string GetExtensionId() const OVERRIDE; | 55 virtual std::string GetExtensionId() const OVERRIDE; |
| 56 virtual void Inspect(Profile* profile) const OVERRIDE; | 56 virtual void Inspect(Profile* profile) const OVERRIDE; |
| 57 | 57 |
| 58 private: | 58 private: |
| 59 int tab_id_; | 59 int tab_id_; |
| 60 std::string extension_id_; | 60 std::string extension_id_; |
| 61 }; | 61 }; |
| 62 | 62 |
| 63 RenderViewHostTarget::RenderViewHostTarget(RenderViewHost* rvh, bool is_tab) | 63 RenderViewHostTarget::RenderViewHostTarget(RenderViewHost* rvh, bool is_tab) |
| 64 : DevToolsTargetImpl(DevToolsAgentHost::GetOrCreateFor(rvh)), | 64 : DevToolsTargetImpl(DevToolsAgentHost::GetOrCreateFor( |
| 65 WebContents::FromRenderViewHost(rvh))), |
| 65 tab_id_(-1) { | 66 tab_id_(-1) { |
| 66 set_type(kTargetTypeOther); | 67 set_type(kTargetTypeOther); |
| 67 WebContents* web_contents = WebContents::FromRenderViewHost(rvh); | 68 WebContents* web_contents = WebContents::FromRenderViewHost(rvh); |
| 68 if (!web_contents) | 69 if (!web_contents) |
| 69 return; // Orphan RVH will show up with no title/url/icon in clients. | 70 return; // Orphan RVH will show up with no title/url/icon in clients. |
| 70 | 71 |
| 71 content::RenderFrameHost* rfh = rvh->GetMainFrame(); | 72 content::RenderFrameHost* rfh = rvh->GetMainFrame(); |
| 72 if (rfh->IsCrossProcessSubframe()) { | 73 if (rfh->IsCrossProcessSubframe()) { |
| 73 set_url(rfh->GetLastCommittedURL()); | 74 set_url(rfh->GetLastCommittedURL()); |
| 74 set_type(kTargetTypeIFrame); | 75 set_type(kTargetTypeIFrame); |
| 75 // TODO(kaznacheev) Try setting the title when the frame navigation | 76 // TODO(kaznacheev) Try setting the title when the frame navigation |
| 76 // refactoring is done. | 77 // refactoring is done. |
| 77 RenderViewHost* parent_rvh = rfh->GetParent()->GetRenderViewHost(); | 78 RenderViewHost* parent_rvh = rfh->GetParent()->GetRenderViewHost(); |
| 78 set_parent_id(DevToolsAgentHost::GetOrCreateFor(parent_rvh)->GetId()); | 79 set_parent_id(DevToolsAgentHost::GetOrCreateFor( |
| 80 WebContents::FromRenderViewHost(parent_rvh))->GetId()); |
| 79 return; | 81 return; |
| 80 } | 82 } |
| 81 | 83 |
| 82 set_title(base::UTF16ToUTF8(web_contents->GetTitle())); | 84 set_title(base::UTF16ToUTF8(web_contents->GetTitle())); |
| 83 set_url(web_contents->GetURL()); | 85 set_url(web_contents->GetURL()); |
| 84 content::NavigationController& controller = web_contents->GetController(); | 86 content::NavigationController& controller = web_contents->GetController(); |
| 85 content::NavigationEntry* entry = controller.GetActiveEntry(); | 87 content::NavigationEntry* entry = controller.GetActiveEntry(); |
| 86 if (entry != NULL && entry->GetURL().is_valid()) | 88 if (entry != NULL && entry->GetURL().is_valid()) |
| 87 set_favicon_url(entry->GetFavicon().url); | 89 set_favicon_url(entry->GetFavicon().url); |
| 88 set_last_activity_time(web_contents->GetLastActiveTime()); | 90 set_last_activity_time(web_contents->GetLastActiveTime()); |
| 89 | 91 |
| 90 GuestViewBase* guest = GuestViewBase::FromWebContents(web_contents); | 92 GuestViewBase* guest = GuestViewBase::FromWebContents(web_contents); |
| 91 WebContents* guest_contents = guest ? guest->embedder_web_contents() : NULL; | 93 WebContents* guest_contents = guest ? guest->embedder_web_contents() : NULL; |
| 92 RenderViewHost* guest_parent_rvh = | 94 if (guest_contents) { |
| 93 guest_contents ? guest_contents->GetRenderViewHost() : NULL; | |
| 94 if (guest_parent_rvh) { | |
| 95 set_type(kTargetTypeWebView); | 95 set_type(kTargetTypeWebView); |
| 96 set_parent_id(DevToolsAgentHost::GetOrCreateFor(guest_parent_rvh)->GetId()); | 96 set_parent_id(DevToolsAgentHost::GetOrCreateFor(guest_contents)->GetId()); |
| 97 return; | 97 return; |
| 98 } | 98 } |
| 99 | 99 |
| 100 if (is_tab) { | 100 if (is_tab) { |
| 101 set_type(kTargetTypePage); | 101 set_type(kTargetTypePage); |
| 102 tab_id_ = extensions::ExtensionTabUtil::GetTabId(web_contents); | 102 tab_id_ = extensions::ExtensionTabUtil::GetTabId(web_contents); |
| 103 return; | 103 return; |
| 104 } | 104 } |
| 105 | 105 |
| 106 const extensions::Extension* extension = extensions::ExtensionRegistry::Get( | 106 const extensions::Extension* extension = extensions::ExtensionRegistry::Get( |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 } | 161 } |
| 162 | 162 |
| 163 std::string RenderViewHostTarget::GetExtensionId() const { | 163 std::string RenderViewHostTarget::GetExtensionId() const { |
| 164 return extension_id_; | 164 return extension_id_; |
| 165 } | 165 } |
| 166 | 166 |
| 167 void RenderViewHostTarget::Inspect(Profile* profile) const { | 167 void RenderViewHostTarget::Inspect(Profile* profile) const { |
| 168 RenderViewHost* rvh = GetRenderViewHost(); | 168 RenderViewHost* rvh = GetRenderViewHost(); |
| 169 if (!rvh) | 169 if (!rvh) |
| 170 return; | 170 return; |
| 171 DevToolsWindow::OpenDevToolsWindow(rvh); | 171 WebContents* web_contents = WebContents::FromRenderViewHost(rvh); |
| 172 if (!web_contents) |
| 173 return; |
| 174 DevToolsWindow::OpenDevToolsWindow(web_contents); |
| 172 } | 175 } |
| 173 | 176 |
| 174 // WorkerTarget ---------------------------------------------------------------- | 177 // WorkerTarget ---------------------------------------------------------------- |
| 175 | 178 |
| 176 class WorkerTarget : public DevToolsTargetImpl { | 179 class WorkerTarget : public DevToolsTargetImpl { |
| 177 public: | 180 public: |
| 178 explicit WorkerTarget(const WorkerService::WorkerInfo& worker_info); | 181 explicit WorkerTarget(const WorkerService::WorkerInfo& worker_info); |
| 179 | 182 |
| 180 // content::DevToolsTarget overrides: | 183 // content::DevToolsTarget overrides: |
| 181 virtual bool Close() const OVERRIDE; | 184 virtual bool Close() const OVERRIDE; |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 | 355 |
| 353 // static | 356 // static |
| 354 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { | 357 void DevToolsTargetImpl::EnumerateAllTargets(Callback callback) { |
| 355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 358 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 356 content::BrowserThread::PostTask( | 359 content::BrowserThread::PostTask( |
| 357 content::BrowserThread::IO, | 360 content::BrowserThread::IO, |
| 358 FROM_HERE, | 361 FROM_HERE, |
| 359 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets, | 362 base::Bind(&DevToolsTargetImpl::EnumerateWorkerTargets, |
| 360 base::Bind(&CollectAllTargets, callback))); | 363 base::Bind(&CollectAllTargets, callback))); |
| 361 } | 364 } |
| OLD | NEW |