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

Side by Side Diff: content/browser/devtools/render_view_devtools_agent_host.cc

Issue 482503002: DevTools: follow up to r288297, check rvh for being null in all branches. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/devtools/render_view_devtools_agent_host.h" 5 #include "content/browser/devtools/render_view_devtools_agent_host.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/lazy_instance.h" 8 #include "base/lazy_instance.h"
9 #include "content/browser/child_process_security_policy_impl.h" 9 #include "content/browser/child_process_security_policy_impl.h"
10 #include "content/browser/devtools/devtools_manager_impl.h" 10 #include "content/browser/devtools/devtools_manager_impl.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 WebContents* web_contents = WebContents::FromRenderViewHost(pending); 100 WebContents* web_contents = WebContents::FromRenderViewHost(pending);
101 RenderViewDevToolsAgentHost* agent_host = FindAgentHost(web_contents); 101 RenderViewDevToolsAgentHost* agent_host = FindAgentHost(web_contents);
102 if (!agent_host) 102 if (!agent_host)
103 return; 103 return;
104 agent_host->DisconnectRenderViewHost(); 104 agent_host->DisconnectRenderViewHost();
105 agent_host->ConnectRenderViewHost(current); 105 agent_host->ConnectRenderViewHost(current);
106 } 106 }
107 107
108 RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(RenderViewHost* rvh) 108 RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(RenderViewHost* rvh)
109 : render_view_host_(NULL), 109 : render_view_host_(NULL),
110 overrides_handler_(new RendererOverridesHandler(this)), 110 overrides_handler_(new RendererOverridesHandler()),
111 tracing_handler_( 111 tracing_handler_(
112 new DevToolsTracingHandler(DevToolsTracingHandler::Renderer)), 112 new DevToolsTracingHandler(DevToolsTracingHandler::Renderer)),
113 power_handler_(new DevToolsPowerHandler()), 113 power_handler_(new DevToolsPowerHandler()),
114 reattaching_(false) { 114 reattaching_(false) {
115 SetRenderViewHost(rvh); 115 SetRenderViewHost(rvh);
116 DevToolsProtocol::Notifier notifier(base::Bind( 116 DevToolsProtocol::Notifier notifier(base::Bind(
117 &RenderViewDevToolsAgentHost::OnDispatchOnInspectorFrontend, 117 &RenderViewDevToolsAgentHost::OnDispatchOnInspectorFrontend,
118 base::Unretained(this))); 118 base::Unretained(this)));
119 overrides_handler_->SetNotifier(notifier); 119 overrides_handler_->SetNotifier(notifier);
120 tracing_handler_->SetNotifier(notifier); 120 tracing_handler_->SetNotifier(notifier);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 this); 247 this);
248 if (it != g_instances.Get().end()) 248 if (it != g_instances.Get().end())
249 g_instances.Get().erase(it); 249 g_instances.Get().erase(it);
250 } 250 }
251 251
252 void RenderViewDevToolsAgentHost::AboutToNavigateRenderView( 252 void RenderViewDevToolsAgentHost::AboutToNavigateRenderView(
253 RenderViewHost* dest_rvh) { 253 RenderViewHost* dest_rvh) {
254 if (!render_view_host_) 254 if (!render_view_host_)
255 return; 255 return;
256 256
257 if (render_view_host_ == dest_rvh && static_cast<RenderViewHostImpl*>( 257 if (render_view_host_ == dest_rvh &&
258 render_view_host_)->render_view_termination_status() == 258 render_view_host_->render_view_termination_status() ==
259 base::TERMINATION_STATUS_STILL_RUNNING) 259 base::TERMINATION_STATUS_STILL_RUNNING)
260 return; 260 return;
261 ReattachToRenderViewHost(dest_rvh); 261 ReattachToRenderViewHost(dest_rvh);
262 } 262 }
263 263
264 void RenderViewDevToolsAgentHost::RenderViewHostChanged( 264 void RenderViewDevToolsAgentHost::RenderViewHostChanged(
265 RenderViewHost* old_host, 265 RenderViewHost* old_host,
266 RenderViewHost* new_host) { 266 RenderViewHost* new_host) {
267 if (new_host != render_view_host_) { 267 if (new_host != render_view_host_) {
268 // AboutToNavigateRenderView was not called for renderer-initiated 268 // AboutToNavigateRenderView was not called for renderer-initiated
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 const NotificationSource& source, 335 const NotificationSource& source,
336 const NotificationDetails& details) { 336 const NotificationDetails& details) {
337 if (type == content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED) { 337 if (type == content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED) {
338 bool visible = *Details<bool>(details).ptr(); 338 bool visible = *Details<bool>(details).ptr();
339 overrides_handler_->OnVisibilityChanged(visible); 339 overrides_handler_->OnVisibilityChanged(visible);
340 } 340 }
341 } 341 }
342 342
343 void RenderViewDevToolsAgentHost::SetRenderViewHost(RenderViewHost* rvh) { 343 void RenderViewDevToolsAgentHost::SetRenderViewHost(RenderViewHost* rvh) {
344 DCHECK(!render_view_host_); 344 DCHECK(!render_view_host_);
345 render_view_host_ = rvh; 345 render_view_host_ = static_cast<RenderViewHostImpl*>(rvh);
346 346
347 WebContentsObserver::Observe(WebContents::FromRenderViewHost(rvh)); 347 WebContentsObserver::Observe(WebContents::FromRenderViewHost(rvh));
348 overrides_handler_->OnRenderViewHostChanged(); 348 overrides_handler_->SetRenderViewHost(render_view_host_);
349 349
350 registrar_.Add( 350 registrar_.Add(
351 this, 351 this,
352 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, 352 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED,
353 content::Source<RenderWidgetHost>(render_view_host_)); 353 content::Source<RenderWidgetHost>(render_view_host_));
354 } 354 }
355 355
356 void RenderViewDevToolsAgentHost::ClearRenderViewHost() { 356 void RenderViewDevToolsAgentHost::ClearRenderViewHost() {
357 DCHECK(render_view_host_); 357 DCHECK(render_view_host_);
358 registrar_.Remove( 358 registrar_.Remove(
359 this, 359 this,
360 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, 360 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED,
361 content::Source<RenderWidgetHost>(render_view_host_)); 361 content::Source<RenderWidgetHost>(render_view_host_));
362 render_view_host_ = NULL; 362 render_view_host_ = NULL;
363 overrides_handler_->ClearRenderViewHost();
363 } 364 }
364 365
365 void RenderViewDevToolsAgentHost::DisconnectWebContents() { 366 void RenderViewDevToolsAgentHost::DisconnectWebContents() {
366 DisconnectRenderViewHost(); 367 DisconnectRenderViewHost();
367 } 368 }
368 369
369 void RenderViewDevToolsAgentHost::ConnectWebContents(WebContents* wc) { 370 void RenderViewDevToolsAgentHost::ConnectWebContents(WebContents* wc) {
370 ConnectRenderViewHost(wc->GetRenderViewHost()); 371 ConnectRenderViewHost(wc->GetRenderViewHost());
371 } 372 }
372 373
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 DevToolsProtocol::ParseNotification(message); 446 DevToolsProtocol::ParseNotification(message);
446 447
447 if (notification) { 448 if (notification) {
448 tracing_handler_->HandleNotification(notification); 449 tracing_handler_->HandleNotification(notification);
449 } 450 }
450 DevToolsManagerImpl::GetInstance()->DispatchOnInspectorFrontend( 451 DevToolsManagerImpl::GetInstance()->DispatchOnInspectorFrontend(
451 this, message); 452 this, message);
452 } 453 }
453 454
454 } // namespace content 455 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698