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

Side by Side Diff: components/test_runner/event_sender.cc

Issue 1989623002: Suppressed MEs for gestures from cancelled PEs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 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
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 "components/test_runner/event_sender.h" 5 #include "components/test_runner/event_sender.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 1919 matching lines...) Expand 10 before | Expand all | Expand 10 after
1930 } 1930 }
1931 1931
1932 bool EventSender::IsFlinging() const { 1932 bool EventSender::IsFlinging() const {
1933 return view()->isFlinging(); 1933 return view()->isFlinging();
1934 } 1934 }
1935 1935
1936 void EventSender::GestureScrollFirstPoint(int x, int y) { 1936 void EventSender::GestureScrollFirstPoint(int x, int y) {
1937 current_gesture_location_ = WebPoint(x, y); 1937 current_gesture_location_ = WebPoint(x, y);
1938 } 1938 }
1939 1939
1940 bool EventSender::GetMovedBeyondSlopRegionArg(gin::Arguments* args) {
1941 std::string arg;
1942 if (args->PeekNext().IsEmpty())
1943 return false;
1944
1945 if(args->PeekNext()->IsString() && args->GetNext(&arg)) {
1946 if (arg == "movedBeyondSlopRegion")
1947 return true;
1948 }
1949
1950 args->ThrowError();
1951 return false;
1952 }
1953
1954 void EventSender::TouchStart(gin::Arguments* args) { 1940 void EventSender::TouchStart(gin::Arguments* args) {
1955 SendCurrentTouchEvent(WebInputEvent::TouchStart, 1941 SendCurrentTouchEvent(WebInputEvent::TouchStart, args);
1956 GetMovedBeyondSlopRegionArg(args));
1957 } 1942 }
1958 1943
1959 void EventSender::TouchMove(gin::Arguments* args) { 1944 void EventSender::TouchMove(gin::Arguments* args) {
1960 SendCurrentTouchEvent(WebInputEvent::TouchMove, 1945 SendCurrentTouchEvent(WebInputEvent::TouchMove, args);
1961 GetMovedBeyondSlopRegionArg(args));
1962 } 1946 }
1963 1947
1964 void EventSender::TouchCancel(gin::Arguments* args) { 1948 void EventSender::TouchCancel(gin::Arguments* args) {
1965 SendCurrentTouchEvent(WebInputEvent::TouchCancel, 1949 SendCurrentTouchEvent(WebInputEvent::TouchCancel, args);
1966 GetMovedBeyondSlopRegionArg(args));
1967 } 1950 }
1968 1951
1969 void EventSender::TouchEnd(gin::Arguments* args) { 1952 void EventSender::TouchEnd(gin::Arguments* args) {
1970 SendCurrentTouchEvent(WebInputEvent::TouchEnd, 1953 SendCurrentTouchEvent(WebInputEvent::TouchEnd, args);
1971 GetMovedBeyondSlopRegionArg(args));
1972 } 1954 }
1973 1955
1974 void EventSender::NotifyStartOfTouchScroll() { 1956 void EventSender::NotifyStartOfTouchScroll() {
1975 WebTouchEvent event; 1957 WebTouchEvent event;
1976 event.type = WebInputEvent::TouchScrollStarted; 1958 event.type = WebInputEvent::TouchScrollStarted;
1977 HandleInputEventOnViewOrPopup(event); 1959 HandleInputEventOnViewOrPopup(event);
1978 } 1960 }
1979 1961
1980 void EventSender::LeapForward(int milliseconds) { 1962 void EventSender::LeapForward(int milliseconds) {
1981 if (is_drag_mode_ && 1963 if (is_drag_mode_ &&
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
2209 2191
2210 double EventSender::GetCurrentEventTimeSec() { 2192 double EventSender::GetCurrentEventTimeSec() {
2211 return (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF() + 2193 return (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF() +
2212 time_offset_ms_ / 1000.0; 2194 time_offset_ms_ / 1000.0;
2213 } 2195 }
2214 2196
2215 void EventSender::DoLeapForward(int milliseconds) { 2197 void EventSender::DoLeapForward(int milliseconds) {
2216 time_offset_ms_ += milliseconds; 2198 time_offset_ms_ += milliseconds;
2217 } 2199 }
2218 2200
2201 void EventSender::GetOptionalTouchArgs(gin::Arguments* args,
2202 bool& moved_beyond_slop_region,
2203 uint32_t& unique_touch_event_id) {
2204 moved_beyond_slop_region = false;
2205 if(!args->PeekNext().IsEmpty() && args->PeekNext()->IsString()) {
2206 std::string arg;
2207 if (args->GetNext(&arg) && arg == "movedBeyondSlopRegion")
2208 moved_beyond_slop_region = true;
2209 else
2210 args->ThrowError();
2211 }
2212
2213 unique_touch_event_id = GetUniqueTouchEventId(args);
2214 return;
2215 }
2216
2217 uint32_t EventSender::GetUniqueTouchEventId(gin::Arguments* args) {
2218 uint32_t unique_touch_event_id;
2219 if(!args->PeekNext().IsEmpty() && args->GetNext(&unique_touch_event_id))
2220 return unique_touch_event_id;
2221
2222 return 0;
2223 }
2224
2219 void EventSender::SendCurrentTouchEvent(WebInputEvent::Type type, 2225 void EventSender::SendCurrentTouchEvent(WebInputEvent::Type type,
2220 bool movedBeyondSlopRegion) { 2226 gin::Arguments* args) {
2227 bool moved_beyond_slop_region;
2228 uint32_t unique_touch_event_id;
2229 GetOptionalTouchArgs(args, moved_beyond_slop_region, unique_touch_event_id);
2230
2221 DCHECK_GT(static_cast<unsigned>(WebTouchEvent::touchesLengthCap), 2231 DCHECK_GT(static_cast<unsigned>(WebTouchEvent::touchesLengthCap),
2222 touch_points_.size()); 2232 touch_points_.size());
2223 if (force_layout_on_events_) 2233 if (force_layout_on_events_)
2224 view()->updateAllLifecyclePhases(); 2234 view()->updateAllLifecyclePhases();
2225 2235
2226 WebTouchEvent touch_event; 2236 WebTouchEvent touch_event;
2227 touch_event.type = type; 2237 touch_event.type = type;
2228 touch_event.modifiers = touch_modifiers_; 2238 touch_event.modifiers = touch_modifiers_;
2229 touch_event.dispatchType = touch_cancelable_ 2239 touch_event.dispatchType = touch_cancelable_
2230 ? WebInputEvent::Blocking 2240 ? WebInputEvent::Blocking
2231 : WebInputEvent::EventNonBlocking; 2241 : WebInputEvent::EventNonBlocking;
2232 touch_event.timeStampSeconds = GetCurrentEventTimeSec(); 2242 touch_event.timeStampSeconds = GetCurrentEventTimeSec();
2233 touch_event.movedBeyondSlopRegion = movedBeyondSlopRegion; 2243 touch_event.movedBeyondSlopRegion = moved_beyond_slop_region;
2244 touch_event.uniqueTouchEventId = unique_touch_event_id;
2234 touch_event.touchesLength = touch_points_.size(); 2245 touch_event.touchesLength = touch_points_.size();
2235 for (size_t i = 0; i < touch_points_.size(); ++i) 2246 for (size_t i = 0; i < touch_points_.size(); ++i)
2236 touch_event.touches[i] = touch_points_[i]; 2247 touch_event.touches[i] = touch_points_[i];
2237 HandleInputEventOnViewOrPopup(touch_event); 2248 HandleInputEventOnViewOrPopup(touch_event);
2238 2249
2239 for (size_t i = 0; i < touch_points_.size(); ++i) { 2250 for (size_t i = 0; i < touch_points_.size(); ++i) {
2240 WebTouchPoint* touch_point = &touch_points_[i]; 2251 WebTouchPoint* touch_point = &touch_points_[i];
2241 if (touch_point->state == WebTouchPoint::StateReleased 2252 if (touch_point->state == WebTouchPoint::StateReleased
2242 || touch_point->state == WebTouchPoint::StateCancelled) { 2253 || touch_point->state == WebTouchPoint::StateCancelled) {
2243 touch_points_.erase(touch_points_.begin() + i); 2254 touch_points_.erase(touch_points_.begin() + i);
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
2421 event.y = y; 2432 event.y = y;
2422 event.data.showPress.width = width; 2433 event.data.showPress.width = width;
2423 event.data.showPress.height = height; 2434 event.data.showPress.height = height;
2424 break; 2435 break;
2425 } 2436 }
2426 case WebInputEvent::GestureTapCancel: 2437 case WebInputEvent::GestureTapCancel:
2427 event.x = x; 2438 event.x = x;
2428 event.y = y; 2439 event.y = y;
2429 break; 2440 break;
2430 case WebInputEvent::GestureLongPress: 2441 case WebInputEvent::GestureLongPress:
2431 event.x = x;
2432 event.y = y;
2433 if (!args->PeekNext().IsEmpty()) {
2434 float width;
2435 if (!args->GetNext(&width)) {
2436 args->ThrowError();
2437 return;
2438 }
2439 event.data.longPress.width = width;
2440 if (!args->PeekNext().IsEmpty()) {
2441 float height;
2442 if (!args->GetNext(&height)) {
2443 args->ThrowError();
2444 return;
2445 }
2446 event.data.longPress.height = height;
2447 }
2448 }
2449 break;
2450 case WebInputEvent::GestureLongTap: 2442 case WebInputEvent::GestureLongTap:
2451 event.x = x; 2443 event.x = x;
2452 event.y = y; 2444 event.y = y;
2453 if (!args->PeekNext().IsEmpty()) { 2445 if (!args->PeekNext().IsEmpty()) {
2454 float width; 2446 float width;
2455 if (!args->GetNext(&width)) { 2447 if (!args->GetNext(&width)) {
2456 args->ThrowError(); 2448 args->ThrowError();
2457 return; 2449 return;
2458 } 2450 }
2459 event.data.longPress.width = width; 2451 event.data.longPress.width = width;
(...skipping 24 matching lines...) Expand all
2484 return; 2476 return;
2485 } 2477 }
2486 event.data.twoFingerTap.firstFingerHeight = first_finger_height; 2478 event.data.twoFingerTap.firstFingerHeight = first_finger_height;
2487 } 2479 }
2488 } 2480 }
2489 break; 2481 break;
2490 default: 2482 default:
2491 NOTREACHED(); 2483 NOTREACHED();
2492 } 2484 }
2493 2485
2486 event.uniqueTouchEventId = GetUniqueTouchEventId(args);
2487
2494 event.globalX = event.x; 2488 event.globalX = event.x;
2495 event.globalY = event.y; 2489 event.globalY = event.y;
2496 event.timeStampSeconds = GetCurrentEventTimeSec(); 2490 event.timeStampSeconds = GetCurrentEventTimeSec();
2497 2491
2498 if (force_layout_on_events_) 2492 if (force_layout_on_events_)
2499 view()->updateAllLifecyclePhases(); 2493 view()->updateAllLifecyclePhases();
2500 2494
2501 WebInputEventResult result = HandleInputEventOnViewOrPopup(event); 2495 WebInputEventResult result = HandleInputEventOnViewOrPopup(event);
2502 2496
2503 // Long press might start a drag drop session. Complete it if so. 2497 // Long press might start a drag drop session. Complete it if so.
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
2820 2814
2821 const blink::WebView* EventSender::view() const { 2815 const blink::WebView* EventSender::view() const {
2822 return web_test_proxy_base_->web_view(); 2816 return web_test_proxy_base_->web_view();
2823 } 2817 }
2824 2818
2825 blink::WebView* EventSender::view() { 2819 blink::WebView* EventSender::view() {
2826 return web_test_proxy_base_->web_view(); 2820 return web_test_proxy_base_->web_view();
2827 } 2821 }
2828 2822
2829 } // namespace test_runner 2823 } // namespace test_runner
OLDNEW
« no previous file with comments | « components/test_runner/event_sender.h ('k') | content/browser/renderer_host/input/web_input_event_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698