OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 // TODO(darin): what about constrained windows? it doesn't look like they | 242 // TODO(darin): what about constrained windows? it doesn't look like they |
243 // see a message when their parent is hidden. maybe there is something more | 243 // see a message when their parent is hidden. maybe there is something more |
244 // generic we can do at the TabContents API level instead of relying on | 244 // generic we can do at the TabContents API level instead of relying on |
245 // Windows messages. | 245 // Windows messages. |
246 | 246 |
247 // Tell the RenderProcessHost we were hidden. | 247 // Tell the RenderProcessHost we were hidden. |
248 process_->WidgetHidden(); | 248 process_->WidgetHidden(); |
249 | 249 |
250 bool is_visible = false; | 250 bool is_visible = false; |
251 NotificationService::current()->Notify( | 251 NotificationService::current()->Notify( |
252 NotificationType::RENDER_WIDGET_VISIBILITY_CHANGED, | 252 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, |
253 Source<RenderWidgetHost>(this), | 253 Source<RenderWidgetHost>(this), |
254 Details<bool>(&is_visible)); | 254 Details<bool>(&is_visible)); |
255 } | 255 } |
256 | 256 |
257 void RenderWidgetHost::WasRestored() { | 257 void RenderWidgetHost::WasRestored() { |
258 // When we create the widget, it is created as *not* hidden. | 258 // When we create the widget, it is created as *not* hidden. |
259 if (!is_hidden_) | 259 if (!is_hidden_) |
260 return; | 260 return; |
261 is_hidden_ = false; | 261 is_hidden_ = false; |
262 | 262 |
(...skipping 14 matching lines...) Expand all Loading... |
277 | 277 |
278 GpuProcessHost::SendOnIO( | 278 GpuProcessHost::SendOnIO( |
279 0, | 279 0, |
280 content::CAUSE_FOR_GPU_LAUNCH_NO_LAUNCH, | 280 content::CAUSE_FOR_GPU_LAUNCH_NO_LAUNCH, |
281 new GpuMsg_VisibilityChanged(routing_id_, process()->id(), true)); | 281 new GpuMsg_VisibilityChanged(routing_id_, process()->id(), true)); |
282 | 282 |
283 process_->WidgetRestored(); | 283 process_->WidgetRestored(); |
284 | 284 |
285 bool is_visible = true; | 285 bool is_visible = true; |
286 NotificationService::current()->Notify( | 286 NotificationService::current()->Notify( |
287 NotificationType::RENDER_WIDGET_VISIBILITY_CHANGED, | 287 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, |
288 Source<RenderWidgetHost>(this), | 288 Source<RenderWidgetHost>(this), |
289 Details<bool>(&is_visible)); | 289 Details<bool>(&is_visible)); |
290 | 290 |
291 // It's possible for our size to be out of sync with the renderer. The | 291 // It's possible for our size to be out of sync with the renderer. The |
292 // following is one case that leads to this: | 292 // following is one case that leads to this: |
293 // 1. WasResized -> Send ViewMsg_Resize to render | 293 // 1. WasResized -> Send ViewMsg_Resize to render |
294 // 2. WasResized -> do nothing as resize_ack_pending_ is true | 294 // 2. WasResized -> do nothing as resize_ack_pending_ is true |
295 // 3. WasHidden | 295 // 3. WasHidden |
296 // 4. OnMsgUpdateRect from (1) processed. Does NOT invoke WasResized as view | 296 // 4. OnMsgUpdateRect from (1) processed. Does NOT invoke WasResized as view |
297 // is hidden. Now renderer/browser out of sync with what they think size | 297 // is hidden. Now renderer/browser out of sync with what they think size |
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 Send(new ViewMsg_ImeConfirmComposition(routing_id(), string16())); | 750 Send(new ViewMsg_ImeConfirmComposition(routing_id(), string16())); |
751 } | 751 } |
752 | 752 |
753 void RenderWidgetHost::ImeCancelComposition() { | 753 void RenderWidgetHost::ImeCancelComposition() { |
754 Send(new ViewMsg_ImeSetComposition(routing_id(), string16(), | 754 Send(new ViewMsg_ImeSetComposition(routing_id(), string16(), |
755 std::vector<WebKit::WebCompositionUnderline>(), 0, 0)); | 755 std::vector<WebKit::WebCompositionUnderline>(), 0, 0)); |
756 } | 756 } |
757 | 757 |
758 void RenderWidgetHost::Destroy() { | 758 void RenderWidgetHost::Destroy() { |
759 NotificationService::current()->Notify( | 759 NotificationService::current()->Notify( |
760 NotificationType::RENDER_WIDGET_HOST_DESTROYED, | 760 content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, |
761 Source<RenderWidgetHost>(this), | 761 Source<RenderWidgetHost>(this), |
762 NotificationService::NoDetails()); | 762 NotificationService::NoDetails()); |
763 | 763 |
764 // Tell the view to die. | 764 // Tell the view to die. |
765 // Note that in the process of the view shutting down, it can call a ton | 765 // Note that in the process of the view shutting down, it can call a ton |
766 // of other messages on us. So if you do any other deinitialization here, | 766 // of other messages on us. So if you do any other deinitialization here, |
767 // do it after this call to view_->Destroy(). | 767 // do it after this call to view_->Destroy(). |
768 if (view_) | 768 if (view_) |
769 view_->Destroy(); | 769 view_->Destroy(); |
770 | 770 |
771 delete this; | 771 delete this; |
772 } | 772 } |
773 | 773 |
774 void RenderWidgetHost::CheckRendererIsUnresponsive() { | 774 void RenderWidgetHost::CheckRendererIsUnresponsive() { |
775 // If we received a call to StopHangMonitorTimeout. | 775 // If we received a call to StopHangMonitorTimeout. |
776 if (time_when_considered_hung_.is_null()) | 776 if (time_when_considered_hung_.is_null()) |
777 return; | 777 return; |
778 | 778 |
779 // If we have not waited long enough, then wait some more. | 779 // If we have not waited long enough, then wait some more. |
780 Time now = Time::Now(); | 780 Time now = Time::Now(); |
781 if (now < time_when_considered_hung_) { | 781 if (now < time_when_considered_hung_) { |
782 StartHangMonitorTimeout(time_when_considered_hung_ - now); | 782 StartHangMonitorTimeout(time_when_considered_hung_ - now); |
783 return; | 783 return; |
784 } | 784 } |
785 | 785 |
786 // OK, looks like we have a hung renderer! | 786 // OK, looks like we have a hung renderer! |
787 NotificationService::current()->Notify( | 787 NotificationService::current()->Notify( |
788 NotificationType::RENDERER_PROCESS_HANG, | 788 content::NOTIFICATION_RENDERER_PROCESS_HANG, |
789 Source<RenderWidgetHost>(this), | 789 Source<RenderWidgetHost>(this), |
790 NotificationService::NoDetails()); | 790 NotificationService::NoDetails()); |
791 is_unresponsive_ = true; | 791 is_unresponsive_ = true; |
792 NotifyRendererUnresponsive(); | 792 NotifyRendererUnresponsive(); |
793 } | 793 } |
794 | 794 |
795 void RenderWidgetHost::RendererIsResponsive() { | 795 void RenderWidgetHost::RendererIsResponsive() { |
796 if (is_unresponsive_) { | 796 if (is_unresponsive_) { |
797 is_unresponsive_ = false; | 797 is_unresponsive_ = false; |
798 NotifyRendererResponsive(); | 798 NotifyRendererResponsive(); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
851 if (view_) { | 851 if (view_) { |
852 view_->SetBounds(pos); | 852 view_->SetBounds(pos); |
853 Send(new ViewMsg_Move_ACK(routing_id_)); | 853 Send(new ViewMsg_Move_ACK(routing_id_)); |
854 } | 854 } |
855 } | 855 } |
856 | 856 |
857 void RenderWidgetHost::OnMsgPaintAtSizeAck(int tag, const gfx::Size& size) { | 857 void RenderWidgetHost::OnMsgPaintAtSizeAck(int tag, const gfx::Size& size) { |
858 PaintAtSizeAckDetails details = {tag, size}; | 858 PaintAtSizeAckDetails details = {tag, size}; |
859 gfx::Size size_details = size; | 859 gfx::Size size_details = size; |
860 NotificationService::current()->Notify( | 860 NotificationService::current()->Notify( |
861 NotificationType::RENDER_WIDGET_HOST_DID_RECEIVE_PAINT_AT_SIZE_ACK, | 861 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_PAINT_AT_SIZE_ACK, |
862 Source<RenderWidgetHost>(this), | 862 Source<RenderWidgetHost>(this), |
863 Details<PaintAtSizeAckDetails>(&details)); | 863 Details<PaintAtSizeAckDetails>(&details)); |
864 } | 864 } |
865 | 865 |
866 void RenderWidgetHost::OnMsgUpdateRect( | 866 void RenderWidgetHost::OnMsgUpdateRect( |
867 const ViewHostMsg_UpdateRect_Params& params) { | 867 const ViewHostMsg_UpdateRect_Params& params) { |
868 TRACE_EVENT0("renderer_host", "RenderWidgetHost::OnMsgUpdateRect"); | 868 TRACE_EVENT0("renderer_host", "RenderWidgetHost::OnMsgUpdateRect"); |
869 TimeTicks paint_start = TimeTicks::Now(); | 869 TimeTicks paint_start = TimeTicks::Now(); |
870 | 870 |
871 NotificationService::current()->Notify( | 871 NotificationService::current()->Notify( |
872 NotificationType::RENDER_WIDGET_HOST_WILL_PAINT, | 872 content::NOTIFICATION_RENDER_WIDGET_HOST_WILL_PAINT, |
873 Source<RenderWidgetHost>(this), | 873 Source<RenderWidgetHost>(this), |
874 NotificationService::NoDetails()); | 874 NotificationService::NoDetails()); |
875 | 875 |
876 // Update our knowledge of the RenderWidget's size. | 876 // Update our knowledge of the RenderWidget's size. |
877 current_size_ = params.view_size; | 877 current_size_ = params.view_size; |
878 // Update our knowledge of the RenderWidget's scroll offset. | 878 // Update our knowledge of the RenderWidget's scroll offset. |
879 last_scroll_offset_ = params.scroll_offset; | 879 last_scroll_offset_ = params.scroll_offset; |
880 | 880 |
881 bool is_resize_ack = | 881 bool is_resize_ack = |
882 ViewHostMsg_UpdateRect_Flags::is_resize_ack(params.flags); | 882 ViewHostMsg_UpdateRect_Flags::is_resize_ack(params.flags); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
959 // destroyed. | 959 // destroyed. |
960 if (view_ && !is_accelerated_compositing_active_) { | 960 if (view_ && !is_accelerated_compositing_active_) { |
961 view_being_painted_ = true; | 961 view_being_painted_ = true; |
962 view_->DidUpdateBackingStore(params.scroll_rect, params.dx, params.dy, | 962 view_->DidUpdateBackingStore(params.scroll_rect, params.dx, params.dy, |
963 params.copy_rects); | 963 params.copy_rects); |
964 view_being_painted_ = false; | 964 view_being_painted_ = false; |
965 } | 965 } |
966 } | 966 } |
967 | 967 |
968 NotificationService::current()->Notify( | 968 NotificationService::current()->Notify( |
969 NotificationType::RENDER_WIDGET_HOST_DID_PAINT, | 969 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_PAINT, |
970 Source<RenderWidgetHost>(this), | 970 Source<RenderWidgetHost>(this), |
971 NotificationService::NoDetails()); | 971 NotificationService::NoDetails()); |
972 | 972 |
973 // If we got a resize ack, then perhaps we have another resize to send? | 973 // If we got a resize ack, then perhaps we have another resize to send? |
974 if (is_resize_ack && view_) { | 974 if (is_resize_ack && view_) { |
975 // WasResized checks the current size and sends the resize update only | 975 // WasResized checks the current size and sends the resize update only |
976 // when something was actually changed. | 976 // when something was actually changed. |
977 WasResized(); | 977 WasResized(); |
978 } | 978 } |
979 | 979 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1017 ProcessKeyboardEventAck(type, processed); | 1017 ProcessKeyboardEventAck(type, processed); |
1018 } else if (type == WebInputEvent::TouchMove) { | 1018 } else if (type == WebInputEvent::TouchMove) { |
1019 touch_move_pending_ = false; | 1019 touch_move_pending_ = false; |
1020 if (touch_event_is_queued_) { | 1020 if (touch_event_is_queued_) { |
1021 touch_event_is_queued_ = false; | 1021 touch_event_is_queued_ = false; |
1022 ForwardTouchEvent(queued_touch_event_); | 1022 ForwardTouchEvent(queued_touch_event_); |
1023 } | 1023 } |
1024 } | 1024 } |
1025 // This is used only for testing. | 1025 // This is used only for testing. |
1026 NotificationService::current()->Notify( | 1026 NotificationService::current()->Notify( |
1027 NotificationType::RENDER_WIDGET_HOST_DID_RECEIVE_INPUT_EVENT_ACK, | 1027 content::NOTIFICATION_RENDER_WIDGET_HOST_DID_RECEIVE_INPUT_EVENT_ACK, |
1028 Source<RenderWidgetHost>(this), | 1028 Source<RenderWidgetHost>(this), |
1029 Details<int>(&type)); | 1029 Details<int>(&type)); |
1030 } | 1030 } |
1031 | 1031 |
1032 void RenderWidgetHost::ProcessWheelAck() { | 1032 void RenderWidgetHost::ProcessWheelAck() { |
1033 mouse_wheel_pending_ = false; | 1033 mouse_wheel_pending_ = false; |
1034 | 1034 |
1035 // Now send the next (coalesced) mouse wheel event. | 1035 // Now send the next (coalesced) mouse wheel event. |
1036 if (!coalesced_mouse_wheel_events_.empty()) { | 1036 if (!coalesced_mouse_wheel_events_.empty()) { |
1037 WebMouseWheelEvent next_wheel_event = | 1037 WebMouseWheelEvent next_wheel_event = |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1207 view_->CreatePluginContainer(deferred_plugin_handles_[i]); | 1207 view_->CreatePluginContainer(deferred_plugin_handles_[i]); |
1208 #endif | 1208 #endif |
1209 } | 1209 } |
1210 | 1210 |
1211 deferred_plugin_handles_.clear(); | 1211 deferred_plugin_handles_.clear(); |
1212 } | 1212 } |
1213 | 1213 |
1214 void RenderWidgetHost::StartUserGesture() { | 1214 void RenderWidgetHost::StartUserGesture() { |
1215 OnUserGesture(); | 1215 OnUserGesture(); |
1216 } | 1216 } |
OLD | NEW |