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

Side by Side Diff: content/browser/renderer_host/render_widget_host_impl.cc

Issue 1411203010: Separate RenderViewHost from RenderWidgetHost, part 4: delegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: done Created 5 years, 1 month 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
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/renderer_host/render_widget_host_impl.h" 5 #include "content/browser/renderer_host/render_widget_host_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 /////////////////////////////////////////////////////////////////////////////// 166 ///////////////////////////////////////////////////////////////////////////////
167 // RenderWidgetHostImpl 167 // RenderWidgetHostImpl
168 168
169 RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate, 169 RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
170 RenderProcessHost* process, 170 RenderProcessHost* process,
171 int32_t routing_id, 171 int32_t routing_id,
172 bool hidden) 172 bool hidden)
173 : view_(NULL), 173 : view_(NULL),
174 renderer_initialized_(false), 174 renderer_initialized_(false),
175 delegate_(delegate), 175 delegate_(delegate),
176 owner_delegate_(nullptr),
176 process_(process), 177 process_(process),
177 routing_id_(routing_id), 178 routing_id_(routing_id),
178 is_loading_(false), 179 is_loading_(false),
179 is_hidden_(hidden), 180 is_hidden_(hidden),
180 repaint_ack_pending_(false), 181 repaint_ack_pending_(false),
181 resize_ack_pending_(false), 182 resize_ack_pending_(false),
182 color_profile_out_of_date_(false), 183 color_profile_out_of_date_(false),
183 auto_resize_enabled_(false), 184 auto_resize_enabled_(false),
184 waiting_for_screen_rects_ack_(false), 185 waiting_for_screen_rects_ack_(false),
185 needs_repainting_on_restore_(false), 186 needs_repainting_on_restore_(false),
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 if (!hidden) 219 if (!hidden)
219 process_->WidgetRestored(); 220 process_->WidgetRestored();
220 221
221 latency_tracker_.Initialize(routing_id_, GetProcess()->GetID()); 222 latency_tracker_.Initialize(routing_id_, GetProcess()->GetID());
222 223
223 input_router_.reset(new InputRouterImpl( 224 input_router_.reset(new InputRouterImpl(
224 process_, this, this, routing_id_, GetInputRouterConfigForPlatform())); 225 process_, this, this, routing_id_, GetInputRouterConfigForPlatform()));
225 226
226 touch_emulator_.reset(); 227 touch_emulator_.reset();
227 228
228 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 229 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
ncarter (slow) 2015/10/26 18:35:02 You fixed the glitch :)
Avi (use Gerrit) 2015/10/26 19:41:28 Yes.
229 IsRenderView() ? RenderViewHost::From(this) : NULL);
230 if (BrowserPluginGuest::IsGuest(rvh) ||
231 !base::CommandLine::ForCurrentProcess()->HasSwitch(
232 switches::kDisableHangMonitor)) { 230 switches::kDisableHangMonitor)) {
233 hang_monitor_timeout_.reset(new TimeoutMonitor( 231 hang_monitor_timeout_.reset(new TimeoutMonitor(
234 base::Bind(&RenderWidgetHostImpl::RendererIsUnresponsive, 232 base::Bind(&RenderWidgetHostImpl::RendererIsUnresponsive,
235 weak_factory_.GetWeakPtr()))); 233 weak_factory_.GetWeakPtr())));
236 } 234 }
237 235
238 new_content_rendering_timeout_.reset(new TimeoutMonitor( 236 new_content_rendering_timeout_.reset(new TimeoutMonitor(
239 base::Bind(&RenderWidgetHostImpl::ClearDisplayedGraphics, 237 base::Bind(&RenderWidgetHostImpl::ClearDisplayedGraphics,
240 weak_factory_.GetWeakPtr()))); 238 weak_factory_.GetWeakPtr())));
241 } 239 }
(...skipping 24 matching lines...) Expand all
266 int32_t routing_id) { 264 int32_t routing_id) {
267 DCHECK_CURRENTLY_ON(BrowserThread::UI); 265 DCHECK_CURRENTLY_ON(BrowserThread::UI);
268 RoutingIDWidgetMap* widgets = g_routing_id_widget_map.Pointer(); 266 RoutingIDWidgetMap* widgets = g_routing_id_widget_map.Pointer();
269 RoutingIDWidgetMap::iterator it = widgets->find( 267 RoutingIDWidgetMap::iterator it = widgets->find(
270 RenderWidgetHostID(process_id, routing_id)); 268 RenderWidgetHostID(process_id, routing_id));
271 return it == widgets->end() ? NULL : it->second; 269 return it == widgets->end() ? NULL : it->second;
272 } 270 }
273 271
274 // static 272 // static
275 scoped_ptr<RenderWidgetHostIterator> RenderWidgetHost::GetRenderWidgetHosts() { 273 scoped_ptr<RenderWidgetHostIterator> RenderWidgetHost::GetRenderWidgetHosts() {
276 RenderWidgetHostIteratorImpl* hosts = new RenderWidgetHostIteratorImpl(); 274 scoped_ptr<RenderWidgetHostIteratorImpl> hosts(
277 RoutingIDWidgetMap* widgets = g_routing_id_widget_map.Pointer(); 275 new RenderWidgetHostIteratorImpl());
278 for (RoutingIDWidgetMap::const_iterator it = widgets->begin(); 276 for (auto& it : g_routing_id_widget_map.Get()) {
279 it != widgets->end(); 277 RenderWidgetHost* widget = it.second;
280 ++it) {
281 RenderWidgetHost* widget = it->second;
282 278
283 if (!widget->IsRenderView()) { 279 RenderViewHost* rvh = RenderViewHost::From(widget);
280 if (!rvh) {
284 hosts->Add(widget); 281 hosts->Add(widget);
285 continue; 282 continue;
286 } 283 }
287 284
288 // Add only active RenderViewHosts. 285 // For RenderViewHosts, add only active ones.
289 RenderViewHost* rvh = RenderViewHost::From(widget);
290 if (static_cast<RenderViewHostImpl*>(rvh)->is_active()) 286 if (static_cast<RenderViewHostImpl*>(rvh)->is_active())
291 hosts->Add(widget); 287 hosts->Add(widget);
292 } 288 }
293 289
294 return scoped_ptr<RenderWidgetHostIterator>(hosts); 290 return hosts.Pass();
295 } 291 }
296 292
297 // static 293 // static
298 scoped_ptr<RenderWidgetHostIterator> 294 scoped_ptr<RenderWidgetHostIterator>
299 RenderWidgetHostImpl::GetAllRenderWidgetHosts() { 295 RenderWidgetHostImpl::GetAllRenderWidgetHosts() {
300 RenderWidgetHostIteratorImpl* hosts = new RenderWidgetHostIteratorImpl(); 296 scoped_ptr<RenderWidgetHostIteratorImpl> hosts(
301 RoutingIDWidgetMap* widgets = g_routing_id_widget_map.Pointer(); 297 new RenderWidgetHostIteratorImpl());
302 for (RoutingIDWidgetMap::const_iterator it = widgets->begin(); 298 for (auto& it : g_routing_id_widget_map.Get())
303 it != widgets->end(); 299 hosts->Add(it.second);
304 ++it) {
305 hosts->Add(it->second);
306 }
307 300
308 return scoped_ptr<RenderWidgetHostIterator>(hosts); 301 return hosts.Pass();
309 } 302 }
310 303
311 // static 304 // static
312 RenderWidgetHostImpl* RenderWidgetHostImpl::From(RenderWidgetHost* rwh) { 305 RenderWidgetHostImpl* RenderWidgetHostImpl::From(RenderWidgetHost* rwh) {
313 return static_cast<RenderWidgetHostImpl*>(rwh); 306 return static_cast<RenderWidgetHostImpl*>(rwh);
314 } 307 }
315 308
316 void RenderWidgetHostImpl::SetView(RenderWidgetHostViewBase* view) { 309 void RenderWidgetHostImpl::SetView(RenderWidgetHostViewBase* view) {
317 if (view) 310 if (view)
318 view_weak_ = view->GetWeakPtr(); 311 view_weak_ = view->GetWeakPtr();
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 DCHECK(rv); 421 DCHECK(rv);
429 } 422 }
430 423
431 Destroy(); 424 Destroy();
432 } 425 }
433 426
434 bool RenderWidgetHostImpl::IsLoading() const { 427 bool RenderWidgetHostImpl::IsLoading() const {
435 return is_loading_; 428 return is_loading_;
436 } 429 }
437 430
438 bool RenderWidgetHostImpl::IsRenderView() const {
ncarter (slow) 2015/10/26 18:35:02 In a class that I once knew lived the call IsRende
Avi (use Gerrit) 2015/10/26 19:41:28 Acknowledged.
439 return false;
440 }
441
442 bool RenderWidgetHostImpl::OnMessageReceived(const IPC::Message &msg) { 431 bool RenderWidgetHostImpl::OnMessageReceived(const IPC::Message &msg) {
443 bool handled = true; 432 bool handled = true;
444 IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostImpl, msg) 433 IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostImpl, msg)
445 IPC_MESSAGE_HANDLER(FrameHostMsg_RenderProcessGone, OnRenderProcessGone) 434 IPC_MESSAGE_HANDLER(FrameHostMsg_RenderProcessGone, OnRenderProcessGone)
446 IPC_MESSAGE_HANDLER(InputHostMsg_QueueSyntheticGesture, 435 IPC_MESSAGE_HANDLER(InputHostMsg_QueueSyntheticGesture,
447 OnQueueSyntheticGesture) 436 OnQueueSyntheticGesture)
448 IPC_MESSAGE_HANDLER(InputHostMsg_ImeCancelComposition, 437 IPC_MESSAGE_HANDLER(InputHostMsg_ImeCancelComposition,
449 OnImeCancelComposition) 438 OnImeCancelComposition)
450 IPC_MESSAGE_HANDLER(ViewHostMsg_Close, OnClose) 439 IPC_MESSAGE_HANDLER(ViewHostMsg_Close, OnClose)
451 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateScreenRects_ACK, 440 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateScreenRects_ACK,
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 delegate_->RenderWidgetGotFocus(this); 690 delegate_->RenderWidgetGotFocus(this);
702 } 691 }
703 692
704 void RenderWidgetHostImpl::Focus() { 693 void RenderWidgetHostImpl::Focus() {
705 is_focused_ = true; 694 is_focused_ = true;
706 695
707 Send(new InputMsg_SetFocus(routing_id_, true)); 696 Send(new InputMsg_SetFocus(routing_id_, true));
708 697
709 // Also send page-level focus state to other SiteInstances involved in 698 // Also send page-level focus state to other SiteInstances involved in
710 // rendering the current FrameTree. 699 // rendering the current FrameTree.
711 if (IsRenderView() && delegate_) 700 if (RenderViewHost::From(this) && delegate_)
712 delegate_->ReplicatePageFocus(true); 701 delegate_->ReplicatePageFocus(true);
713 } 702 }
714 703
715 void RenderWidgetHostImpl::Blur() { 704 void RenderWidgetHostImpl::Blur() {
716 is_focused_ = false; 705 is_focused_ = false;
717 706
718 // If there is a pending mouse lock request, we don't want to reject it at 707 // If there is a pending mouse lock request, we don't want to reject it at
719 // this point. The user can switch focus back to this view and approve the 708 // this point. The user can switch focus back to this view and approve the
720 // request later. 709 // request later.
721 if (IsMouseLocked()) 710 if (IsMouseLocked())
722 view_->UnlockMouse(); 711 view_->UnlockMouse();
723 712
724 if (touch_emulator_) 713 if (touch_emulator_)
725 touch_emulator_->CancelTouch(); 714 touch_emulator_->CancelTouch();
726 715
727 Send(new InputMsg_SetFocus(routing_id_, false)); 716 Send(new InputMsg_SetFocus(routing_id_, false));
728 717
729 // Also send page-level focus state to other SiteInstances involved in 718 // Also send page-level focus state to other SiteInstances involved in
730 // rendering the current FrameTree. 719 // rendering the current FrameTree.
731 if (IsRenderView() && delegate_) 720 if (RenderViewHost::From(this) && delegate_)
732 delegate_->ReplicatePageFocus(false); 721 delegate_->ReplicatePageFocus(false);
733 } 722 }
734 723
735 void RenderWidgetHostImpl::LostCapture() { 724 void RenderWidgetHostImpl::LostCapture() {
736 if (touch_emulator_) 725 if (touch_emulator_)
737 touch_emulator_->CancelTouch(); 726 touch_emulator_->CancelTouch();
738 727
739 Send(new InputMsg_MouseCaptureLost(routing_id_)); 728 Send(new InputMsg_MouseCaptureLost(routing_id_));
740 } 729 }
741 730
(...skipping 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after
2196 } 2185 }
2197 2186
2198 #if defined(OS_WIN) 2187 #if defined(OS_WIN)
2199 gfx::NativeViewAccessible 2188 gfx::NativeViewAccessible
2200 RenderWidgetHostImpl::GetParentNativeViewAccessible() { 2189 RenderWidgetHostImpl::GetParentNativeViewAccessible() {
2201 return delegate_ ? delegate_->GetParentNativeViewAccessible() : NULL; 2190 return delegate_ ? delegate_->GetParentNativeViewAccessible() : NULL;
2202 } 2191 }
2203 #endif 2192 #endif
2204 2193
2205 } // namespace content 2194 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698