Chromium Code Reviews| 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_view_aura.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 798 } | 798 } |
| 799 #endif | 799 #endif |
| 800 } | 800 } |
| 801 | 801 |
| 802 void RenderWidgetHostViewAura::ParentHierarchyChanged() { | 802 void RenderWidgetHostViewAura::ParentHierarchyChanged() { |
| 803 ancestor_window_observer_.reset(new WindowAncestorObserver(this)); | 803 ancestor_window_observer_.reset(new WindowAncestorObserver(this)); |
| 804 // Snap when we receive a hierarchy changed. http://crbug.com/388908. | 804 // Snap when we receive a hierarchy changed. http://crbug.com/388908. |
| 805 HandleParentBoundsChanged(); | 805 HandleParentBoundsChanged(); |
| 806 } | 806 } |
| 807 | 807 |
| 808 void RenderWidgetHostViewAura::SetTouchPointStateStationary( | |
| 809 blink::WebTouchEvent* event, int touch_id) { | |
| 810 if (event->type == blink::WebInputEvent::TouchMove | |
| 811 || event->type == blink::WebInputEvent::TouchCancel) { | |
|
tdresser
2015/05/06 11:58:18
Why TouchMove and TouchCancel?
Can't this occur wi
jdduke (slow)
2015/05/06 15:23:45
I don't think we will ever generate multiple press
tdresser
2015/05/06 15:28:34
Right, thanks.
Do we generate multiple cancel poi
lanwei
2015/05/07 02:37:56
For touchstart and touchend, because motion_event
tdresser
2015/05/07 12:13:06
Acknowledged.
| |
| 812 size_t index = static_cast<int>(pointer_state_.GetIndexFromId(touch_id)); | |
|
tdresser
2015/05/06 11:58:18
I'm a bit uneasy about relying on the fact that we
jdduke (slow)
2015/05/06 15:23:45
+1
lanwei
2015/05/07 02:37:56
You are right, index is not safe, I am using touch
| |
| 813 for (size_t i = 0; i < event->touchesLength; ++i) { | |
| 814 if (i != index) | |
| 815 event->touches[i].state = blink::WebTouchPoint::StateStationary; | |
| 816 } | |
| 817 } | |
| 818 } | |
| 819 | |
| 808 void RenderWidgetHostViewAura::MovePluginWindows( | 820 void RenderWidgetHostViewAura::MovePluginWindows( |
| 809 const std::vector<WebPluginGeometry>& plugin_window_moves) { | 821 const std::vector<WebPluginGeometry>& plugin_window_moves) { |
| 810 #if defined(OS_WIN) | 822 #if defined(OS_WIN) |
| 811 // We need to clip the rectangle to the tab's viewport, otherwise we will draw | 823 // We need to clip the rectangle to the tab's viewport, otherwise we will draw |
| 812 // over the browser UI. | 824 // over the browser UI. |
| 813 if (!window_->GetRootWindow()) { | 825 if (!window_->GetRootWindow()) { |
| 814 DCHECK(plugin_window_moves.empty()); | 826 DCHECK(plugin_window_moves.empty()); |
| 815 return; | 827 return; |
| 816 } | 828 } |
| 817 HWND parent = window_->GetHost()->GetAcceleratedWidget(); | 829 HWND parent = window_->GetHost()->GetAcceleratedWidget(); |
| (...skipping 1359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2177 | 2189 |
| 2178 blink::WebTouchEvent touch_event = ui::CreateWebTouchEventFromMotionEvent( | 2190 blink::WebTouchEvent touch_event = ui::CreateWebTouchEventFromMotionEvent( |
| 2179 pointer_state_, event->may_cause_scrolling()); | 2191 pointer_state_, event->may_cause_scrolling()); |
| 2180 pointer_state_.CleanupRemovedTouchPoints(*event); | 2192 pointer_state_.CleanupRemovedTouchPoints(*event); |
| 2181 | 2193 |
| 2182 // It is important to always mark events as being handled asynchronously when | 2194 // It is important to always mark events as being handled asynchronously when |
| 2183 // they are forwarded. This ensures that the current event does not get | 2195 // they are forwarded. This ensures that the current event does not get |
| 2184 // processed by the gesture recognizer before events currently awaiting | 2196 // processed by the gesture recognizer before events currently awaiting |
| 2185 // dispatch in the touch queue. | 2197 // dispatch in the touch queue. |
| 2186 event->DisableSynchronousHandling(); | 2198 event->DisableSynchronousHandling(); |
| 2199 | |
| 2200 // Set unchange touch point to StateStationary for touchmove and | |
| 2201 // touchcancel to make sure only send one ack per WebTouchEvent. | |
| 2202 SetTouchPointStateStationary(&touch_event, event->touch_id()); | |
| 2187 host_->ForwardTouchEventWithLatencyInfo(touch_event, *event->latency()); | 2203 host_->ForwardTouchEventWithLatencyInfo(touch_event, *event->latency()); |
| 2188 } | 2204 } |
| 2189 | 2205 |
| 2190 void RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent* event) { | 2206 void RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent* event) { |
| 2191 TRACE_EVENT0("input", "RenderWidgetHostViewAura::OnGestureEvent"); | 2207 TRACE_EVENT0("input", "RenderWidgetHostViewAura::OnGestureEvent"); |
| 2192 if ((event->type() == ui::ET_GESTURE_PINCH_BEGIN || | 2208 if ((event->type() == ui::ET_GESTURE_PINCH_BEGIN || |
| 2193 event->type() == ui::ET_GESTURE_PINCH_UPDATE || | 2209 event->type() == ui::ET_GESTURE_PINCH_UPDATE || |
| 2194 event->type() == ui::ET_GESTURE_PINCH_END) && !pinch_zoom_enabled_) { | 2210 event->type() == ui::ET_GESTURE_PINCH_END) && !pinch_zoom_enabled_) { |
| 2195 event->SetHandled(); | 2211 event->SetHandled(); |
| 2196 return; | 2212 return; |
| (...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2764 | 2780 |
| 2765 //////////////////////////////////////////////////////////////////////////////// | 2781 //////////////////////////////////////////////////////////////////////////////// |
| 2766 // RenderWidgetHostViewBase, public: | 2782 // RenderWidgetHostViewBase, public: |
| 2767 | 2783 |
| 2768 // static | 2784 // static |
| 2769 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { | 2785 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { |
| 2770 GetScreenInfoForWindow(results, NULL); | 2786 GetScreenInfoForWindow(results, NULL); |
| 2771 } | 2787 } |
| 2772 | 2788 |
| 2773 } // namespace content | 2789 } // namespace content |
| OLD | NEW |