Index: ui/events/test/motion_event_test_utils.cc |
diff --git a/ui/events/test/mock_motion_event.cc b/ui/events/test/motion_event_test_utils.cc |
similarity index 54% |
rename from ui/events/test/mock_motion_event.cc |
rename to ui/events/test/motion_event_test_utils.cc |
index f3de1ddceee8408c8d96a0a43824e0537316f7f0..0a3f80d26efbee7a552588367b416f4238a070e2 100644 |
--- a/ui/events/test/mock_motion_event.cc |
+++ b/ui/events/test/motion_event_test_utils.cc |
@@ -2,9 +2,14 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "ui/events/test/mock_motion_event.h" |
+#include "ui/events/test/motion_event_test_utils.h" |
+ |
+#include <sstream> |
#include "base/logging.h" |
+#include "ui/events/base_event_utils.h" |
+#include "ui/events/gesture_detection/bitset_32.h" |
+#include "ui/events/gesture_detection/motion_event.h" |
using base::TimeTicks; |
@@ -19,13 +24,11 @@ PointerProperties CreatePointer() { |
} |
PointerProperties CreatePointer(float x, float y, int id) { |
- PointerProperties pointer(x, y); |
- pointer.touch_major = MockMotionEvent::TOUCH_MAJOR; |
+ PointerProperties pointer(x, y, MockMotionEvent::TOUCH_MAJOR); |
pointer.id = id; |
return pointer; |
} |
- |
} // namespace |
MockMotionEvent::MockMotionEvent() |
@@ -75,6 +78,7 @@ MockMotionEvent::MockMotionEvent(Action action, |
const std::vector<gfx::PointF>& positions) { |
set_action(action); |
set_event_time(time); |
+ set_unique_event_id(ui::GetNextTouchEventId()); |
if (action == ACTION_POINTER_UP || action == ACTION_POINTER_DOWN) |
set_action_index(static_cast<int>(positions.size()) - 1); |
for (size_t i = 0; i < positions.size(); ++i) |
@@ -85,20 +89,11 @@ MockMotionEvent::MockMotionEvent(const MockMotionEvent& other) |
: MotionEventGeneric(other) { |
} |
-MockMotionEvent::~MockMotionEvent() {} |
- |
-scoped_ptr<MotionEvent> MockMotionEvent::Clone() const { |
- return scoped_ptr<MotionEvent>(new MockMotionEvent(*this)); |
-} |
- |
-scoped_ptr<MotionEvent> MockMotionEvent::Cancel() const { |
- scoped_ptr<MockMotionEvent> event(new MockMotionEvent(*this)); |
- event->set_action(MotionEvent::ACTION_CANCEL); |
- return event.Pass(); |
+MockMotionEvent::~MockMotionEvent() { |
} |
-void MockMotionEvent::PressPoint(float x, float y) { |
- ResolvePointers(); |
+MockMotionEvent& MockMotionEvent::PressPoint(float x, float y) { |
+ UpdatePointersAndID(); |
PushPointer(x, y); |
if (GetPointerCount() > 1) { |
set_action_index(static_cast<int>(GetPointerCount()) - 1); |
@@ -106,10 +101,11 @@ void MockMotionEvent::PressPoint(float x, float y) { |
} else { |
set_action(ACTION_DOWN); |
} |
+ return *this; |
} |
-void MockMotionEvent::MovePoint(size_t index, float x, float y) { |
- ResolvePointers(); |
+MockMotionEvent& MockMotionEvent::MovePoint(size_t index, float x, float y) { |
+ UpdatePointersAndID(); |
DCHECK_LT(index, GetPointerCount()); |
PointerProperties& p = pointer(index); |
float dx = x - p.x; |
@@ -119,10 +115,11 @@ void MockMotionEvent::MovePoint(size_t index, float x, float y) { |
p.raw_x += dx; |
p.raw_y += dy; |
set_action(ACTION_MOVE); |
+ return *this; |
} |
-void MockMotionEvent::ReleasePoint() { |
- ResolvePointers(); |
+MockMotionEvent& MockMotionEvent::ReleasePoint() { |
+ UpdatePointersAndID(); |
DCHECK_GT(GetPointerCount(), 0U); |
if (GetPointerCount() > 1) { |
set_action_index(static_cast<int>(GetPointerCount()) - 1); |
@@ -130,29 +127,36 @@ void MockMotionEvent::ReleasePoint() { |
} else { |
set_action(ACTION_UP); |
} |
+ return *this; |
} |
-void MockMotionEvent::CancelPoint() { |
- ResolvePointers(); |
+MockMotionEvent& MockMotionEvent::CancelPoint() { |
+ UpdatePointersAndID(); |
DCHECK_GT(GetPointerCount(), 0U); |
set_action(ACTION_CANCEL); |
+ return *this; |
} |
-void MockMotionEvent::SetTouchMajor(float new_touch_major) { |
+MockMotionEvent& MockMotionEvent::SetTouchMajor(float new_touch_major) { |
for (size_t i = 0; i < GetPointerCount(); ++i) |
pointer(i).touch_major = new_touch_major; |
+ return *this; |
} |
-void MockMotionEvent::SetRawOffset(float raw_offset_x, float raw_offset_y) { |
+MockMotionEvent& MockMotionEvent::SetRawOffset(float raw_offset_x, |
+ float raw_offset_y) { |
for (size_t i = 0; i < GetPointerCount(); ++i) { |
pointer(i).raw_x = pointer(i).x + raw_offset_x; |
pointer(i).raw_y = pointer(i).y + raw_offset_y; |
} |
+ return *this; |
} |
-void MockMotionEvent::SetToolType(size_t pointer_index, ToolType tool_type) { |
+MockMotionEvent& MockMotionEvent::SetToolType(size_t pointer_index, |
+ ToolType tool_type) { |
DCHECK_LT(pointer_index, GetPointerCount()); |
pointer(pointer_index).tool_type = tool_type; |
+ return *this; |
} |
void MockMotionEvent::PushPointer(float x, float y) { |
@@ -160,8 +164,9 @@ void MockMotionEvent::PushPointer(float x, float y) { |
CreatePointer(x, y, static_cast<int>(GetPointerCount()))); |
} |
-void MockMotionEvent::ResolvePointers() { |
+void MockMotionEvent::UpdatePointersAndID() { |
set_action_index(-1); |
+ set_unique_event_id(ui::GetNextTouchEventId()); |
switch (GetAction()) { |
case ACTION_UP: |
case ACTION_POINTER_UP: |
@@ -173,5 +178,63 @@ void MockMotionEvent::ResolvePointers() { |
} |
} |
+MockMotionEvent& MockMotionEvent::SetPrimaryPointerId(int id) { |
+ DCHECK_GT(GetPointerCount(), 0U); |
+ pointer(0).id = id; |
+ return *this; |
+} |
+ |
+std::string ToString(const MotionEvent& event) { |
+ std::stringstream ss; |
+ ss << "MotionEvent {" |
+ << "\n Action: " << event.GetAction(); |
+ if (event.GetAction() == MotionEvent::ACTION_POINTER_DOWN || |
+ event.GetAction() == MotionEvent::ACTION_POINTER_UP) |
+ ss << "\n ActionIndex: " << event.GetActionIndex(); |
+ ss << "\n Flags: " << event.GetFlags() |
+ << "\n ButtonState: " << event.GetButtonState() << "\n Pointers: ["; |
+ const size_t pointer_count = event.GetPointerCount(); |
+ const size_t history_size = event.GetHistorySize(); |
+ |
+ BitSet32 pointer_ids; |
+ for (size_t i = 0; i < pointer_count; ++i) { |
+ pointer_ids.mark_bit(event.GetPointerId(i)); |
+ |
+ // Print the pointers sorted by id. |
+ while (!pointer_ids.is_empty()) { |
+ int pi = event.FindPointerIndexOfId(pointer_ids.first_marked_bit()); |
+ DCHECK_GE(pi, 0); |
+ pointer_ids.clear_first_marked_bit(); |
+ ss << "{" |
+ << "\n PointerId: (" << event.GetPointerId(pi) << ")" |
+ << "\n Pos: (" << event.GetX(pi) << ", " << event.GetY(pi) << ")" |
+ << "\n RawPos: (" << event.GetX(pi) << ", " << event.GetY(pi) << ")" |
+ << "\n Size: (" << event.GetTouchMajor(pi) << ", " |
+ << event.GetTouchMinor(pi) << ")" |
+ << "\n Orientation: " << event.GetOrientation(pi) |
+ << "\n Pressure: " << event.GetPressure(pi) |
+ << "\n Tool: " << event.GetToolType(pi); |
+ if (history_size) { |
+ ss << "\n History: ["; |
+ for (size_t h = 0; h < history_size; ++h) { |
+ ss << "\n { " << event.GetHistoricalX(pi, h) << ", " |
+ << event.GetHistoricalY(pi, h) << ", " |
+ << event.GetHistoricalTouchMajor(pi, h) << ", " |
+ << event.GetHistoricalEventTime(pi).ToInternalValue() << " }"; |
+ if (h + 1 < history_size) |
+ ss << ","; |
+ } |
+ ss << "\n ]"; |
+ } |
+ ss << "\n }"; |
+ if (i + 1 < pointer_count) |
+ ss << ", "; |
+ } |
+ ss << "]\n}"; |
+ } |
+ |
+ return ss.str(); |
+} |
+ |
} // namespace test |
} // namespace ui |