Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(556)

Side by Side Diff: ui/events/gesture_detection/gesture_provider_unittest.cc

Issue 306483003: Prepare for Unified Gesture Recognizer landing in Aura (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Disable UGR again. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 67
68 static MockMotionEvent ObtainMotionEvent(base::TimeTicks event_time, 68 static MockMotionEvent ObtainMotionEvent(base::TimeTicks event_time,
69 MotionEvent::Action action, 69 MotionEvent::Action action,
70 float x0, 70 float x0,
71 float y0, 71 float y0,
72 float x1, 72 float x1,
73 float y1) { 73 float y1) {
74 return MockMotionEvent(action, event_time, x0, y0, x1, y1); 74 return MockMotionEvent(action, event_time, x0, y0, x1, y1);
75 } 75 }
76 76
77 static MockMotionEvent ObtainMotionEvent(base::TimeTicks event_time,
78 MotionEvent::Action action,
79 float x0,
80 float y0,
81 float x1,
82 float y1,
83 float x2,
84 float y2) {
85 return MockMotionEvent(action, event_time, x0, y0, x1, y1, x2, y2);
86 }
87
77 static MockMotionEvent ObtainMotionEvent( 88 static MockMotionEvent ObtainMotionEvent(
78 base::TimeTicks event_time, 89 base::TimeTicks event_time,
79 MotionEvent::Action action, 90 MotionEvent::Action action,
80 const std::vector<gfx::PointF>& positions) { 91 const std::vector<gfx::PointF>& positions) {
81 switch (positions.size()) { 92 switch (positions.size()) {
82 case 1: 93 case 1:
83 return MockMotionEvent( 94 return MockMotionEvent(
84 action, event_time, positions[0].x(), positions[0].y()); 95 action, event_time, positions[0].x(), positions[0].y());
85 case 2: 96 case 2:
86 return MockMotionEvent(action, 97 return MockMotionEvent(action,
(...skipping 1301 matching lines...) Expand 10 before | Expand all | Expand 10 after
1388 1399
1389 // Toggling double-tap support should not take effect until the next sequence. 1400 // Toggling double-tap support should not take effect until the next sequence.
1390 gesture_provider_->SetDoubleTapSupportForPageEnabled(false); 1401 gesture_provider_->SetDoubleTapSupportForPageEnabled(false);
1391 1402
1392 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1403 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1393 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id); 1404 EXPECT_EQ(motion_event_id, GetMostRecentGestureEvent().motion_event_id);
1394 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); 1405 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points());
1395 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_PINCH_BEGIN)); 1406 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_PINCH_BEGIN));
1396 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN)); 1407 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_BEGIN));
1397 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_UPDATE)); 1408 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_SCROLL_UPDATE));
1409
1410 EXPECT_EQ((kFakeCoordX + secondary_coord_x) / 2, GetReceivedGesture(3).x);
1411 EXPECT_EQ((kFakeCoordY + secondary_coord_y) / 2, GetReceivedGesture(3).y);
1412
1398 EXPECT_EQ( 1413 EXPECT_EQ(
1399 gfx::RectF(kFakeCoordX - kMockTouchRadius, 1414 gfx::RectF(kFakeCoordX - kMockTouchRadius,
1400 kFakeCoordY - kMockTouchRadius, 1415 kFakeCoordY - kMockTouchRadius,
1401 secondary_coord_x - kFakeCoordX + kMockTouchRadius * 2, 1416 secondary_coord_x - kFakeCoordX + kMockTouchRadius * 2,
1402 secondary_coord_y - kFakeCoordY + kMockTouchRadius * 2), 1417 secondary_coord_y - kFakeCoordY + kMockTouchRadius * 2),
1403 GetMostRecentGestureEvent().details.bounding_box()); 1418 GetMostRecentGestureEvent().details.bounding_box());
1404 1419
1405 secondary_coord_x += 2 * touch_slop; 1420 secondary_coord_x += 2 * touch_slop;
1406 secondary_coord_y += 2 * touch_slop; 1421 secondary_coord_y += 2 * touch_slop;
1407 event = ObtainMotionEvent(event_time, 1422 event = ObtainMotionEvent(event_time,
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
1707 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); 1722 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points());
1708 } 1723 }
1709 1724
1710 // Verify that gesture begin and gesture end events are dispatched correctly. 1725 // Verify that gesture begin and gesture end events are dispatched correctly.
1711 TEST_F(GestureProviderTest, GestureBeginAndEnd) { 1726 TEST_F(GestureProviderTest, GestureBeginAndEnd) {
1712 EnableBeginEndTypes(); 1727 EnableBeginEndTypes();
1713 base::TimeTicks event_time = base::TimeTicks::Now(); 1728 base::TimeTicks event_time = base::TimeTicks::Now();
1714 1729
1715 EXPECT_EQ(0U, GetReceivedGestureCount()); 1730 EXPECT_EQ(0U, GetReceivedGestureCount());
1716 MockMotionEvent event = 1731 MockMotionEvent event =
1717 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); 1732 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN, 1, 1);
1718 event.pointer_count = 1; 1733 event.pointer_count = 1;
1719 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1734 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1720 EXPECT_EQ(ET_GESTURE_BEGIN, GetReceivedGesture(0).type); 1735 EXPECT_EQ(ET_GESTURE_BEGIN, GetReceivedGesture(0).type);
1721 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); 1736 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType());
1722 EXPECT_EQ(2U, GetReceivedGestureCount()); 1737 EXPECT_EQ(2U, GetReceivedGestureCount());
1723 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); 1738 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points());
1724 EXPECT_EQ(gfx::RectF(kFakeCoordX - kMockTouchRadius, 1739 EXPECT_EQ(1, GetMostRecentGestureEvent().x);
1725 kFakeCoordY - kMockTouchRadius, 1740 EXPECT_EQ(1, GetMostRecentGestureEvent().y);
1741 EXPECT_EQ(gfx::RectF(1 - kMockTouchRadius,
1742 1 - kMockTouchRadius,
1726 kMockTouchRadius * 2, 1743 kMockTouchRadius * 2,
1727 kMockTouchRadius * 2), 1744 kMockTouchRadius * 2),
1728 GetMostRecentGestureEvent().details.bounding_box()); 1745 GetMostRecentGestureEvent().details.bounding_box());
1729 1746
1730 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_POINTER_DOWN); 1747 event = ObtainMotionEvent(
1748 event_time, MotionEvent::ACTION_POINTER_DOWN, 1, 1, 2, 2);
1731 event.pointer_count = 2; 1749 event.pointer_count = 2;
1732 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1750 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1733 EXPECT_EQ(ET_GESTURE_BEGIN, GetMostRecentGestureEventType()); 1751 EXPECT_EQ(ET_GESTURE_BEGIN, GetMostRecentGestureEventType());
1734 EXPECT_EQ(3U, GetReceivedGestureCount()); 1752 EXPECT_EQ(3U, GetReceivedGestureCount());
1735 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); 1753 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points());
1754 EXPECT_EQ(2, GetMostRecentGestureEvent().x);
1755 EXPECT_EQ(2, GetMostRecentGestureEvent().y);
1736 1756
1737 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_POINTER_DOWN); 1757 event = ObtainMotionEvent(
1758 event_time, MotionEvent::ACTION_POINTER_DOWN, 1, 1, 2, 2, 3, 3);
1738 event.pointer_count = 3; 1759 event.pointer_count = 3;
1739 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1760 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1740 EXPECT_EQ(ET_GESTURE_BEGIN, GetMostRecentGestureEventType()); 1761 EXPECT_EQ(ET_GESTURE_BEGIN, GetMostRecentGestureEventType());
1741 EXPECT_EQ(4U, GetReceivedGestureCount()); 1762 EXPECT_EQ(4U, GetReceivedGestureCount());
1742 EXPECT_EQ(3, GetMostRecentGestureEvent().details.touch_points()); 1763 EXPECT_EQ(3, GetMostRecentGestureEvent().details.touch_points());
1764 EXPECT_EQ(3, GetMostRecentGestureEvent().x);
1765 EXPECT_EQ(3, GetMostRecentGestureEvent().y);
1743 1766
1744 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_POINTER_UP); 1767 event = ObtainMotionEvent(
1768 event_time, MotionEvent::ACTION_POINTER_UP, 1, 1, 2, 2, 3, 3);
1745 event.pointer_count = 2; 1769 event.pointer_count = 2;
1746 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1770 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1747 EXPECT_EQ(ET_GESTURE_END, GetMostRecentGestureEventType()); 1771 EXPECT_EQ(ET_GESTURE_END, GetMostRecentGestureEventType());
1748 EXPECT_EQ(5U, GetReceivedGestureCount()); 1772 EXPECT_EQ(5U, GetReceivedGestureCount());
1749 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); 1773 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points());
1774 EXPECT_EQ(1, GetMostRecentGestureEvent().x);
1775 EXPECT_EQ(1, GetMostRecentGestureEvent().y);
1750 1776
1751 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_POINTER_DOWN); 1777 event = ObtainMotionEvent(
1778 event_time, MotionEvent::ACTION_POINTER_DOWN, 2, 2, 3, 3, 4, 4);
1752 event.pointer_count = 3; 1779 event.pointer_count = 3;
1753 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1780 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1754 EXPECT_EQ(ET_GESTURE_BEGIN, GetMostRecentGestureEventType()); 1781 EXPECT_EQ(ET_GESTURE_BEGIN, GetMostRecentGestureEventType());
1755 EXPECT_EQ(6U, GetReceivedGestureCount()); 1782 EXPECT_EQ(6U, GetReceivedGestureCount());
1756 EXPECT_EQ(3, GetMostRecentGestureEvent().details.touch_points()); 1783 EXPECT_EQ(3, GetMostRecentGestureEvent().details.touch_points());
1784 EXPECT_EQ(4, GetMostRecentGestureEvent().x);
1785 EXPECT_EQ(4, GetMostRecentGestureEvent().y);
1757 1786
1758 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_POINTER_UP); 1787 event = ObtainMotionEvent(
1788 event_time, MotionEvent::ACTION_POINTER_UP, 2, 2, 3, 3, 4, 4);
1759 event.pointer_count = 2; 1789 event.pointer_count = 2;
1760 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1790 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1761 EXPECT_EQ(ET_GESTURE_END, GetMostRecentGestureEventType()); 1791 EXPECT_EQ(ET_GESTURE_END, GetMostRecentGestureEventType());
1762 EXPECT_EQ(7U, GetReceivedGestureCount()); 1792 EXPECT_EQ(7U, GetReceivedGestureCount());
1763 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); 1793 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points());
1794 EXPECT_EQ(2, GetMostRecentGestureEvent().x);
1795 EXPECT_EQ(2, GetMostRecentGestureEvent().y);
1764 1796
1765 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_POINTER_UP); 1797 event =
1798 ObtainMotionEvent(event_time, MotionEvent::ACTION_POINTER_UP, 3, 3, 4, 4);
1766 event.pointer_count = 1; 1799 event.pointer_count = 1;
1767 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1800 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1768 EXPECT_EQ(ET_GESTURE_END, GetMostRecentGestureEventType()); 1801 EXPECT_EQ(ET_GESTURE_END, GetMostRecentGestureEventType());
1769 EXPECT_EQ(8U, GetReceivedGestureCount()); 1802 EXPECT_EQ(8U, GetReceivedGestureCount());
1770 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); 1803 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points());
1804 EXPECT_EQ(3, GetMostRecentGestureEvent().x);
1805 EXPECT_EQ(3, GetMostRecentGestureEvent().y);
1771 1806
1772 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_UP); 1807
1808 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_UP, 4, 4);
1773 event.pointer_count = 1; 1809 event.pointer_count = 1;
1774 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1810 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1775 EXPECT_EQ(ET_GESTURE_END, GetMostRecentGestureEventType()); 1811 EXPECT_EQ(ET_GESTURE_END, GetMostRecentGestureEventType());
1776 EXPECT_EQ(9U, GetReceivedGestureCount()); 1812 EXPECT_EQ(9U, GetReceivedGestureCount());
1777 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); 1813 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points());
1814 EXPECT_EQ(4, GetMostRecentGestureEvent().x);
1815 EXPECT_EQ(4, GetMostRecentGestureEvent().y);
1816 }
1778 1817
1779 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN); 1818 // Verify that gesture begin and gesture end events are dispatched correctly
1819 // when an ACTION_CANCEL is received.
1820 TEST_F(GestureProviderTest, GestureBeginAndEndOnCancel) {
1821 EnableBeginEndTypes();
1822 base::TimeTicks event_time = base::TimeTicks::Now();
1823
1824 EXPECT_EQ(0U, GetReceivedGestureCount());
1825 MockMotionEvent event =
1826 ObtainMotionEvent(event_time, MotionEvent::ACTION_DOWN, 1, 1);
1780 event.pointer_count = 1; 1827 event.pointer_count = 1;
1781 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1828 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1782 EXPECT_EQ(ET_GESTURE_BEGIN, GetReceivedGesture(9).type); 1829 EXPECT_EQ(ET_GESTURE_BEGIN, GetReceivedGesture(0).type);
1783 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType()); 1830 EXPECT_EQ(ET_GESTURE_TAP_DOWN, GetMostRecentGestureEventType());
1784 EXPECT_EQ(11U, GetReceivedGestureCount()); 1831 EXPECT_EQ(2U, GetReceivedGestureCount());
1785 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); 1832 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points());
1833 EXPECT_EQ(gfx::RectF(1 - kMockTouchRadius,
1834 1 - kMockTouchRadius,
1835 kMockTouchRadius * 2,
1836 kMockTouchRadius * 2),
1837 GetMostRecentGestureEvent().details.bounding_box());
1838 EXPECT_EQ(1, GetMostRecentGestureEvent().x);
1839 EXPECT_EQ(1, GetMostRecentGestureEvent().y);
1786 1840
1787 event = ObtainMotionEvent(event_time, MotionEvent::ACTION_CANCEL); 1841 event = ObtainMotionEvent(
1788 event.pointer_count = 1; 1842 event_time, MotionEvent::ACTION_POINTER_DOWN, 1, 1, 2, 2);
1843 event.pointer_count = 2;
1789 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 1844 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1790 EXPECT_EQ(ET_GESTURE_END, GetMostRecentGestureEventType()); 1845 EXPECT_EQ(ET_GESTURE_BEGIN, GetMostRecentGestureEventType());
1791 EXPECT_EQ(12U, GetReceivedGestureCount()); 1846 EXPECT_EQ(3U, GetReceivedGestureCount());
1792 EXPECT_EQ(1, GetMostRecentGestureEvent().details.touch_points()); 1847 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points());
1848 EXPECT_EQ(2, GetMostRecentGestureEvent().x);
1849 EXPECT_EQ(2, GetMostRecentGestureEvent().y);
1850
1851
1852 event = ObtainMotionEvent(
1853 event_time, MotionEvent::ACTION_POINTER_DOWN, 1, 1, 2, 2, 3, 3);
1854 event.pointer_count = 3;
1855 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1856 EXPECT_EQ(ET_GESTURE_BEGIN, GetMostRecentGestureEventType());
1857 EXPECT_EQ(4U, GetReceivedGestureCount());
1858 EXPECT_EQ(3, GetMostRecentGestureEvent().details.touch_points());
1859 EXPECT_EQ(3, GetMostRecentGestureEvent().x);
1860 EXPECT_EQ(3, GetMostRecentGestureEvent().y);
1861
1862 event = ObtainMotionEvent(
1863 event_time, MotionEvent::ACTION_CANCEL, 1, 1, 2, 2, 3, 3);
1864 event.pointer_count = 3;
1865 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
1866 EXPECT_EQ(7U, GetReceivedGestureCount());
1867 EXPECT_EQ(3, GetReceivedGesture(4).details.touch_points());
1868 EXPECT_EQ(ET_GESTURE_END, GetReceivedGesture(4).details.type());
1869 EXPECT_EQ(2, GetReceivedGesture(5).details.touch_points());
1870 EXPECT_EQ(ET_GESTURE_END, GetReceivedGesture(5).details.type());
1871 EXPECT_EQ(1, GetReceivedGesture(6).details.touch_points());
1872 EXPECT_EQ(ET_GESTURE_END, GetReceivedGesture(6).details.type());
1873 EXPECT_EQ(1, GetReceivedGesture(4).x);
1874 EXPECT_EQ(1, GetReceivedGesture(4).y);
1875 EXPECT_EQ(2, GetReceivedGesture(5).x);
1876 EXPECT_EQ(2, GetReceivedGesture(5).y);
1877 EXPECT_EQ(3, GetReceivedGesture(6).x);
1878 EXPECT_EQ(3, GetReceivedGesture(6).y);
1793 } 1879 }
1794 1880
1795
1796 // Test a simple two finger tap 1881 // Test a simple two finger tap
1797 TEST_F(GestureProviderTest, TwoFingerTap) { 1882 TEST_F(GestureProviderTest, TwoFingerTap) {
1798 // The time between ACTION_POINTER_DOWN and ACTION_POINTER_UP must be <= the 1883 // The time between ACTION_POINTER_DOWN and ACTION_POINTER_UP must be <= the
1799 // two finger tap delay. 1884 // two finger tap delay.
1800 EnableTwoFingerTap(kMaxTwoFingerTapSeparation, base::TimeDelta()); 1885 EnableTwoFingerTap(kMaxTwoFingerTapSeparation, base::TimeDelta());
1801 const float scaled_touch_slop = GetTouchSlop(); 1886 const float scaled_touch_slop = GetTouchSlop();
1802 1887
1803 base::TimeTicks event_time = base::TimeTicks::Now(); 1888 base::TimeTicks event_time = base::TimeTicks::Now();
1804 1889
1805 MockMotionEvent event = 1890 MockMotionEvent event =
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
2027 secondary_coord_x + kMinPinchUpdateDistance + 2112 secondary_coord_x + kMinPinchUpdateDistance +
2028 kOvershootMinPinchUpdateDistance, 2113 kOvershootMinPinchUpdateDistance,
2029 secondary_coord_y); 2114 secondary_coord_y);
2030 2115
2031 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event)); 2116 EXPECT_TRUE(gesture_provider_->OnTouchEvent(event));
2032 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_PINCH_UPDATE)); 2117 EXPECT_TRUE(HasReceivedGesture(ET_GESTURE_PINCH_UPDATE));
2033 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points()); 2118 EXPECT_EQ(2, GetMostRecentGestureEvent().details.touch_points());
2034 } 2119 }
2035 2120
2036 } // namespace ui 2121 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698