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

Side by Side Diff: content/browser/renderer_host/input/input_router_impl_unittest.cc

Issue 819993002: Revert of Explicitly suppress scrolling for wheel events that will trigger zooming (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <math.h> 5 #include <math.h>
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 1613 matching lines...) Expand 10 before | Expand all | Expand 10 after
1624 EXPECT_EQ(25, wheel_event->y); 1624 EXPECT_EQ(25, wheel_event->y);
1625 EXPECT_EQ(20, wheel_event->globalX); 1625 EXPECT_EQ(20, wheel_event->globalX);
1626 EXPECT_EQ(25, wheel_event->globalY); 1626 EXPECT_EQ(25, wheel_event->globalY);
1627 EXPECT_EQ(20, wheel_event->windowX); 1627 EXPECT_EQ(20, wheel_event->windowX);
1628 EXPECT_EQ(25, wheel_event->windowY); 1628 EXPECT_EQ(25, wheel_event->windowY);
1629 EXPECT_EQ(PinchScaleToWheelDelta(1.5), wheel_event->deltaY); 1629 EXPECT_EQ(PinchScaleToWheelDelta(1.5), wheel_event->deltaY);
1630 EXPECT_EQ(0, wheel_event->deltaX); 1630 EXPECT_EQ(0, wheel_event->deltaX);
1631 EXPECT_TRUE(wheel_event->hasPreciseScrollingDeltas); 1631 EXPECT_TRUE(wheel_event->hasPreciseScrollingDeltas);
1632 EXPECT_EQ(1, wheel_event->wheelTicksY); 1632 EXPECT_EQ(1, wheel_event->wheelTicksY);
1633 EXPECT_EQ(0, wheel_event->wheelTicksX); 1633 EXPECT_EQ(0, wheel_event->wheelTicksX);
1634 EXPECT_FALSE(wheel_event->canScroll);
1635 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1634 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1636 1635
1637 // Indicate that the wheel event was unhandled. 1636 // Indicate that the wheel event was unhandled.
1638 SendInputEventACK(WebInputEvent::MouseWheel, 1637 SendInputEventACK(WebInputEvent::MouseWheel,
1639 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1638 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1640 1639
1641 // Check that the correct unhandled pinch event was received. 1640 // Check that the correct unhandled pinch event was received.
1642 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1641 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1643 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); 1642 ASSERT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type());
1644 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_handler_->ack_state()); 1643 EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_handler_->ack_state());
1645 EXPECT_EQ(1.5f, ack_handler_->acked_gesture_event().data.pinchUpdate.scale); 1644 EXPECT_EQ(1.5f, ack_handler_->acked_gesture_event().data.pinchUpdate.scale);
1646 EXPECT_EQ(0, client_->in_flight_event_count()); 1645 EXPECT_EQ(0, client_->in_flight_event_count());
1647 1646
1648 // Second a second pinch event. 1647 // Second a second pinch event.
1649 SimulateGesturePinchUpdateEvent( 1648 SimulateGesturePinchUpdateEvent(
1650 0.3f, 20, 25, 0, blink::WebGestureDeviceTouchpad); 1649 0.3f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1651 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); 1650 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
1652 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); 1651 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
1653 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); 1652 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
1654 EXPECT_FLOAT_EQ(PinchScaleToWheelDelta(0.3f), wheel_event->deltaY); 1653 EXPECT_FLOAT_EQ(PinchScaleToWheelDelta(0.3f), wheel_event->deltaY);
1655 EXPECT_TRUE(wheel_event->hasPreciseScrollingDeltas); 1654 EXPECT_TRUE(wheel_event->hasPreciseScrollingDeltas);
1656 EXPECT_EQ(-1, wheel_event->wheelTicksY); 1655 EXPECT_EQ(-1, wheel_event->wheelTicksY);
1657 EXPECT_FALSE(wheel_event->canScroll);
1658 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1656 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1659 1657
1660 // Indicate that the wheel event was handled this time. 1658 // Indicate that the wheel event was handled this time.
1661 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED); 1659 SendInputEventACK(WebInputEvent::MouseWheel, INPUT_EVENT_ACK_STATE_CONSUMED);
1662 1660
1663 // Check that the correct HANDLED pinch event was received. 1661 // Check that the correct HANDLED pinch event was received.
1664 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1662 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1665 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); 1663 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type());
1666 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, ack_handler_->ack_state()); 1664 EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, ack_handler_->ack_state());
1667 EXPECT_FLOAT_EQ(0.3f, 1665 EXPECT_FLOAT_EQ(0.3f,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1727 EXPECT_FLOAT_EQ(1.6f * 1.7f, 1725 EXPECT_FLOAT_EQ(1.6f * 1.7f,
1728 ack_handler_->acked_gesture_event().data.pinchUpdate.scale); 1726 ack_handler_->acked_gesture_event().data.pinchUpdate.scale);
1729 } 1727 }
1730 1728
1731 // Test interleaving pinch and wheel events. 1729 // Test interleaving pinch and wheel events.
1732 TEST_F(InputRouterImplTest, TouchpadPinchAndWheel) { 1730 TEST_F(InputRouterImplTest, TouchpadPinchAndWheel) {
1733 // Simulate queued wheel and pinch events events. 1731 // Simulate queued wheel and pinch events events.
1734 // Note that in practice interleaving pinch and wheel events should be rare 1732 // Note that in practice interleaving pinch and wheel events should be rare
1735 // (eg. requires the use of a mouse and trackpad at the same time). 1733 // (eg. requires the use of a mouse and trackpad at the same time).
1736 1734
1737 // Synthetic wheel and real wheel events can never be coalesced together. 1735 // Use the control modifier to match the synthetic wheel events so that
1736 // they're elligble for coalescing.
1738 int mod = WebInputEvent::ControlKey; 1737 int mod = WebInputEvent::ControlKey;
1739 1738
1740 // Event 1: sent directly. 1739 // Event 1: sent directly.
1741 SimulateWheelEvent(0, -5, mod, true); 1740 SimulateWheelEvent(0, -5, mod, true);
1742 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1741 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1743 1742
1744 // Event 2: enqueued in InputRouter. 1743 // Event 2: enqueued in InputRouter.
1745 SimulateWheelEvent(0, -10, mod, true); 1744 SimulateWheelEvent(0, -10, mod, true);
1746 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1745 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1747 1746
1748 // Event 3: enqueued in InputRouter, not coalesced into #2 because of 1747 // Event 3: enqueued in InputRouter, not coalesced into #2.
1749 // synthesized_from_pinch.
1750 SimulateGesturePinchUpdateEvent( 1748 SimulateGesturePinchUpdateEvent(
1751 1.5f, 20, 25, 0, blink::WebGestureDeviceTouchpad); 1749 1.5f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1752 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1750 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1753 1751
1754 // Event 4: enqueued in GestureEventQueue. 1752 // Event 4: enqueued in GestureEventQueue.
1755 SimulateGesturePinchUpdateEvent( 1753 SimulateGesturePinchUpdateEvent(
1756 1.2f, 20, 25, 0, blink::WebGestureDeviceTouchpad); 1754 1.2f, 20, 25, 0, blink::WebGestureDeviceTouchpad);
1757 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1755 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1758 1756
1759 // Event 5: enqueued in InputRouter, not coalesced into #3 because of 1757 // Event 5: coalesced into wheel event for #3.
1760 // synthesized_from_pinch.
1761 SimulateWheelEvent(2, 0, mod, true); 1758 SimulateWheelEvent(2, 0, mod, true);
1762 EXPECT_EQ(0U, GetSentMessageCountAndResetSink()); 1759 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1763 1760
1764 // Event 6: coalesced into #5.
1765 SimulateWheelEvent(0, 3, mod, true);
1766 EXPECT_EQ(0U, GetSentMessageCountAndResetSink());
1767
1768 // Send ack for #1. 1761 // Send ack for #1.
1769 SendInputEventACK(WebInputEvent::MouseWheel, 1762 SendInputEventACK(WebInputEvent::MouseWheel,
1770 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1763 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1771 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1764 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1772 EXPECT_EQ(WebInputEvent::MouseWheel, ack_handler_->ack_event_type()); 1765 EXPECT_EQ(WebInputEvent::MouseWheel, ack_handler_->ack_event_type());
1773 1766
1774 // Verify we sent #2. 1767 // Verify we sent #2.
1775 ASSERT_EQ(1U, process_->sink().message_count()); 1768 ASSERT_EQ(1U, process_->sink().message_count());
1776 const WebInputEvent* input_event = 1769 const WebInputEvent* input_event =
1777 GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); 1770 GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
1778 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); 1771 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
1779 const WebMouseWheelEvent* wheel_event = 1772 const WebMouseWheelEvent* wheel_event =
1780 static_cast<const WebMouseWheelEvent*>(input_event); 1773 static_cast<const WebMouseWheelEvent*>(input_event);
1781 EXPECT_EQ(0, wheel_event->deltaX); 1774 EXPECT_EQ(0, wheel_event->deltaX);
1782 EXPECT_EQ(-10, wheel_event->deltaY); 1775 EXPECT_EQ(-10, wheel_event->deltaY);
1783 EXPECT_EQ(mod, wheel_event->modifiers); 1776 EXPECT_EQ(mod, wheel_event->modifiers);
1784 EXPECT_TRUE(wheel_event->canScroll);
1785 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1777 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1786 1778
1787 // Send ack for #2. 1779 // Send ack for #2.
1788 SendInputEventACK(WebInputEvent::MouseWheel, 1780 SendInputEventACK(WebInputEvent::MouseWheel,
1789 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1781 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1790 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1782 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1791 EXPECT_EQ(WebInputEvent::MouseWheel, ack_handler_->ack_event_type()); 1783 EXPECT_EQ(WebInputEvent::MouseWheel, ack_handler_->ack_event_type());
1792 1784
1793 // Verify we sent #3. 1785 // Verify we sent #3 (with #5 coalesced in).
1794 ASSERT_EQ(1U, process_->sink().message_count()); 1786 ASSERT_EQ(1U, process_->sink().message_count());
1795 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); 1787 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
1796 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); 1788 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
1797 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); 1789 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
1798 EXPECT_EQ(0, wheel_event->deltaX); 1790 EXPECT_EQ(2, wheel_event->deltaX);
1799 EXPECT_EQ(PinchScaleToWheelDelta(1.5f), wheel_event->deltaY); 1791 EXPECT_EQ(PinchScaleToWheelDelta(1.5f), wheel_event->deltaY);
1800 EXPECT_EQ(mod, wheel_event->modifiers); 1792 EXPECT_EQ(mod, wheel_event->modifiers);
1801 EXPECT_FALSE(wheel_event->canScroll);
1802 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1793 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1803 1794
1804
1805 // Send ack for #3. 1795 // Send ack for #3.
1806 SendInputEventACK(WebInputEvent::MouseWheel, 1796 SendInputEventACK(WebInputEvent::MouseWheel,
1807 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1797 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1808 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1798 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1809 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); 1799 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type());
1810 1800
1811 // Verify we sent #5 with #6 coalesced into it.
1812 ASSERT_EQ(1U, process_->sink().message_count());
1813 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
1814 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
1815 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
1816 EXPECT_EQ(2, wheel_event->deltaX);
1817 EXPECT_EQ(3, wheel_event->deltaY);
1818 EXPECT_EQ(mod, wheel_event->modifiers);
1819 EXPECT_TRUE(wheel_event->canScroll);
1820 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1821
1822 // Send ack for #5.
1823 SendInputEventACK(WebInputEvent::MouseWheel,
1824 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1825 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1826 EXPECT_EQ(WebInputEvent::MouseWheel, ack_handler_->ack_event_type());
1827
1828 // Verify we sent #4. 1801 // Verify we sent #4.
1829 ASSERT_EQ(1U, process_->sink().message_count()); 1802 ASSERT_EQ(1U, process_->sink().message_count());
1830 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0)); 1803 input_event = GetInputEventFromMessage(*process_->sink().GetMessageAt(0));
1831 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type); 1804 ASSERT_EQ(WebInputEvent::MouseWheel, input_event->type);
1832 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event); 1805 wheel_event = static_cast<const WebMouseWheelEvent*>(input_event);
1833 EXPECT_EQ(0, wheel_event->deltaX); 1806 EXPECT_EQ(0, wheel_event->deltaX);
1834 EXPECT_FLOAT_EQ(PinchScaleToWheelDelta(1.2f), wheel_event->deltaY); 1807 EXPECT_FLOAT_EQ(PinchScaleToWheelDelta(1.2f), wheel_event->deltaY);
1835 EXPECT_EQ(mod, wheel_event->modifiers); 1808 EXPECT_EQ(mod, wheel_event->modifiers);
1836 EXPECT_FALSE(wheel_event->canScroll);
1837 EXPECT_EQ(1U, GetSentMessageCountAndResetSink()); 1809 EXPECT_EQ(1U, GetSentMessageCountAndResetSink());
1838 1810
1839 // Send ack for #4. 1811 // Send ack for #4.
1840 SendInputEventACK(WebInputEvent::MouseWheel, 1812 SendInputEventACK(WebInputEvent::MouseWheel,
1841 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 1813 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
1842 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount()); 1814 EXPECT_EQ(1U, ack_handler_->GetAndResetAckCount());
1843 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type()); 1815 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, ack_handler_->ack_event_type());
1844 } 1816 }
1845 1817
1846 // Test proper handling of touchpad Gesture{Pinch,Scroll}Update sequences. 1818 // Test proper handling of touchpad Gesture{Pinch,Scroll}Update sequences.
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1927 client_overscroll = client_->GetAndResetOverscroll(); 1899 client_overscroll = client_->GetAndResetOverscroll();
1928 EXPECT_EQ(wheel_overscroll.accumulated_overscroll, 1900 EXPECT_EQ(wheel_overscroll.accumulated_overscroll,
1929 client_overscroll.accumulated_overscroll); 1901 client_overscroll.accumulated_overscroll);
1930 EXPECT_EQ(wheel_overscroll.latest_overscroll_delta, 1902 EXPECT_EQ(wheel_overscroll.latest_overscroll_delta,
1931 client_overscroll.latest_overscroll_delta); 1903 client_overscroll.latest_overscroll_delta);
1932 EXPECT_EQ(wheel_overscroll.current_fling_velocity, 1904 EXPECT_EQ(wheel_overscroll.current_fling_velocity,
1933 client_overscroll.current_fling_velocity); 1905 client_overscroll.current_fling_velocity);
1934 } 1906 }
1935 1907
1936 } // namespace content 1908 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698