OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef ScrollState_h | 5 #ifndef ScrollState_h |
6 #define ScrollState_h | 6 #define ScrollState_h |
7 | 7 |
8 #include "bindings/core/v8/ExceptionState.h" | 8 #include "bindings/core/v8/ExceptionState.h" |
9 #include "bindings/core/v8/ScriptWrappable.h" | 9 #include "bindings/core/v8/ScriptWrappable.h" |
10 #include "core/CoreExport.h" | 10 #include "core/CoreExport.h" |
11 #include "core/dom/Element.h" | 11 #include "core/dom/Element.h" |
12 #include "public/platform/WebScrollStateData.h" | 12 #include "platform/scroll/ScrollStateData.h" |
| 13 #include <deque> |
13 | 14 |
14 namespace blink { | 15 namespace blink { |
15 | 16 |
16 class CORE_EXPORT ScrollState final : public RefCountedWillBeGarbageCollectedFin
alized<ScrollState>, public ScriptWrappable { | 17 class CORE_EXPORT ScrollState final : public RefCountedWillBeGarbageCollectedFin
alized<ScrollState>, public ScriptWrappable { |
17 DEFINE_WRAPPERTYPEINFO(); | 18 DEFINE_WRAPPERTYPEINFO(); |
18 | 19 |
19 public: | 20 public: |
| 21 // TODO(tdresser) - the web exposed constructor should have fewer parameters
. |
20 static PassRefPtrWillBeRawPtr<ScrollState> create( | 22 static PassRefPtrWillBeRawPtr<ScrollState> create( |
21 double deltaX, double deltaY, double deltaGranularity, double velocityX, | 23 double deltaX, double deltaY, int startPositionX, int startPositionY, do
uble velocityX, |
22 double velocityY, bool inInertialPhase, | 24 double velocityY, bool isBeginning = false, bool inInertialPhase = false
, |
23 bool isBeginning = false, bool isEnding = false, | 25 bool isEnding = false, bool shouldPropagate = true, bool fromUserInput =
false, |
24 bool fromUserInput = false, bool shouldPropagate = true, | 26 bool isDirectManipulation = true, double deltaGranularity = 0, |
25 bool deltaConsumedForScrollSequence = false); | 27 bool deltaConsumedForScrollSequence = false); |
26 | 28 |
27 static PassRefPtrWillBeRawPtr<ScrollState> create(PassOwnPtr<WebScrollStateD
ata>); | 29 static PassRefPtrWillBeRawPtr<ScrollState> create(PassOwnPtr<ScrollStateData
>); |
28 | 30 |
29 ~ScrollState() | 31 ~ScrollState() |
30 { | 32 { |
31 } | 33 } |
32 | 34 |
33 // Web exposed methods. | 35 // Web exposed methods. |
34 | 36 |
35 // Reduce deltas by x, y. | 37 // Reduce deltas by x, y. |
36 void consumeDelta(double x, double y, ExceptionState&); | 38 void consumeDelta(double x, double y, ExceptionState&); |
37 // Pops the first element off of |m_scrollChain| and calls |distributeScroll
| on it. | 39 // Pops the first element off of |m_scrollChain| and calls |distributeScroll
| on it. |
38 void distributeToScrollChainDescendant(); | 40 void distributeToScrollChainDescendant(); |
| 41 int startPositionX() { return m_data->start_position_x; }; |
| 42 int startPositionY() { return m_data->start_position_y; }; |
39 // Positive when scrolling left. | 43 // Positive when scrolling left. |
40 double deltaX() const { return m_data->deltaX; }; | 44 double deltaX() const { return m_data->delta_x; }; |
41 // Positive when scrolling up. | 45 // Positive when scrolling up. |
42 double deltaY() const { return m_data->deltaY; }; | 46 double deltaY() const { return m_data->delta_y; }; |
43 // Indicates the smallest delta the input device can produce. 0 for unquanti
zed inputs. | 47 // Indicates the smallest delta the input device can produce. 0 for unquanti
zed inputs. |
44 double deltaGranularity() const { return m_data->deltaGranularity; }; | 48 double deltaGranularity() const { return m_data->delta_granularity; }; |
45 // Positive if moving right. | 49 // Positive if moving right. |
46 double velocityX() const { return m_data->velocityX; }; | 50 double velocityX() const { return m_data->velocity_x; }; |
47 // Positive if moving down. | 51 // Positive if moving down. |
48 double velocityY() const { return m_data->velocityY; }; | 52 double velocityY() const { return m_data->velocity_y; }; |
49 // True for events dispatched after the users's gesture has finished. | 53 // True for events dispatched after the users's gesture has finished. |
50 bool inInertialPhase() const { return m_data->inInertialPhase; }; | 54 bool inInertialPhase() const { return m_data->is_in_inertial_phase; }; |
51 // True if this is the first event for this scroll. | 55 // True if this is the first event for this scroll. |
52 bool isBeginning() const { return m_data->isBeginning; }; | 56 bool isBeginning() const { return m_data->is_beginning; }; |
53 // True if this is the last event for this scroll. | 57 // True if this is the last event for this scroll. |
54 bool isEnding() const { return m_data->isEnding; }; | 58 bool isEnding() const { return m_data->is_ending; }; |
55 // True if this scroll is the direct result of user input. | 59 // True if this scroll is the direct result of user input. |
56 bool fromUserInput() const { return m_data->fromUserInput; }; | 60 bool fromUserInput() const { return m_data->from_user_input; }; |
| 61 // True if this scroll is the result of the user interacting directly with |
| 62 // the screen, e.g., via touch. |
| 63 bool isDirectManipulation() const { return m_data->is_direct_manipulation; } |
57 // True if this scroll is allowed to bubble upwards. | 64 // True if this scroll is allowed to bubble upwards. |
58 bool shouldPropagate() const { return m_data->shouldPropagate; }; | 65 bool shouldPropagate() const { return m_data->should_propagate; }; |
59 | 66 |
60 // Non web exposed methods. | 67 // Non web exposed methods. |
61 void consumeDeltaNative(double x, double y); | 68 void consumeDeltaNative(double x, double y); |
62 | 69 |
63 // TODO(tdresser): this needs to be web exposed. See crbug.com/483091. | 70 // TODO(tdresser): this needs to be web exposed. See crbug.com/483091. |
64 void setScrollChain(std::deque<int> scrollChain) | 71 void setScrollChain(std::deque<int> scrollChain) |
65 { | 72 { |
66 m_scrollChain = scrollChain; | 73 m_scrollChain = scrollChain; |
67 } | 74 } |
68 | 75 |
69 Element* currentNativeScrollingElement() const; | 76 Element* currentNativeScrollingElement() const; |
70 void setCurrentNativeScrollingElement(Element*); | 77 void setCurrentNativeScrollingElement(Element*); |
71 | 78 |
72 int currentNativeScrollingElementId() const; | |
73 void setCurrentNativeScrollingElementById(int elementId); | 79 void setCurrentNativeScrollingElementById(int elementId); |
74 | 80 |
75 bool deltaConsumedForScrollSequence() const | 81 bool deltaConsumedForScrollSequence() const |
76 { | 82 { |
77 return m_data->deltaConsumedForScrollSequence; | 83 return m_data->delta_consumed_for_scroll_sequence; |
78 } | 84 } |
79 | 85 |
80 // Scroll begin and end must propagate to all nodes to ensure | 86 // Scroll begin and end must propagate to all nodes to ensure |
81 // their state is updated. | 87 // their state is updated. |
82 bool fullyConsumed() const | 88 bool fullyConsumed() const |
83 { | 89 { |
84 return !m_data->deltaX && !m_data->deltaY && !m_data->isEnding && !m_dat
a->isBeginning; | 90 return !m_data->delta_x && !m_data->delta_y && !m_data->is_ending && !m_
data->is_beginning; |
85 } | 91 } |
86 | 92 |
87 // These are only used for CompositorWorker scrolling, and should be gotten | 93 ScrollStateData* data() const { return m_data.get(); } |
88 // rid of eventually. | |
89 void setCausedScroll(bool x, bool y) | |
90 { | |
91 m_data->causedScrollX = x; | |
92 m_data->causedScrollY = y; | |
93 } | |
94 | |
95 bool causedScrollX() const | |
96 { | |
97 return m_data->causedScrollX; | |
98 } | |
99 | |
100 bool causedScrollY() const | |
101 { | |
102 return m_data->causedScrollY; | |
103 } | |
104 | |
105 WebScrollStateData* data() const { return m_data.get(); } | |
106 | 94 |
107 DEFINE_INLINE_TRACE() {} | 95 DEFINE_INLINE_TRACE() {} |
108 | 96 |
109 private: | 97 private: |
110 ScrollState(); | 98 ScrollState(); |
111 ScrollState(PassOwnPtr<WebScrollStateData>); | 99 ScrollState(PassOwnPtr<ScrollStateData>); |
112 PassOwnPtr<WebScrollStateData> m_data; | 100 PassOwnPtr<ScrollStateData> m_data; |
113 std::deque<int> m_scrollChain; | 101 std::deque<int> m_scrollChain; |
114 }; | 102 }; |
115 | 103 |
116 } // namespace blink | 104 } // namespace blink |
117 | 105 |
118 #endif // ScrollState_h | 106 #endif // ScrollState_h |
OLD | NEW |