Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(693)

Unified Diff: chrome/browser/devtools/devtools_targets_ui.cc

Issue 305903004: DevTools: Add parent id to target descriptor in remote debugging. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed WebView compile Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/devtools/devtools_targets_ui.cc
diff --git a/chrome/browser/devtools/devtools_targets_ui.cc b/chrome/browser/devtools/devtools_targets_ui.cc
index 321d962fa72e46557f2e1ac6983dc84a61279a90..278961dba1be7de43ea95f15e39a97eb0fe35c2c 100644
--- a/chrome/browser/devtools/devtools_targets_ui.cc
+++ b/chrome/browser/devtools/devtools_targets_ui.cc
@@ -11,7 +11,6 @@
#include "base/version.h"
#include "chrome/browser/devtools/device/devtools_android_bridge.h"
#include "chrome/browser/devtools/devtools_target_impl.h"
-#include "chrome/browser/guest_view/guest_view_base.h"
#include "chrome/common/chrome_version_info.h"
#include "content/public/browser/browser_child_process_observer.h"
#include "content/public/browser/browser_thread.h"
@@ -21,18 +20,12 @@
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/notification_types.h"
-#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
#include "content/public/browser/worker_service.h"
#include "content/public/browser/worker_service_observer.h"
#include "content/public/common/process_type.h"
#include "net/base/escape.h"
using content::BrowserThread;
-using content::RenderFrameHost;
-using content::WebContents;
namespace {
@@ -141,8 +134,7 @@ void RenderViewHostTargetsUIHandler::Observe(
void RenderViewHostTargetsUIHandler::UpdateTargets() {
scoped_ptr<base::ListValue> list_value(new base::ListValue());
- std::map<RenderFrameHost*, base::DictionaryValue*> rfh_to_descriptor;
- std::vector<RenderFrameHost*> nested_frames;
+ std::map<std::string, base::DictionaryValue*> id_to_descriptor;
DevToolsTargetImpl::List targets =
DevToolsTargetImpl::EnumerateRenderViewHostTargets();
@@ -150,51 +142,26 @@ void RenderViewHostTargetsUIHandler::UpdateTargets() {
STLDeleteValues(&targets_);
for (DevToolsTargetImpl::List::iterator it = targets.begin();
it != targets.end(); ++it) {
- scoped_ptr<DevToolsTargetImpl> target(*it);
- content::RenderViewHost* rvh = target->GetRenderViewHost();
- if (!rvh)
- continue;
-
- DevToolsTargetImpl* target_ptr = target.get();
- targets_[target_ptr->GetId()] = target.release();
- base::DictionaryValue* descriptor = Serialize(*target_ptr);
-
- // TODO (kaznacheev): GetMainFrame() call is a temporary hack.
- // Revisit this when multiple OOP frames are supported.
- RenderFrameHost* rfh = rvh->GetMainFrame();
- rfh_to_descriptor[rfh] = descriptor;
- content::WebContents* web_contents =
- content::WebContents::FromRenderViewHost(rvh);
- if (GuestViewBase::IsGuest(web_contents) || rfh->IsCrossProcessSubframe()) {
- nested_frames.push_back(rfh);
- } else {
- list_value->Append(descriptor);
- }
+ DevToolsTargetImpl* target = *it;
+ targets_[target->GetId()] = target;
+ id_to_descriptor[target->GetId()] = Serialize(*target);
}
- // Add the list of nested targets to each of its owners.
- for (std::vector<RenderFrameHost*>::iterator it(nested_frames.begin());
- it != nested_frames.end(); ++it) {
- RenderFrameHost* rfh = (*it);
- RenderFrameHost* parent_rfh = NULL;
- content::RenderViewHost* rvh = rfh->GetRenderViewHost();
- WebContents* nested_web_contents = WebContents::FromRenderViewHost(rvh);
- GuestViewBase* guest = GuestViewBase::FromWebContents(nested_web_contents);
- if (guest) {
- WebContents* embedder = guest->embedder_web_contents();
- parent_rfh = embedder->GetRenderViewHost()->GetMainFrame();
+ for (TargetMap::iterator it(targets_.begin()); it != targets_.end(); ++it) {
+ DevToolsTargetImpl* target = it->second;
+ base::DictionaryValue* descriptor = id_to_descriptor[target->GetId()];
+
+ std::string parent_id = target->GetParentId();
+ if (parent_id.empty() || id_to_descriptor.count(parent_id) == 0) {
+ list_value->Append(descriptor);
} else {
- parent_rfh = rfh->GetParent();
- DCHECK(parent_rfh);
- }
- if (parent_rfh && rfh_to_descriptor.count(parent_rfh) > 0) {
- base::DictionaryValue* parent = rfh_to_descriptor[parent_rfh];
+ base::DictionaryValue* parent = id_to_descriptor[parent_id];
base::ListValue* guests = NULL;
if (!parent->GetList(kGuestList, &guests)) {
guests = new base::ListValue();
parent->Set(kGuestList, guests);
}
- guests->Append(rfh_to_descriptor[rfh]);
+ guests->Append(descriptor);
}
}
« no previous file with comments | « chrome/browser/devtools/devtools_target_impl.cc ('k') | content/browser/devtools/devtools_http_handler_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698