OLD | NEW |
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.h" | 5 #include "content/browser/renderer_host/render_widget_host.h" |
6 | 6 |
7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 return last_event.modifiers == new_event.modifiers && | 73 return last_event.modifiers == new_event.modifiers && |
74 last_event.scrollByPage == new_event.scrollByPage && | 74 last_event.scrollByPage == new_event.scrollByPage && |
75 last_event.hasPreciseScrollingDeltas | 75 last_event.hasPreciseScrollingDeltas |
76 == new_event.hasPreciseScrollingDeltas && | 76 == new_event.hasPreciseScrollingDeltas && |
77 last_event.phase == new_event.phase && | 77 last_event.phase == new_event.phase && |
78 last_event.momentumPhase == new_event.momentumPhase; | 78 last_event.momentumPhase == new_event.momentumPhase; |
79 } | 79 } |
80 | 80 |
81 } // namespace | 81 } // namespace |
82 | 82 |
83 RenderWidgetHost::RenderWidgetHost(content::RenderProcessHost* process) | |
84 : process_(process), | |
85 view_(NULL) { | |
86 } | |
87 | |
88 content::RenderWidgetHostView* RenderWidgetHost::view() const { | |
89 return view_; | |
90 } | |
91 | |
92 // static | 83 // static |
93 RenderWidgetHost* RenderWidgetHost::FromIPCChannelListener( | 84 RenderWidgetHost* RenderWidgetHost::FromIPCChannelListener( |
94 IPC::Channel::Listener* listener) { | 85 IPC::Channel::Listener* listener) { |
95 return static_cast<RenderWidgetHost*>( | 86 return static_cast<RenderWidgetHost*>( |
96 static_cast<RenderWidgetHostImpl*>(listener)); | 87 static_cast<RenderWidgetHostImpl*>(listener)); |
97 } | 88 } |
98 | 89 |
99 // static | 90 // static |
100 const RenderWidgetHost* RenderWidgetHost::FromIPCChannelListener( | 91 const RenderWidgetHost* RenderWidgetHost::FromIPCChannelListener( |
101 const IPC::Channel::Listener* listener) { | 92 const IPC::Channel::Listener* listener) { |
102 return static_cast<const RenderWidgetHost*>( | 93 return static_cast<const RenderWidgetHost*>( |
103 static_cast<const RenderWidgetHostImpl*>(listener)); | 94 static_cast<const RenderWidgetHostImpl*>(listener)); |
104 } | 95 } |
105 | 96 |
106 // static | 97 // static |
107 void RenderWidgetHost::RemoveAllBackingStores() { | 98 void RenderWidgetHost::RemoveAllBackingStores() { |
108 BackingStoreManager::RemoveAllBackingStores(); | 99 BackingStoreManager::RemoveAllBackingStores(); |
109 } | 100 } |
110 | 101 |
111 // static | 102 // static |
112 size_t RenderWidgetHost::BackingStoreMemorySize() { | 103 size_t RenderWidgetHost::BackingStoreMemorySize() { |
113 return BackingStoreManager::MemorySize(); | 104 return BackingStoreManager::MemorySize(); |
114 } | 105 } |
115 | 106 |
116 /////////////////////////////////////////////////////////////////////////////// | 107 /////////////////////////////////////////////////////////////////////////////// |
117 // RenderWidgetHostImpl | 108 // RenderWidgetHostImpl |
118 | 109 |
119 RenderWidgetHostImpl::RenderWidgetHostImpl(content::RenderProcessHost* process, | 110 RenderWidgetHostImpl::RenderWidgetHostImpl(content::RenderProcessHost* process, |
120 int routing_id) | 111 int routing_id) |
121 : RenderWidgetHost(process), | 112 : view_(NULL), |
122 renderer_initialized_(false), | 113 renderer_initialized_(false), |
123 hung_renderer_delay_ms_(kHungRendererDelayMs), | 114 hung_renderer_delay_ms_(kHungRendererDelayMs), |
| 115 process_(process), |
| 116 routing_id_(routing_id), |
124 renderer_accessible_(false), | 117 renderer_accessible_(false), |
125 routing_id_(routing_id), | |
126 surface_id_(0), | 118 surface_id_(0), |
127 is_loading_(false), | 119 is_loading_(false), |
128 is_hidden_(false), | 120 is_hidden_(false), |
129 is_accelerated_compositing_active_(false), | 121 is_accelerated_compositing_active_(false), |
130 repaint_ack_pending_(false), | 122 repaint_ack_pending_(false), |
131 resize_ack_pending_(false), | 123 resize_ack_pending_(false), |
132 should_auto_resize_(false), | 124 should_auto_resize_(false), |
133 mouse_move_pending_(false), | 125 mouse_move_pending_(false), |
134 mouse_wheel_pending_(false), | 126 mouse_wheel_pending_(false), |
135 needs_repainting_on_restore_(false), | 127 needs_repainting_on_restore_(false), |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 // Clear our current or cached backing store if either remains. | 178 // Clear our current or cached backing store if either remains. |
187 BackingStoreManager::RemoveBackingStore(this); | 179 BackingStoreManager::RemoveBackingStore(this); |
188 | 180 |
189 GpuSurfaceTracker::Get()->RemoveSurface(surface_id_); | 181 GpuSurfaceTracker::Get()->RemoveSurface(surface_id_); |
190 surface_id_ = 0; | 182 surface_id_ = 0; |
191 | 183 |
192 process_->Release(routing_id_); | 184 process_->Release(routing_id_); |
193 } | 185 } |
194 | 186 |
195 // static | 187 // static |
196 RenderWidgetHostImpl* RenderWidgetHostImpl::FromRWHV( | 188 RenderWidgetHostImpl* RenderWidgetHostImpl::From(RenderWidgetHost* rwh) { |
197 content::RenderWidgetHostView* rwhv) { | 189 return rwh->AsRenderWidgetHostImpl(); |
198 return static_cast<RenderWidgetHostImpl*>(rwhv->GetRenderWidgetHost()); | |
199 } | 190 } |
200 | 191 |
201 void RenderWidgetHostImpl::SetView(content::RenderWidgetHostView* view) { | 192 void RenderWidgetHostImpl::SetView(content::RenderWidgetHostView* view) { |
202 view_ = RenderWidgetHostViewPort::FromRWHV(view); | 193 view_ = RenderWidgetHostViewPort::FromRWHV(view); |
203 | 194 |
204 if (!view_) { | 195 if (!view_) { |
205 GpuSurfaceTracker::Get()->SetSurfaceHandle( | 196 GpuSurfaceTracker::Get()->SetSurfaceHandle( |
206 surface_id_, gfx::GLSurfaceHandle()); | 197 surface_id_, gfx::GLSurfaceHandle()); |
207 } | 198 } |
208 } | 199 } |
209 | 200 |
| 201 content::RenderProcessHost* RenderWidgetHostImpl::GetProcess() const { |
| 202 return process_; |
| 203 } |
| 204 |
| 205 int RenderWidgetHostImpl::GetRoutingID() const { |
| 206 return routing_id_; |
| 207 } |
| 208 |
| 209 content::RenderWidgetHostView* RenderWidgetHostImpl::GetView() const { |
| 210 return view_; |
| 211 } |
| 212 |
| 213 RenderWidgetHostImpl* RenderWidgetHostImpl::AsRenderWidgetHostImpl() { |
| 214 return this; |
| 215 } |
| 216 |
| 217 bool RenderWidgetHostImpl::OnMessageReceivedForTesting( |
| 218 const IPC::Message& msg) { |
| 219 return OnMessageReceived(msg); |
| 220 } |
| 221 |
210 gfx::NativeViewId RenderWidgetHostImpl::GetNativeViewId() const { | 222 gfx::NativeViewId RenderWidgetHostImpl::GetNativeViewId() const { |
211 if (view_) | 223 if (view_) |
212 return view_->GetNativeViewId(); | 224 return view_->GetNativeViewId(); |
213 return 0; | 225 return 0; |
214 } | 226 } |
215 | 227 |
216 gfx::GLSurfaceHandle RenderWidgetHostImpl::GetCompositingSurface() { | 228 gfx::GLSurfaceHandle RenderWidgetHostImpl::GetCompositingSurface() { |
217 if (view_) | 229 if (view_) |
218 return view_->GetCompositingSurface(); | 230 return view_->GetCompositingSurface(); |
219 return gfx::GLSurfaceHandle(); | 231 return gfx::GLSurfaceHandle(); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 OnMsgCreatePluginContainer) | 317 OnMsgCreatePluginContainer) |
306 IPC_MESSAGE_HANDLER(ViewHostMsg_DestroyPluginContainer, | 318 IPC_MESSAGE_HANDLER(ViewHostMsg_DestroyPluginContainer, |
307 OnMsgDestroyPluginContainer) | 319 OnMsgDestroyPluginContainer) |
308 #endif | 320 #endif |
309 IPC_MESSAGE_UNHANDLED(handled = false) | 321 IPC_MESSAGE_UNHANDLED(handled = false) |
310 IPC_END_MESSAGE_MAP_EX() | 322 IPC_END_MESSAGE_MAP_EX() |
311 | 323 |
312 if (!msg_is_ok) { | 324 if (!msg_is_ok) { |
313 // The message de-serialization failed. Kill the renderer process. | 325 // The message de-serialization failed. Kill the renderer process. |
314 content::RecordAction(UserMetricsAction("BadMessageTerminate_RWH")); | 326 content::RecordAction(UserMetricsAction("BadMessageTerminate_RWH")); |
315 process()->ReceivedBadMessage(); | 327 GetProcess()->ReceivedBadMessage(); |
316 } | 328 } |
317 return handled; | 329 return handled; |
318 } | 330 } |
319 | 331 |
320 bool RenderWidgetHostImpl::Send(IPC::Message* msg) { | 332 bool RenderWidgetHostImpl::Send(IPC::Message* msg) { |
321 return process_->Send(msg); | 333 return process_->Send(msg); |
322 } | 334 } |
323 | 335 |
324 void RenderWidgetHostImpl::WasHidden() { | 336 void RenderWidgetHostImpl::WasHidden() { |
325 is_hidden_ = true; | 337 is_hidden_ = true; |
326 | 338 |
327 // Don't bother reporting hung state when we aren't the active tab. | 339 // Don't bother reporting hung state when we aren't the active tab. |
328 StopHangMonitorTimeout(); | 340 StopHangMonitorTimeout(); |
329 | 341 |
330 // If we have a renderer, then inform it that we are being hidden so it can | 342 // If we have a renderer, then inform it that we are being hidden so it can |
331 // reduce its resource utilization. | 343 // reduce its resource utilization. |
332 Send(new ViewMsg_WasHidden(routing_id_)); | 344 Send(new ViewMsg_WasHidden(routing_id_)); |
333 | 345 |
334 // Tell the RenderProcessHost we were hidden. | 346 // Tell the RenderProcessHost we were hidden. |
335 process_->WidgetHidden(); | 347 process_->WidgetHidden(); |
336 | 348 |
337 bool is_visible = false; | 349 bool is_visible = false; |
338 content::NotificationService::current()->Notify( | 350 content::NotificationService::current()->Notify( |
339 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, | 351 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, |
340 content::Source<RenderWidgetHostImpl>(this), | 352 content::Source<RenderWidgetHost>(this), |
341 content::Details<bool>(&is_visible)); | 353 content::Details<bool>(&is_visible)); |
342 } | 354 } |
343 | 355 |
344 void RenderWidgetHostImpl::WasRestored() { | 356 void RenderWidgetHostImpl::WasRestored() { |
345 // When we create the widget, it is created as *not* hidden. | 357 // When we create the widget, it is created as *not* hidden. |
346 if (!is_hidden_) | 358 if (!is_hidden_) |
347 return; | 359 return; |
348 is_hidden_ = false; | 360 is_hidden_ = false; |
349 | 361 |
350 BackingStore* backing_store = BackingStoreManager::Lookup(this); | 362 BackingStore* backing_store = BackingStoreManager::Lookup(this); |
351 // If we already have a backing store for this widget, then we don't need to | 363 // If we already have a backing store for this widget, then we don't need to |
352 // repaint on restore _unless_ we know that our backing store is invalid. | 364 // repaint on restore _unless_ we know that our backing store is invalid. |
353 // When accelerated compositing is on, we must always repaint, even when | 365 // When accelerated compositing is on, we must always repaint, even when |
354 // the backing store exists. | 366 // the backing store exists. |
355 bool needs_repainting; | 367 bool needs_repainting; |
356 if (needs_repainting_on_restore_ || !backing_store || | 368 if (needs_repainting_on_restore_ || !backing_store || |
357 is_accelerated_compositing_active()) { | 369 is_accelerated_compositing_active()) { |
358 needs_repainting = true; | 370 needs_repainting = true; |
359 needs_repainting_on_restore_ = false; | 371 needs_repainting_on_restore_ = false; |
360 } else { | 372 } else { |
361 needs_repainting = false; | 373 needs_repainting = false; |
362 } | 374 } |
363 Send(new ViewMsg_WasRestored(routing_id_, needs_repainting)); | 375 Send(new ViewMsg_WasRestored(routing_id_, needs_repainting)); |
364 | 376 |
365 process_->WidgetRestored(); | 377 process_->WidgetRestored(); |
366 | 378 |
367 bool is_visible = true; | 379 bool is_visible = true; |
368 content::NotificationService::current()->Notify( | 380 content::NotificationService::current()->Notify( |
369 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, | 381 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, |
370 content::Source<RenderWidgetHostImpl>(this), | 382 content::Source<RenderWidgetHost>(this), |
371 content::Details<bool>(&is_visible)); | 383 content::Details<bool>(&is_visible)); |
372 | 384 |
373 // It's possible for our size to be out of sync with the renderer. The | 385 // It's possible for our size to be out of sync with the renderer. The |
374 // following is one case that leads to this: | 386 // following is one case that leads to this: |
375 // 1. WasResized -> Send ViewMsg_Resize to render | 387 // 1. WasResized -> Send ViewMsg_Resize to render |
376 // 2. WasResized -> do nothing as resize_ack_pending_ is true | 388 // 2. WasResized -> do nothing as resize_ack_pending_ is true |
377 // 3. WasHidden | 389 // 3. WasHidden |
378 // 4. OnMsgUpdateRect from (1) processed. Does NOT invoke WasResized as view | 390 // 4. OnMsgUpdateRect from (1) processed. Does NOT invoke WasResized as view |
379 // is hidden. Now renderer/browser out of sync with what they think size | 391 // is hidden. Now renderer/browser out of sync with what they think size |
380 // is. | 392 // is. |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
569 return backing_store; | 581 return backing_store; |
570 } | 582 } |
571 | 583 |
572 BackingStore* RenderWidgetHostImpl::AllocBackingStore(const gfx::Size& size) { | 584 BackingStore* RenderWidgetHostImpl::AllocBackingStore(const gfx::Size& size) { |
573 if (!view_) | 585 if (!view_) |
574 return NULL; | 586 return NULL; |
575 return view_->AllocBackingStore(size); | 587 return view_->AllocBackingStore(size); |
576 } | 588 } |
577 | 589 |
578 void RenderWidgetHostImpl::DonePaintingToBackingStore() { | 590 void RenderWidgetHostImpl::DonePaintingToBackingStore() { |
579 Send(new ViewMsg_UpdateRect_ACK(routing_id())); | 591 Send(new ViewMsg_UpdateRect_ACK(GetRoutingID())); |
580 } | 592 } |
581 | 593 |
582 void RenderWidgetHostImpl::ScheduleComposite() { | 594 void RenderWidgetHostImpl::ScheduleComposite() { |
583 if (is_hidden_ || !is_accelerated_compositing_active_) { | 595 if (is_hidden_ || !is_accelerated_compositing_active_) { |
584 return; | 596 return; |
585 } | 597 } |
586 | 598 |
587 // Send out a request to the renderer to paint the view if required. | 599 // Send out a request to the renderer to paint the view if required. |
588 if (!repaint_ack_pending_ && !resize_ack_pending_ && !view_being_painted_) { | 600 if (!repaint_ack_pending_ && !resize_ack_pending_ && !view_being_painted_) { |
589 repaint_start_time_ = TimeTicks::Now(); | 601 repaint_start_time_ = TimeTicks::Now(); |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
867 } | 879 } |
868 | 880 |
869 void RenderWidgetHostImpl::CancelUpdateTextDirection() { | 881 void RenderWidgetHostImpl::CancelUpdateTextDirection() { |
870 if (text_direction_updated_) | 882 if (text_direction_updated_) |
871 text_direction_canceled_ = true; | 883 text_direction_canceled_ = true; |
872 } | 884 } |
873 | 885 |
874 void RenderWidgetHostImpl::NotifyTextDirection() { | 886 void RenderWidgetHostImpl::NotifyTextDirection() { |
875 if (text_direction_updated_) { | 887 if (text_direction_updated_) { |
876 if (!text_direction_canceled_) | 888 if (!text_direction_canceled_) |
877 Send(new ViewMsg_SetTextDirection(routing_id(), text_direction_)); | 889 Send(new ViewMsg_SetTextDirection(GetRoutingID(), text_direction_)); |
878 text_direction_updated_ = false; | 890 text_direction_updated_ = false; |
879 text_direction_canceled_ = false; | 891 text_direction_canceled_ = false; |
880 } | 892 } |
881 } | 893 } |
882 | 894 |
883 void RenderWidgetHostImpl::SetInputMethodActive(bool activate) { | 895 void RenderWidgetHostImpl::SetInputMethodActive(bool activate) { |
884 Send(new ViewMsg_SetInputMethodActive(routing_id(), activate)); | 896 Send(new ViewMsg_SetInputMethodActive(GetRoutingID(), activate)); |
885 } | 897 } |
886 | 898 |
887 void RenderWidgetHostImpl::ImeSetComposition( | 899 void RenderWidgetHostImpl::ImeSetComposition( |
888 const string16& text, | 900 const string16& text, |
889 const std::vector<WebKit::WebCompositionUnderline>& underlines, | 901 const std::vector<WebKit::WebCompositionUnderline>& underlines, |
890 int selection_start, | 902 int selection_start, |
891 int selection_end) { | 903 int selection_end) { |
892 Send(new ViewMsg_ImeSetComposition( | 904 Send(new ViewMsg_ImeSetComposition( |
893 routing_id(), text, underlines, selection_start, selection_end)); | 905 GetRoutingID(), text, underlines, selection_start, selection_end)); |
894 } | 906 } |
895 | 907 |
896 void RenderWidgetHostImpl::ImeConfirmComposition(const string16& text) { | 908 void RenderWidgetHostImpl::ImeConfirmComposition(const string16& text) { |
897 ImeConfirmComposition(text, ui::Range::InvalidRange()); | 909 ImeConfirmComposition(text, ui::Range::InvalidRange()); |
898 } | 910 } |
899 | 911 |
900 void RenderWidgetHostImpl::ImeConfirmComposition( | 912 void RenderWidgetHostImpl::ImeConfirmComposition( |
901 const string16& text, const ui::Range& replacement_range) { | 913 const string16& text, const ui::Range& replacement_range) { |
902 Send(new ViewMsg_ImeConfirmComposition( | 914 Send(new ViewMsg_ImeConfirmComposition( |
903 routing_id(), text, replacement_range)); | 915 GetRoutingID(), text, replacement_range)); |
904 } | 916 } |
905 | 917 |
906 void RenderWidgetHostImpl::ImeConfirmComposition() { | 918 void RenderWidgetHostImpl::ImeConfirmComposition() { |
907 ImeConfirmComposition(string16()); | 919 ImeConfirmComposition(string16()); |
908 } | 920 } |
909 | 921 |
910 void RenderWidgetHostImpl::ImeCancelComposition() { | 922 void RenderWidgetHostImpl::ImeCancelComposition() { |
911 Send(new ViewMsg_ImeSetComposition(routing_id(), string16(), | 923 Send(new ViewMsg_ImeSetComposition(GetRoutingID(), string16(), |
912 std::vector<WebKit::WebCompositionUnderline>(), 0, 0)); | 924 std::vector<WebKit::WebCompositionUnderline>(), 0, 0)); |
913 } | 925 } |
914 | 926 |
915 gfx::Rect RenderWidgetHostImpl::GetRootWindowResizerRect() const { | 927 gfx::Rect RenderWidgetHostImpl::GetRootWindowResizerRect() const { |
916 return gfx::Rect(); | 928 return gfx::Rect(); |
917 } | 929 } |
918 | 930 |
919 void RenderWidgetHostImpl::RequestToLockMouse() { | 931 void RenderWidgetHostImpl::RequestToLockMouse() { |
920 // Directly reject to lock the mouse. Subclass can override this method to | 932 // Directly reject to lock the mouse. Subclass can override this method to |
921 // decide whether to allow mouse lock or not. | 933 // decide whether to allow mouse lock or not. |
(...skipping 18 matching lines...) Expand all Loading... |
940 return false; | 952 return false; |
941 } | 953 } |
942 | 954 |
943 void RenderWidgetHostImpl::SetShouldAutoResize(bool enable) { | 955 void RenderWidgetHostImpl::SetShouldAutoResize(bool enable) { |
944 should_auto_resize_ = enable; | 956 should_auto_resize_ = enable; |
945 } | 957 } |
946 | 958 |
947 void RenderWidgetHostImpl::Destroy() { | 959 void RenderWidgetHostImpl::Destroy() { |
948 content::NotificationService::current()->Notify( | 960 content::NotificationService::current()->Notify( |
949 content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, | 961 content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, |
950 content::Source<RenderWidgetHostImpl>(this), | 962 content::Source<RenderWidgetHost>(this), |
951 content::NotificationService::NoDetails()); | 963 content::NotificationService::NoDetails()); |
952 | 964 |
953 // Tell the view to die. | 965 // Tell the view to die. |
954 // Note that in the process of the view shutting down, it can call a ton | 966 // Note that in the process of the view shutting down, it can call a ton |
955 // of other messages on us. So if you do any other deinitialization here, | 967 // of other messages on us. So if you do any other deinitialization here, |
956 // do it after this call to view_->Destroy(). | 968 // do it after this call to view_->Destroy(). |
957 if (view_) | 969 if (view_) |
958 view_->Destroy(); | 970 view_->Destroy(); |
959 | 971 |
960 delete this; | 972 delete this; |
961 } | 973 } |
962 | 974 |
963 void RenderWidgetHostImpl::CheckRendererIsUnresponsive() { | 975 void RenderWidgetHostImpl::CheckRendererIsUnresponsive() { |
964 // If we received a call to StopHangMonitorTimeout. | 976 // If we received a call to StopHangMonitorTimeout. |
965 if (time_when_considered_hung_.is_null()) | 977 if (time_when_considered_hung_.is_null()) |
966 return; | 978 return; |
967 | 979 |
968 // If we have not waited long enough, then wait some more. | 980 // If we have not waited long enough, then wait some more. |
969 Time now = Time::Now(); | 981 Time now = Time::Now(); |
970 if (now < time_when_considered_hung_) { | 982 if (now < time_when_considered_hung_) { |
971 StartHangMonitorTimeout(time_when_considered_hung_ - now); | 983 StartHangMonitorTimeout(time_when_considered_hung_ - now); |
972 return; | 984 return; |
973 } | 985 } |
974 | 986 |
975 // OK, looks like we have a hung renderer! | 987 // OK, looks like we have a hung renderer! |
976 content::NotificationService::current()->Notify( | 988 content::NotificationService::current()->Notify( |
977 content::NOTIFICATION_RENDERER_PROCESS_HANG, | 989 content::NOTIFICATION_RENDERER_PROCESS_HANG, |
978 content::Source<RenderWidgetHostImpl>(this), | 990 content::Source<RenderWidgetHost>(this), |
979 content::NotificationService::NoDetails()); | 991 content::NotificationService::NoDetails()); |
980 is_unresponsive_ = true; | 992 is_unresponsive_ = true; |
981 NotifyRendererUnresponsive(); | 993 NotifyRendererUnresponsive(); |
982 } | 994 } |
983 | 995 |
984 void RenderWidgetHostImpl::RendererIsResponsive() { | 996 void RenderWidgetHostImpl::RendererIsResponsive() { |
985 if (is_unresponsive_) { | 997 if (is_unresponsive_) { |
986 is_unresponsive_ = false; | 998 is_unresponsive_ = false; |
987 NotifyRendererResponsive(); | 999 NotifyRendererResponsive(); |
988 } | 1000 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1024 if (text_direction_hint == WebKit::WebTextDirectionLeftToRight) { | 1036 if (text_direction_hint == WebKit::WebTextDirectionLeftToRight) { |
1025 // Force the tooltip to have LTR directionality. | 1037 // Force the tooltip to have LTR directionality. |
1026 wrapped_tooltip_text = | 1038 wrapped_tooltip_text = |
1027 base::i18n::GetDisplayStringInLTRDirectionality(wrapped_tooltip_text); | 1039 base::i18n::GetDisplayStringInLTRDirectionality(wrapped_tooltip_text); |
1028 } else if (text_direction_hint == WebKit::WebTextDirectionRightToLeft && | 1040 } else if (text_direction_hint == WebKit::WebTextDirectionRightToLeft && |
1029 !base::i18n::IsRTL()) { | 1041 !base::i18n::IsRTL()) { |
1030 // Force the tooltip to have RTL directionality. | 1042 // Force the tooltip to have RTL directionality. |
1031 base::i18n::WrapStringWithRTLFormatting(&wrapped_tooltip_text); | 1043 base::i18n::WrapStringWithRTLFormatting(&wrapped_tooltip_text); |
1032 } | 1044 } |
1033 } | 1045 } |
1034 if (view()) | 1046 if (GetView()) |
1035 view_->SetTooltipText(wrapped_tooltip_text); | 1047 view_->SetTooltipText(wrapped_tooltip_text); |
1036 } | 1048 } |
1037 | 1049 |
1038 void RenderWidgetHostImpl::OnMsgRequestMove(const gfx::Rect& pos) { | 1050 void RenderWidgetHostImpl::OnMsgRequestMove(const gfx::Rect& pos) { |
1039 // Note that we ignore the position. | 1051 // Note that we ignore the position. |
1040 if (view_) { | 1052 if (view_) { |
1041 view_->SetBounds(pos); | 1053 view_->SetBounds(pos); |
1042 Send(new ViewMsg_Move_ACK(routing_id_)); | 1054 Send(new ViewMsg_Move_ACK(routing_id_)); |
1043 } | 1055 } |
1044 } | 1056 } |
1045 | 1057 |
1046 void RenderWidgetHostImpl::OnMsgPaintAtSizeAck(int tag, const gfx::Size& size) { | 1058 void RenderWidgetHostImpl::OnMsgPaintAtSizeAck(int tag, const gfx::Size& size) { |
1047 PaintAtSizeAckDetails details = {tag, size}; | 1059 PaintAtSizeAckDetails details = {tag, size}; |
1048 gfx::Size size_details = size; | 1060 gfx::Size size_details = size; |
1049 content::NotificationService::current()->Notify( | 1061 content::NotificationService::current()->Notify( |
1050 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_PAINT_AT_SIZE_ACK, | 1062 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_PAINT_AT_SIZE_ACK, |
1051 content::Source<RenderWidgetHostImpl>(this), | 1063 content::Source<RenderWidgetHost>(this), |
1052 content::Details<PaintAtSizeAckDetails>(&details)); | 1064 content::Details<PaintAtSizeAckDetails>(&details)); |
1053 } | 1065 } |
1054 | 1066 |
1055 void RenderWidgetHostImpl::OnMsgUpdateRect( | 1067 void RenderWidgetHostImpl::OnMsgUpdateRect( |
1056 const ViewHostMsg_UpdateRect_Params& params) { | 1068 const ViewHostMsg_UpdateRect_Params& params) { |
1057 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::OnMsgUpdateRect"); | 1069 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::OnMsgUpdateRect"); |
1058 TimeTicks paint_start = TimeTicks::Now(); | 1070 TimeTicks paint_start = TimeTicks::Now(); |
1059 | 1071 |
1060 // Update our knowledge of the RenderWidget's size. | 1072 // Update our knowledge of the RenderWidget's size. |
1061 current_size_ = params.view_size; | 1073 current_size_ = params.view_size; |
(...skipping 28 matching lines...) Expand all Loading... |
1090 params.bitmap_rect.width() * 4; | 1102 params.bitmap_rect.width() * 4; |
1091 TransportDIB* dib = process_->GetTransportDIB(params.bitmap); | 1103 TransportDIB* dib = process_->GetTransportDIB(params.bitmap); |
1092 | 1104 |
1093 // If gpu process does painting, scroll_rect and copy_rects are always empty | 1105 // If gpu process does painting, scroll_rect and copy_rects are always empty |
1094 // and backing store is never used. | 1106 // and backing store is never used. |
1095 if (dib) { | 1107 if (dib) { |
1096 if (dib->size() < size) { | 1108 if (dib->size() < size) { |
1097 DLOG(WARNING) << "Transport DIB too small for given rectangle"; | 1109 DLOG(WARNING) << "Transport DIB too small for given rectangle"; |
1098 content::RecordAction( | 1110 content::RecordAction( |
1099 UserMetricsAction("BadMessageTerminate_RWH1")); | 1111 UserMetricsAction("BadMessageTerminate_RWH1")); |
1100 process()->ReceivedBadMessage(); | 1112 GetProcess()->ReceivedBadMessage(); |
1101 } else { | 1113 } else { |
1102 UNSHIPPED_TRACE_EVENT_INSTANT2("test_latency", "UpdateRect", | 1114 UNSHIPPED_TRACE_EVENT_INSTANT2("test_latency", "UpdateRect", |
1103 "x+y", params.bitmap_rect.x() + params.bitmap_rect.y(), | 1115 "x+y", params.bitmap_rect.x() + params.bitmap_rect.y(), |
1104 "color", 0xffffff & *static_cast<uint32*>(dib->memory())); | 1116 "color", 0xffffff & *static_cast<uint32*>(dib->memory())); |
1105 UNSHIPPED_TRACE_EVENT_INSTANT1("test_latency", "UpdateRectWidth", | 1117 UNSHIPPED_TRACE_EVENT_INSTANT1("test_latency", "UpdateRectWidth", |
1106 "width", params.bitmap_rect.width()); | 1118 "width", params.bitmap_rect.width()); |
1107 | 1119 |
1108 // Scroll the backing store. | 1120 // Scroll the backing store. |
1109 if (!params.scroll_rect.IsEmpty()) { | 1121 if (!params.scroll_rect.IsEmpty()) { |
1110 ScrollBackingStoreRect(params.dx, params.dy, | 1122 ScrollBackingStoreRect(params.dx, params.dy, |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1176 // Now paint the view. Watch out: it might be destroyed already. | 1188 // Now paint the view. Watch out: it might be destroyed already. |
1177 if (view_ && !is_accelerated_compositing_active_) { | 1189 if (view_ && !is_accelerated_compositing_active_) { |
1178 view_being_painted_ = true; | 1190 view_being_painted_ = true; |
1179 view_->DidUpdateBackingStore(params.scroll_rect, params.dx, params.dy, | 1191 view_->DidUpdateBackingStore(params.scroll_rect, params.dx, params.dy, |
1180 params.copy_rects); | 1192 params.copy_rects); |
1181 view_being_painted_ = false; | 1193 view_being_painted_ = false; |
1182 } | 1194 } |
1183 | 1195 |
1184 content::NotificationService::current()->Notify( | 1196 content::NotificationService::current()->Notify( |
1185 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_PAINT, | 1197 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_PAINT, |
1186 content::Source<RenderWidgetHostImpl>(this), | 1198 content::Source<RenderWidgetHost>(this), |
1187 content::NotificationService::NoDetails()); | 1199 content::NotificationService::NoDetails()); |
1188 | 1200 |
1189 // If we got a resize ack, then perhaps we have another resize to send? | 1201 // If we got a resize ack, then perhaps we have another resize to send? |
1190 bool is_resize_ack = | 1202 bool is_resize_ack = |
1191 ViewHostMsg_UpdateRect_Flags::is_resize_ack(params.flags); | 1203 ViewHostMsg_UpdateRect_Flags::is_resize_ack(params.flags); |
1192 if (is_resize_ack && view_) { | 1204 if (is_resize_ack && view_) { |
1193 gfx::Rect view_bounds = view_->GetViewBounds(); | 1205 gfx::Rect view_bounds = view_->GetViewBounds(); |
1194 if (current_size_ != view_bounds.size()) | 1206 if (current_size_ != view_bounds.size()) |
1195 WasResized(); | 1207 WasResized(); |
1196 } | 1208 } |
1197 | 1209 |
1198 // Log the time delta for processing a paint message. | 1210 // Log the time delta for processing a paint message. |
1199 TimeTicks now = TimeTicks::Now(); | 1211 TimeTicks now = TimeTicks::Now(); |
1200 TimeDelta delta = now - update_start; | 1212 TimeDelta delta = now - update_start; |
1201 UMA_HISTOGRAM_TIMES("MPArch.RWH_DidUpdateBackingStore", delta); | 1213 UMA_HISTOGRAM_TIMES("MPArch.RWH_DidUpdateBackingStore", delta); |
1202 | 1214 |
1203 // Measures the time from receiving the MsgUpdateRect IPC to completing the | 1215 // Measures the time from receiving the MsgUpdateRect IPC to completing the |
1204 // DidUpdateBackingStore() method. On platforms which have asynchronous | 1216 // DidUpdateBackingStore() method. On platforms which have asynchronous |
1205 // painting, such as Linux, this is the sum of MPArch.RWH_OnMsgUpdateRect, | 1217 // painting, such as Linux, this is the sum of MPArch.RWH_OnMsgUpdateRect, |
1206 // MPArch.RWH_DidUpdateBackingStore, and the time spent asynchronously | 1218 // MPArch.RWH_DidUpdateBackingStore, and the time spent asynchronously |
1207 // waiting for the paint to complete. | 1219 // waiting for the paint to complete. |
1208 // | 1220 // |
1209 // On other platforms, this will be equivalent to MPArch.RWH_OnMsgUpdateRect. | 1221 // On other platforms, this will be equivalent to MPArch.RWH_OnMsgUpdateRect. |
1210 delta = now - paint_start; | 1222 delta = now - paint_start; |
1211 UMA_HISTOGRAM_TIMES("MPArch.RWH_TotalPaintTime", delta); | 1223 UMA_HISTOGRAM_TIMES("MPArch.RWH_TotalPaintTime", delta); |
1212 } | 1224 } |
1213 | 1225 |
1214 void RenderWidgetHostImpl::OnMsgInputEventAck(WebInputEvent::Type event_type, | 1226 void RenderWidgetHostImpl::OnMsgInputEventAck(WebInputEvent::Type event_type, |
1215 bool processed) { | 1227 bool processed) { |
1216 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::OnMsgInputEventAck"); | 1228 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::OnMsgInputEventAck"); |
1217 | 1229 |
1218 // Log the time delta for processing an input event. | 1230 // Log the time delta for processing an input event. |
1219 TimeDelta delta = TimeTicks::Now() - input_event_start_time_; | 1231 TimeDelta delta = TimeTicks::Now() - input_event_start_time_; |
1220 UMA_HISTOGRAM_TIMES("MPArch.RWH_InputEventDelta", delta); | 1232 UMA_HISTOGRAM_TIMES("MPArch.RWH_InputEventDelta", delta); |
1221 | 1233 |
1222 // Cancel pending hung renderer checks since the renderer is responsive. | 1234 // Cancel pending hung renderer checks since the renderer is responsive. |
1223 if (--in_flight_event_count_ == 0) | 1235 if (--in_flight_event_count_ == 0) |
1224 StopHangMonitorTimeout(); | 1236 StopHangMonitorTimeout(); |
1225 | 1237 |
1226 int type = static_cast<int>(event_type); | 1238 int type = static_cast<int>(event_type); |
1227 if (type < WebInputEvent::Undefined) { | 1239 if (type < WebInputEvent::Undefined) { |
1228 content::RecordAction(UserMetricsAction("BadMessageTerminate_RWH2")); | 1240 content::RecordAction(UserMetricsAction("BadMessageTerminate_RWH2")); |
1229 process()->ReceivedBadMessage(); | 1241 process_->ReceivedBadMessage(); |
1230 } else if (type == WebInputEvent::MouseMove) { | 1242 } else if (type == WebInputEvent::MouseMove) { |
1231 mouse_move_pending_ = false; | 1243 mouse_move_pending_ = false; |
1232 | 1244 |
1233 // now, we can send the next mouse move event | 1245 // now, we can send the next mouse move event |
1234 if (next_mouse_move_.get()) { | 1246 if (next_mouse_move_.get()) { |
1235 DCHECK(next_mouse_move_->type == WebInputEvent::MouseMove); | 1247 DCHECK(next_mouse_move_->type == WebInputEvent::MouseMove); |
1236 ForwardMouseEvent(*next_mouse_move_); | 1248 ForwardMouseEvent(*next_mouse_move_); |
1237 } | 1249 } |
1238 } else if (WebInputEvent::isKeyboardEventType(type)) { | 1250 } else if (WebInputEvent::isKeyboardEventType(type)) { |
1239 ProcessKeyboardEventAck(type, processed); | 1251 ProcessKeyboardEventAck(type, processed); |
1240 } else if (type == WebInputEvent::MouseWheel) { | 1252 } else if (type == WebInputEvent::MouseWheel) { |
1241 ProcessWheelAck(processed); | 1253 ProcessWheelAck(processed); |
1242 } else if (WebInputEvent::isTouchEventType(type)) { | 1254 } else if (WebInputEvent::isTouchEventType(type)) { |
1243 ProcessTouchAck(event_type, processed); | 1255 ProcessTouchAck(event_type, processed); |
1244 } | 1256 } |
1245 // This is used only for testing. | 1257 |
| 1258 // This is used only for testing, and the other end does not use the |
| 1259 // source object. On linux, specifying |
| 1260 // content::Source<RenderWidgetHost> results in a very strange |
| 1261 // runtime error in the epilogue of the enclosing |
| 1262 // (OnMsgInputEventAck) method, but not on other platforms; using |
| 1263 // 'void' instead is just as safe (since content::NotificationSource |
| 1264 // is not actually typesafe) and avoids this error. |
1246 content::NotificationService::current()->Notify( | 1265 content::NotificationService::current()->Notify( |
1247 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_INPUT_EVENT_ACK, | 1266 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_INPUT_EVENT_ACK, |
1248 content::Source<RenderWidgetHostImpl>(this), | 1267 content::Source<void>(this), |
1249 content::Details<int>(&type)); | 1268 content::Details<int>(&type)); |
1250 } | 1269 } |
1251 | 1270 |
1252 void RenderWidgetHostImpl::ProcessWheelAck(bool processed) { | 1271 void RenderWidgetHostImpl::ProcessWheelAck(bool processed) { |
1253 mouse_wheel_pending_ = false; | 1272 mouse_wheel_pending_ = false; |
1254 | 1273 |
1255 // Now send the next (coalesced) mouse wheel event. | 1274 // Now send the next (coalesced) mouse wheel event. |
1256 if (!coalesced_mouse_wheel_events_.empty()) { | 1275 if (!coalesced_mouse_wheel_events_.empty()) { |
1257 WebMouseWheelEvent next_wheel_event = | 1276 WebMouseWheelEvent next_wheel_event = |
1258 coalesced_mouse_wheel_events_.front(); | 1277 coalesced_mouse_wheel_events_.front(); |
1259 coalesced_mouse_wheel_events_.pop_front(); | 1278 coalesced_mouse_wheel_events_.pop_front(); |
1260 ForwardWheelEvent(next_wheel_event); | 1279 ForwardWheelEvent(next_wheel_event); |
1261 } | 1280 } |
1262 | 1281 |
1263 if (!processed && !is_hidden_ && view_) | 1282 if (!processed && !is_hidden_ && view_) |
1264 view_->UnhandledWheelEvent(current_wheel_event_); | 1283 view_->UnhandledWheelEvent(current_wheel_event_); |
1265 } | 1284 } |
1266 | 1285 |
1267 void RenderWidgetHostImpl::ProcessTouchAck( | 1286 void RenderWidgetHostImpl::ProcessTouchAck( |
1268 WebInputEvent::Type type, bool processed) { | 1287 WebInputEvent::Type type, bool processed) { |
1269 if (view_) | 1288 if (view_) |
1270 view_->ProcessTouchAck(type, processed); | 1289 view_->ProcessTouchAck(type, processed); |
1271 } | 1290 } |
1272 | 1291 |
1273 void RenderWidgetHostImpl::OnMsgFocus() { | 1292 void RenderWidgetHostImpl::OnMsgFocus() { |
1274 // Only RenderViewHost can deal with that message. | 1293 // Only RenderViewHost can deal with that message. |
1275 content::RecordAction(UserMetricsAction("BadMessageTerminate_RWH4")); | 1294 content::RecordAction(UserMetricsAction("BadMessageTerminate_RWH4")); |
1276 process()->ReceivedBadMessage(); | 1295 GetProcess()->ReceivedBadMessage(); |
1277 } | 1296 } |
1278 | 1297 |
1279 void RenderWidgetHostImpl::OnMsgBlur() { | 1298 void RenderWidgetHostImpl::OnMsgBlur() { |
1280 // Only RenderViewHost can deal with that message. | 1299 // Only RenderViewHost can deal with that message. |
1281 content::RecordAction(UserMetricsAction("BadMessageTerminate_RWH5")); | 1300 content::RecordAction(UserMetricsAction("BadMessageTerminate_RWH5")); |
1282 process()->ReceivedBadMessage(); | 1301 GetProcess()->ReceivedBadMessage(); |
1283 } | 1302 } |
1284 | 1303 |
1285 void RenderWidgetHostImpl::OnMsgDidChangeNumTouchEvents(int count) { | 1304 void RenderWidgetHostImpl::OnMsgDidChangeNumTouchEvents(int count) { |
1286 has_touch_handler_ = count > 0; | 1305 has_touch_handler_ = count > 0; |
1287 } | 1306 } |
1288 | 1307 |
1289 void RenderWidgetHostImpl::OnMsgSetCursor(const WebCursor& cursor) { | 1308 void RenderWidgetHostImpl::OnMsgSetCursor(const WebCursor& cursor) { |
1290 if (!view_) { | 1309 if (!view_) { |
1291 return; | 1310 return; |
1292 } | 1311 } |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1415 | 1434 |
1416 if (CommandLine::ForCurrentProcess()->HasSwitch( | 1435 if (CommandLine::ForCurrentProcess()->HasSwitch( |
1417 switches::kDisableRendererAccessibility)) { | 1436 switches::kDisableRendererAccessibility)) { |
1418 return; | 1437 return; |
1419 } | 1438 } |
1420 | 1439 |
1421 renderer_accessible_ = true; | 1440 renderer_accessible_ = true; |
1422 | 1441 |
1423 if (process_->HasConnection()) { | 1442 if (process_->HasConnection()) { |
1424 // Renderer accessibility wasn't enabled on process launch. Enable it now. | 1443 // Renderer accessibility wasn't enabled on process launch. Enable it now. |
1425 Send(new AccessibilityMsg_Enable(routing_id())); | 1444 Send(new AccessibilityMsg_Enable(GetRoutingID())); |
1426 } | 1445 } |
1427 } | 1446 } |
1428 | 1447 |
| 1448 void RenderWidgetHostImpl::SetIgnoreInputEvents(bool ignore_input_events) { |
| 1449 ignore_input_events_ = ignore_input_events; |
| 1450 } |
| 1451 |
1429 void RenderWidgetHostImpl::ProcessKeyboardEventAck(int type, bool processed) { | 1452 void RenderWidgetHostImpl::ProcessKeyboardEventAck(int type, bool processed) { |
1430 if (key_queue_.empty()) { | 1453 if (key_queue_.empty()) { |
1431 LOG(ERROR) << "Got a KeyEvent back from the renderer but we " | 1454 LOG(ERROR) << "Got a KeyEvent back from the renderer but we " |
1432 << "don't seem to have sent it to the renderer!"; | 1455 << "don't seem to have sent it to the renderer!"; |
1433 } else if (key_queue_.front().type != type) { | 1456 } else if (key_queue_.front().type != type) { |
1434 LOG(ERROR) << "We seem to have a different key type sent from " | 1457 LOG(ERROR) << "We seem to have a different key type sent from " |
1435 << "the renderer. (" << key_queue_.front().type << " vs. " | 1458 << "the renderer. (" << key_queue_.front().type << " vs. " |
1436 << type << "). Ignoring event."; | 1459 << type << "). Ignoring event."; |
1437 | 1460 |
1438 // Something must be wrong. Clear the |key_queue_| and | 1461 // Something must be wrong. Clear the |key_queue_| and |
(...skipping 30 matching lines...) Expand all Loading... |
1469 for (int i = 0; i < static_cast<int>(deferred_plugin_handles_.size()); i++) { | 1492 for (int i = 0; i < static_cast<int>(deferred_plugin_handles_.size()); i++) { |
1470 #if defined(TOOLKIT_USES_GTK) | 1493 #if defined(TOOLKIT_USES_GTK) |
1471 view_->CreatePluginContainer(deferred_plugin_handles_[i]); | 1494 view_->CreatePluginContainer(deferred_plugin_handles_[i]); |
1472 #endif | 1495 #endif |
1473 } | 1496 } |
1474 | 1497 |
1475 deferred_plugin_handles_.clear(); | 1498 deferred_plugin_handles_.clear(); |
1476 #endif | 1499 #endif |
1477 } | 1500 } |
1478 | 1501 |
| 1502 const gfx::Point& RenderWidgetHostImpl::GetLastScrollOffset() const { |
| 1503 return last_scroll_offset_; |
| 1504 } |
| 1505 |
1479 void RenderWidgetHostImpl::StartUserGesture() { | 1506 void RenderWidgetHostImpl::StartUserGesture() { |
1480 OnUserGesture(); | 1507 OnUserGesture(); |
1481 } | 1508 } |
1482 | 1509 |
1483 void RenderWidgetHostImpl::Stop() { | 1510 void RenderWidgetHostImpl::Stop() { |
1484 Send(new ViewMsg_Stop(routing_id())); | 1511 Send(new ViewMsg_Stop(GetRoutingID())); |
1485 } | 1512 } |
1486 | 1513 |
1487 void RenderWidgetHostImpl::SetBackground(const SkBitmap& background) { | 1514 void RenderWidgetHostImpl::SetBackground(const SkBitmap& background) { |
1488 Send(new ViewMsg_SetBackground(routing_id(), background)); | 1515 Send(new ViewMsg_SetBackground(GetRoutingID(), background)); |
1489 } | 1516 } |
1490 | 1517 |
1491 void RenderWidgetHostImpl::SetEditCommandsForNextKeyEvent( | 1518 void RenderWidgetHostImpl::SetEditCommandsForNextKeyEvent( |
1492 const std::vector<EditCommand>& commands) { | 1519 const std::vector<EditCommand>& commands) { |
1493 Send(new ViewMsg_SetEditCommandsForNextKeyEvent(routing_id(), commands)); | 1520 Send(new ViewMsg_SetEditCommandsForNextKeyEvent(GetRoutingID(), commands)); |
1494 } | 1521 } |
1495 | 1522 |
1496 void RenderWidgetHostImpl::AccessibilityDoDefaultAction(int object_id) { | 1523 void RenderWidgetHostImpl::AccessibilityDoDefaultAction(int object_id) { |
1497 Send(new AccessibilityMsg_DoDefaultAction(routing_id(), object_id)); | 1524 Send(new AccessibilityMsg_DoDefaultAction(GetRoutingID(), object_id)); |
1498 } | 1525 } |
1499 | 1526 |
1500 void RenderWidgetHostImpl::AccessibilitySetFocus(int object_id) { | 1527 void RenderWidgetHostImpl::AccessibilitySetFocus(int object_id) { |
1501 Send(new AccessibilityMsg_SetFocus(routing_id(), object_id)); | 1528 Send(new AccessibilityMsg_SetFocus(GetRoutingID(), object_id)); |
1502 } | 1529 } |
1503 | 1530 |
1504 void RenderWidgetHostImpl::AccessibilityScrollToMakeVisible( | 1531 void RenderWidgetHostImpl::AccessibilityScrollToMakeVisible( |
1505 int acc_obj_id, gfx::Rect subfocus) { | 1532 int acc_obj_id, gfx::Rect subfocus) { |
1506 Send(new AccessibilityMsg_ScrollToMakeVisible( | 1533 Send(new AccessibilityMsg_ScrollToMakeVisible( |
1507 routing_id(), acc_obj_id, subfocus)); | 1534 GetRoutingID(), acc_obj_id, subfocus)); |
1508 } | 1535 } |
1509 | 1536 |
1510 void RenderWidgetHostImpl::AccessibilityScrollToPoint( | 1537 void RenderWidgetHostImpl::AccessibilityScrollToPoint( |
1511 int acc_obj_id, gfx::Point point) { | 1538 int acc_obj_id, gfx::Point point) { |
1512 Send(new AccessibilityMsg_ScrollToPoint( | 1539 Send(new AccessibilityMsg_ScrollToPoint( |
1513 routing_id(), acc_obj_id, point)); | 1540 GetRoutingID(), acc_obj_id, point)); |
1514 } | 1541 } |
1515 | 1542 |
1516 void RenderWidgetHostImpl::AccessibilitySetTextSelection( | 1543 void RenderWidgetHostImpl::AccessibilitySetTextSelection( |
1517 int object_id, int start_offset, int end_offset) { | 1544 int object_id, int start_offset, int end_offset) { |
1518 Send(new AccessibilityMsg_SetTextSelection( | 1545 Send(new AccessibilityMsg_SetTextSelection( |
1519 routing_id(), object_id, start_offset, end_offset)); | 1546 GetRoutingID(), object_id, start_offset, end_offset)); |
1520 } | 1547 } |
1521 | 1548 |
1522 void RenderWidgetHostImpl::ExecuteEditCommand(const std::string& command, | 1549 void RenderWidgetHostImpl::ExecuteEditCommand(const std::string& command, |
1523 const std::string& value) { | 1550 const std::string& value) { |
1524 Send(new ViewMsg_ExecuteEditCommand(routing_id(), command, value)); | 1551 Send(new ViewMsg_ExecuteEditCommand(GetRoutingID(), command, value)); |
1525 } | 1552 } |
1526 | 1553 |
1527 void RenderWidgetHostImpl::ScrollFocusedEditableNodeIntoRect( | 1554 void RenderWidgetHostImpl::ScrollFocusedEditableNodeIntoRect( |
1528 const gfx::Rect& rect) { | 1555 const gfx::Rect& rect) { |
1529 Send(new ViewMsg_ScrollFocusedEditableNodeIntoRect(routing_id(), rect)); | 1556 Send(new ViewMsg_ScrollFocusedEditableNodeIntoRect(GetRoutingID(), rect)); |
1530 } | 1557 } |
1531 | 1558 |
1532 void RenderWidgetHostImpl::SelectRange(const gfx::Point& start, | 1559 void RenderWidgetHostImpl::SelectRange(const gfx::Point& start, |
1533 const gfx::Point& end) { | 1560 const gfx::Point& end) { |
1534 Send(new ViewMsg_SelectRange(routing_id(), start, end)); | 1561 Send(new ViewMsg_SelectRange(GetRoutingID(), start, end)); |
1535 } | 1562 } |
1536 | 1563 |
1537 void RenderWidgetHostImpl::Undo() { | 1564 void RenderWidgetHostImpl::Undo() { |
1538 Send(new ViewMsg_Undo(routing_id())); | 1565 Send(new ViewMsg_Undo(GetRoutingID())); |
1539 content::RecordAction(UserMetricsAction("Undo")); | 1566 content::RecordAction(UserMetricsAction("Undo")); |
1540 } | 1567 } |
1541 | 1568 |
1542 void RenderWidgetHostImpl::Redo() { | 1569 void RenderWidgetHostImpl::Redo() { |
1543 Send(new ViewMsg_Redo(routing_id())); | 1570 Send(new ViewMsg_Redo(GetRoutingID())); |
1544 content::RecordAction(UserMetricsAction("Redo")); | 1571 content::RecordAction(UserMetricsAction("Redo")); |
1545 } | 1572 } |
1546 | 1573 |
1547 void RenderWidgetHostImpl::Cut() { | 1574 void RenderWidgetHostImpl::Cut() { |
1548 Send(new ViewMsg_Cut(routing_id())); | 1575 Send(new ViewMsg_Cut(GetRoutingID())); |
1549 content::RecordAction(UserMetricsAction("Cut")); | 1576 content::RecordAction(UserMetricsAction("Cut")); |
1550 } | 1577 } |
1551 | 1578 |
1552 void RenderWidgetHostImpl::Copy() { | 1579 void RenderWidgetHostImpl::Copy() { |
1553 Send(new ViewMsg_Copy(routing_id())); | 1580 Send(new ViewMsg_Copy(GetRoutingID())); |
1554 content::RecordAction(UserMetricsAction("Copy")); | 1581 content::RecordAction(UserMetricsAction("Copy")); |
1555 } | 1582 } |
1556 | 1583 |
1557 void RenderWidgetHostImpl::CopyToFindPboard() { | 1584 void RenderWidgetHostImpl::CopyToFindPboard() { |
1558 #if defined(OS_MACOSX) | 1585 #if defined(OS_MACOSX) |
1559 // Windows/Linux don't have the concept of a find pasteboard. | 1586 // Windows/Linux don't have the concept of a find pasteboard. |
1560 Send(new ViewMsg_CopyToFindPboard(routing_id())); | 1587 Send(new ViewMsg_CopyToFindPboard(GetRoutingID())); |
1561 content::RecordAction(UserMetricsAction("CopyToFindPboard")); | 1588 content::RecordAction(UserMetricsAction("CopyToFindPboard")); |
1562 #endif | 1589 #endif |
1563 } | 1590 } |
1564 | 1591 |
1565 void RenderWidgetHostImpl::Paste() { | 1592 void RenderWidgetHostImpl::Paste() { |
1566 Send(new ViewMsg_Paste(routing_id())); | 1593 Send(new ViewMsg_Paste(GetRoutingID())); |
1567 content::RecordAction(UserMetricsAction("Paste")); | 1594 content::RecordAction(UserMetricsAction("Paste")); |
1568 } | 1595 } |
1569 | 1596 |
1570 void RenderWidgetHostImpl::PasteAndMatchStyle() { | 1597 void RenderWidgetHostImpl::PasteAndMatchStyle() { |
1571 Send(new ViewMsg_PasteAndMatchStyle(routing_id())); | 1598 Send(new ViewMsg_PasteAndMatchStyle(GetRoutingID())); |
1572 content::RecordAction(UserMetricsAction("PasteAndMatchStyle")); | 1599 content::RecordAction(UserMetricsAction("PasteAndMatchStyle")); |
1573 } | 1600 } |
1574 | 1601 |
1575 void RenderWidgetHostImpl::Delete() { | 1602 void RenderWidgetHostImpl::Delete() { |
1576 Send(new ViewMsg_Delete(routing_id())); | 1603 Send(new ViewMsg_Delete(GetRoutingID())); |
1577 content::RecordAction(UserMetricsAction("DeleteSelection")); | 1604 content::RecordAction(UserMetricsAction("DeleteSelection")); |
1578 } | 1605 } |
1579 | 1606 |
1580 void RenderWidgetHostImpl::SelectAll() { | 1607 void RenderWidgetHostImpl::SelectAll() { |
1581 Send(new ViewMsg_SelectAll(routing_id())); | 1608 Send(new ViewMsg_SelectAll(GetRoutingID())); |
1582 content::RecordAction(UserMetricsAction("SelectAll")); | 1609 content::RecordAction(UserMetricsAction("SelectAll")); |
1583 } | 1610 } |
1584 bool RenderWidgetHostImpl::GotResponseToLockMouseRequest(bool allowed) { | 1611 bool RenderWidgetHostImpl::GotResponseToLockMouseRequest(bool allowed) { |
1585 if (!allowed) { | 1612 if (!allowed) { |
1586 RejectMouseLockOrUnlockIfNecessary(); | 1613 RejectMouseLockOrUnlockIfNecessary(); |
1587 return false; | 1614 return false; |
1588 } else { | 1615 } else { |
1589 if (!pending_mouse_lock_request_) { | 1616 if (!pending_mouse_lock_request_) { |
1590 // This is possible, e.g., the plugin sends us an unlock request before | 1617 // This is possible, e.g., the plugin sends us an unlock request before |
1591 // the user allows to lock to mouse. | 1618 // the user allows to lock to mouse. |
(...skipping 19 matching lines...) Expand all Loading... |
1611 ui_shim->Send(new AcceleratedSurfaceMsg_BuffersSwappedACK(route_id)); | 1638 ui_shim->Send(new AcceleratedSurfaceMsg_BuffersSwappedACK(route_id)); |
1612 } | 1639 } |
1613 | 1640 |
1614 // static | 1641 // static |
1615 void RenderWidgetHostImpl::AcknowledgePostSubBuffer(int32 route_id, | 1642 void RenderWidgetHostImpl::AcknowledgePostSubBuffer(int32 route_id, |
1616 int gpu_host_id) { | 1643 int gpu_host_id) { |
1617 GpuProcessHostUIShim* ui_shim = GpuProcessHostUIShim::FromID(gpu_host_id); | 1644 GpuProcessHostUIShim* ui_shim = GpuProcessHostUIShim::FromID(gpu_host_id); |
1618 if (ui_shim) | 1645 if (ui_shim) |
1619 ui_shim->Send(new AcceleratedSurfaceMsg_PostSubBufferACK(route_id)); | 1646 ui_shim->Send(new AcceleratedSurfaceMsg_PostSubBufferACK(route_id)); |
1620 } | 1647 } |
OLD | NEW |