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