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_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 <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 surface_id_(0), | 123 surface_id_(0), |
124 is_loading_(false), | 124 is_loading_(false), |
125 is_hidden_(false), | 125 is_hidden_(false), |
126 is_fullscreen_(false), | 126 is_fullscreen_(false), |
127 is_accelerated_compositing_active_(false), | 127 is_accelerated_compositing_active_(false), |
128 repaint_ack_pending_(false), | 128 repaint_ack_pending_(false), |
129 resize_ack_pending_(false), | 129 resize_ack_pending_(false), |
130 should_auto_resize_(false), | 130 should_auto_resize_(false), |
131 mouse_move_pending_(false), | 131 mouse_move_pending_(false), |
132 mouse_wheel_pending_(false), | 132 mouse_wheel_pending_(false), |
| 133 select_range_pending_(false), |
133 needs_repainting_on_restore_(false), | 134 needs_repainting_on_restore_(false), |
134 is_unresponsive_(false), | 135 is_unresponsive_(false), |
135 in_flight_event_count_(0), | 136 in_flight_event_count_(0), |
136 in_get_backing_store_(false), | 137 in_get_backing_store_(false), |
137 abort_get_backing_store_(false), | 138 abort_get_backing_store_(false), |
138 view_being_painted_(false), | 139 view_being_painted_(false), |
139 ignore_input_events_(false), | 140 ignore_input_events_(false), |
140 text_direction_updated_(false), | 141 text_direction_updated_(false), |
141 text_direction_(WebKit::WebTextDirectionLeftToRight), | 142 text_direction_(WebKit::WebTextDirectionLeftToRight), |
142 text_direction_canceled_(false), | 143 text_direction_canceled_(false), |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 IPC_MESSAGE_HANDLER(ViewHostMsg_Close, OnMsgClose) | 279 IPC_MESSAGE_HANDLER(ViewHostMsg_Close, OnMsgClose) |
279 IPC_MESSAGE_HANDLER(ViewHostMsg_RequestMove, OnMsgRequestMove) | 280 IPC_MESSAGE_HANDLER(ViewHostMsg_RequestMove, OnMsgRequestMove) |
280 IPC_MESSAGE_HANDLER(ViewHostMsg_SetTooltipText, OnMsgSetTooltipText) | 281 IPC_MESSAGE_HANDLER(ViewHostMsg_SetTooltipText, OnMsgSetTooltipText) |
281 IPC_MESSAGE_HANDLER(ViewHostMsg_PaintAtSize_ACK, OnMsgPaintAtSizeAck) | 282 IPC_MESSAGE_HANDLER(ViewHostMsg_PaintAtSize_ACK, OnMsgPaintAtSizeAck) |
282 IPC_MESSAGE_HANDLER(ViewHostMsg_CompositorSurfaceBuffersSwapped, | 283 IPC_MESSAGE_HANDLER(ViewHostMsg_CompositorSurfaceBuffersSwapped, |
283 OnCompositorSurfaceBuffersSwapped) | 284 OnCompositorSurfaceBuffersSwapped) |
284 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnMsgUpdateRect) | 285 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnMsgUpdateRect) |
285 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateIsDelayed, OnMsgUpdateIsDelayed) | 286 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateIsDelayed, OnMsgUpdateIsDelayed) |
286 IPC_MESSAGE_HANDLER(ViewHostMsg_HandleInputEvent_ACK, OnMsgInputEventAck) | 287 IPC_MESSAGE_HANDLER(ViewHostMsg_HandleInputEvent_ACK, OnMsgInputEventAck) |
287 IPC_MESSAGE_HANDLER(ViewHostMsg_BeginSmoothScroll, OnMsgBeginSmoothScroll) | 288 IPC_MESSAGE_HANDLER(ViewHostMsg_BeginSmoothScroll, OnMsgBeginSmoothScroll) |
| 289 IPC_MESSAGE_HANDLER(ViewHostMsg_SelectRange_ACK, OnMsgSelectRangeAck) |
288 IPC_MESSAGE_HANDLER(ViewHostMsg_Focus, OnMsgFocus) | 290 IPC_MESSAGE_HANDLER(ViewHostMsg_Focus, OnMsgFocus) |
289 IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnMsgBlur) | 291 IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnMsgBlur) |
290 IPC_MESSAGE_HANDLER(ViewHostMsg_HasTouchEventHandlers, | 292 IPC_MESSAGE_HANDLER(ViewHostMsg_HasTouchEventHandlers, |
291 OnMsgHasTouchEventHandlers) | 293 OnMsgHasTouchEventHandlers) |
292 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnMsgSetCursor) | 294 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnMsgSetCursor) |
293 IPC_MESSAGE_HANDLER(ViewHostMsg_TextInputStateChanged, | 295 IPC_MESSAGE_HANDLER(ViewHostMsg_TextInputStateChanged, |
294 OnMsgTextInputStateChanged) | 296 OnMsgTextInputStateChanged) |
295 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeCompositionRangeChanged, | 297 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeCompositionRangeChanged, |
296 OnMsgImeCompositionRangeChanged) | 298 OnMsgImeCompositionRangeChanged) |
297 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeCancelComposition, | 299 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeCancelComposition, |
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1076 // from a crashed renderer. | 1078 // from a crashed renderer. |
1077 renderer_initialized_ = false; | 1079 renderer_initialized_ = false; |
1078 | 1080 |
1079 // Must reset these to ensure that mouse move/wheel events work with a new | 1081 // Must reset these to ensure that mouse move/wheel events work with a new |
1080 // renderer. | 1082 // renderer. |
1081 mouse_move_pending_ = false; | 1083 mouse_move_pending_ = false; |
1082 next_mouse_move_.reset(); | 1084 next_mouse_move_.reset(); |
1083 mouse_wheel_pending_ = false; | 1085 mouse_wheel_pending_ = false; |
1084 coalesced_mouse_wheel_events_.clear(); | 1086 coalesced_mouse_wheel_events_.clear(); |
1085 | 1087 |
| 1088 // Must reset these to ensure that SelectRange works with a new renderer. |
| 1089 select_range_pending_ = false; |
| 1090 next_selection_range_.reset(); |
| 1091 |
1086 // Must reset these to ensure that gesture events work with a new renderer. | 1092 // Must reset these to ensure that gesture events work with a new renderer. |
1087 gesture_event_filter_->Reset(); | 1093 gesture_event_filter_->Reset(); |
1088 | 1094 |
1089 // Must reset these to ensure that keyboard events work with a new renderer. | 1095 // Must reset these to ensure that keyboard events work with a new renderer. |
1090 key_queue_.clear(); | 1096 key_queue_.clear(); |
1091 suppress_next_char_events_ = false; | 1097 suppress_next_char_events_ = false; |
1092 | 1098 |
1093 // Reset some fields in preparation for recovering from a crash. | 1099 // Reset some fields in preparation for recovering from a crash. |
1094 resize_ack_pending_ = false; | 1100 resize_ack_pending_ = false; |
1095 repaint_ack_pending_ = false; | 1101 repaint_ack_pending_ = false; |
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1579 base::TimeDelta::FromMilliseconds(kSyntheticScrollMessageIntervalMs)); | 1585 base::TimeDelta::FromMilliseconds(kSyntheticScrollMessageIntervalMs)); |
1580 | 1586 |
1581 | 1587 |
1582 bool active = active_smooth_scroll_gesture_->ForwardInputEvents(now, this); | 1588 bool active = active_smooth_scroll_gesture_->ForwardInputEvents(now, this); |
1583 if (!active) { | 1589 if (!active) { |
1584 active_smooth_scroll_gesture_.reset(); | 1590 active_smooth_scroll_gesture_.reset(); |
1585 // TODO(nduca): send "smooth scroll done" event to RenderWidget. | 1591 // TODO(nduca): send "smooth scroll done" event to RenderWidget. |
1586 } | 1592 } |
1587 } | 1593 } |
1588 | 1594 |
| 1595 void RenderWidgetHostImpl::OnMsgSelectRangeAck() { |
| 1596 select_range_pending_ = false; |
| 1597 if (next_selection_range_.get()) { |
| 1598 scoped_ptr<SelectionRange> next(next_selection_range_.Pass()); |
| 1599 SelectRange(next->start, next->end); |
| 1600 } |
| 1601 } |
| 1602 |
1589 void RenderWidgetHostImpl::ProcessWheelAck(bool processed) { | 1603 void RenderWidgetHostImpl::ProcessWheelAck(bool processed) { |
1590 mouse_wheel_pending_ = false; | 1604 mouse_wheel_pending_ = false; |
1591 | 1605 |
1592 // Now send the next (coalesced) mouse wheel event. | 1606 // Now send the next (coalesced) mouse wheel event. |
1593 if (!coalesced_mouse_wheel_events_.empty()) { | 1607 if (!coalesced_mouse_wheel_events_.empty()) { |
1594 WebMouseWheelEvent next_wheel_event = | 1608 WebMouseWheelEvent next_wheel_event = |
1595 coalesced_mouse_wheel_events_.front(); | 1609 coalesced_mouse_wheel_events_.front(); |
1596 coalesced_mouse_wheel_events_.pop_front(); | 1610 coalesced_mouse_wheel_events_.pop_front(); |
1597 ForwardWheelEvent(next_wheel_event); | 1611 ForwardWheelEvent(next_wheel_event); |
1598 } | 1612 } |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1871 Send(new ViewMsg_ExecuteEditCommand(GetRoutingID(), command, value)); | 1885 Send(new ViewMsg_ExecuteEditCommand(GetRoutingID(), command, value)); |
1872 } | 1886 } |
1873 | 1887 |
1874 void RenderWidgetHostImpl::ScrollFocusedEditableNodeIntoRect( | 1888 void RenderWidgetHostImpl::ScrollFocusedEditableNodeIntoRect( |
1875 const gfx::Rect& rect) { | 1889 const gfx::Rect& rect) { |
1876 Send(new ViewMsg_ScrollFocusedEditableNodeIntoRect(GetRoutingID(), rect)); | 1890 Send(new ViewMsg_ScrollFocusedEditableNodeIntoRect(GetRoutingID(), rect)); |
1877 } | 1891 } |
1878 | 1892 |
1879 void RenderWidgetHostImpl::SelectRange(const gfx::Point& start, | 1893 void RenderWidgetHostImpl::SelectRange(const gfx::Point& start, |
1880 const gfx::Point& end) { | 1894 const gfx::Point& end) { |
| 1895 if (select_range_pending_) { |
| 1896 if (!next_selection_range_.get()) { |
| 1897 next_selection_range_.reset(new SelectionRange()); |
| 1898 } |
| 1899 next_selection_range_->start = start; |
| 1900 next_selection_range_->end = end; |
| 1901 return; |
| 1902 } |
| 1903 |
| 1904 select_range_pending_ = true; |
1881 Send(new ViewMsg_SelectRange(GetRoutingID(), start, end)); | 1905 Send(new ViewMsg_SelectRange(GetRoutingID(), start, end)); |
1882 } | 1906 } |
1883 | 1907 |
1884 void RenderWidgetHostImpl::Undo() { | 1908 void RenderWidgetHostImpl::Undo() { |
1885 Send(new ViewMsg_Undo(GetRoutingID())); | 1909 Send(new ViewMsg_Undo(GetRoutingID())); |
1886 RecordAction(UserMetricsAction("Undo")); | 1910 RecordAction(UserMetricsAction("Undo")); |
1887 } | 1911 } |
1888 | 1912 |
1889 void RenderWidgetHostImpl::Redo() { | 1913 void RenderWidgetHostImpl::Redo() { |
1890 Send(new ViewMsg_Redo(GetRoutingID())); | 1914 Send(new ViewMsg_Redo(GetRoutingID())); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1985 // indicate that no callback is in progress (i.e. without this line | 2009 // indicate that no callback is in progress (i.e. without this line |
1986 // DelayedAutoResized will not get called again). | 2010 // DelayedAutoResized will not get called again). |
1987 new_auto_size_.SetSize(0, 0); | 2011 new_auto_size_.SetSize(0, 0); |
1988 if (!should_auto_resize_) | 2012 if (!should_auto_resize_) |
1989 return; | 2013 return; |
1990 | 2014 |
1991 OnRenderAutoResized(new_size); | 2015 OnRenderAutoResized(new_size); |
1992 } | 2016 } |
1993 | 2017 |
1994 } // namespace content | 2018 } // namespace content |
OLD | NEW |