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

Unified Diff: content/renderer/render_view_impl.cc

Issue 1023783004: [DevTools] Move DevToolsAgent to RenderFrameImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed comments Created 5 years, 9 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
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index d9a9d022e72aec08145befd022df7035e747901a..3866a2fd922da2fe30d427fc023265e7465d16c3 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -71,7 +71,6 @@
#include "content/public/renderer/render_view_visitor.h"
#include "content/renderer/browser_plugin/browser_plugin.h"
#include "content/renderer/browser_plugin/browser_plugin_manager.h"
-#include "content/renderer/devtools/devtools_agent.h"
#include "content/renderer/disambiguation_popup_helper.h"
#include "content/renderer/dom_storage/webstoragenamespace_impl.h"
#include "content/renderer/drop_data_builder.h"
@@ -416,6 +415,12 @@ static void ConvertToFaviconSizes(
sizes->push_back(gfx::Size(web_sizes[i]));
}
+static blink::WebDevToolsAgent* GetWebDevToolsAgent(WebView* webview) {
+ if (!webview || !webview->mainFrame()->isWebLocalFrame())
+ return nullptr;
+ return webview->mainFrame()->toWebLocalFrame()->devToolsAgent();
+}
+
///////////////////////////////////////////////////////////////////////////////
struct RenderViewImpl::PendingFileChooser {
@@ -637,7 +642,6 @@ RenderViewImpl::RenderViewImpl(const ViewMsg_New_Params& params)
#endif
has_scrolled_focused_editable_node_into_rect_(false),
speech_recognition_dispatcher_(NULL),
- devtools_agent_(NULL),
mouse_lock_dispatcher_(NULL),
#if defined(OS_ANDROID)
expected_content_intent_id_(0),
@@ -747,6 +751,10 @@ void RenderViewImpl::Initialize(const ViewMsg_New_Params& params,
} else {
webview()->setMainFrame(main_render_frame_->GetWebFrame());
}
+ // Here we have |main_render_frame_|, which does not really have blink::Frame
+ // instance inside, and creating DevToolsAgent fails with assertions.
+ // This happens because WebView receives WebRemoteFrame as a main frame,
+ // but |main_render_frame_| still points to WebLocalFrame instance.
main_render_frame_->Initialize();
dgozman 2015/03/25 16:25:50 This causes crash for me. See comment above. Any i
if (switches::IsTouchDragDropEnabled())
@@ -775,14 +783,14 @@ void RenderViewImpl::Initialize(const ViewMsg_New_Params& params,
new TextInputClientObserver(this);
#endif // defined(OS_MACOSX)
- // The next group of objects all implement RenderViewObserver, so are deleted
- // along with the RenderView automatically.
- if (!proxy) {
- devtools_agent_ = new DevToolsAgent(main_render_frame_.get());
+ // TODO(dgozman): do this not for main frame, but for local frame roots.
+ if (blink::WebDevToolsAgent* devToolsAgent = GetWebDevToolsAgent(webview())) {
if (RenderWidgetCompositor* rwc = compositor())
- webview()->devToolsAgent()->setLayerTreeId(rwc->GetLayerTreeId());
+ devToolsAgent->setLayerTreeId(rwc->GetLayerTreeId());
}
+ // The next group of objects all implement RenderViewObserver, so are deleted
+ // along with the RenderView automatically.
mouse_lock_dispatcher_ = new RenderViewMouseLockDispatcher(this);
history_controller_.reset(new HistoryController(this));
@@ -2021,8 +2029,9 @@ void RenderViewImpl::initializeLayerTreeView() {
RenderWidgetCompositor* rwc = compositor();
if (!rwc)
return;
- if (webview() && webview()->devToolsAgent())
- webview()->devToolsAgent()->setLayerTreeId(rwc->GetLayerTreeId());
+ // TODO(dgozman): do this not for main frame, but for local frame roots.
+ if (blink::WebDevToolsAgent* devToolsAgent = GetWebDevToolsAgent(webview()))
+ devToolsAgent->setLayerTreeId(rwc->GetLayerTreeId());
bool use_threaded_event_handling = true;
#if defined(OS_MACOSX) && !defined(OS_IOS)
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698