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

Side by Side Diff: third_party/WebKit/public/platform/WebInputEvent.h

Issue 2497033002: Break apart WebGestureEvent from WebInputEvent. (Closed)
Patch Set: Rebase Created 4 years, 1 month 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 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 14 matching lines...) Expand all
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #ifndef WebInputEvent_h 31 #ifndef WebInputEvent_h
32 #define WebInputEvent_h 32 #define WebInputEvent_h
33 33
34 #include "WebCommon.h" 34 #include "WebCommon.h"
35 #include "WebGestureDevice.h"
36 #include "WebPointerProperties.h" 35 #include "WebPointerProperties.h"
37 #include "WebRect.h" 36 #include "WebRect.h"
38 #include "WebTouchPoint.h" 37 #include "WebTouchPoint.h"
39 38
40 #include <string.h> 39 #include <string.h>
41 40
42 namespace blink { 41 namespace blink {
43 42
44 // The classes defined in this file are intended to be used with 43 // The classes defined in this file are intended to be used with
45 // WebWidget's handleInputEvent method. These event types are cross- 44 // WebWidget's handleInputEvent method. These event types are cross-
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 // longer. 325 // longer.
327 WebUChar text[textLengthCap]; 326 WebUChar text[textLengthCap];
328 WebUChar unmodifiedText[textLengthCap]; 327 WebUChar unmodifiedText[textLengthCap];
329 328
330 WebKeyboardEvent() 329 WebKeyboardEvent()
331 : WebInputEvent(sizeof(WebKeyboardEvent)), 330 : WebInputEvent(sizeof(WebKeyboardEvent)),
332 windowsKeyCode(0), 331 windowsKeyCode(0),
333 nativeKeyCode(0), 332 nativeKeyCode(0),
334 isSystemKey(false), 333 isSystemKey(false),
335 isBrowserShortcut(false) { 334 isBrowserShortcut(false) {
336 memset(&text, 0, sizeof(text));
337 memset(&unmodifiedText, 0, sizeof(unmodifiedText));
338 } 335 }
339 336
340 // Please refer to bug http://b/issue?id=961192, which talks about Webkit 337 // Please refer to bug http://b/issue?id=961192, which talks about Webkit
341 // keyboard event handling changes. It also mentions the list of keys 338 // keyboard event handling changes. It also mentions the list of keys
342 // which don't have associated character events. 339 // which don't have associated character events.
343 bool isCharacterKey() const { 340 bool isCharacterKey() const {
344 // TODO(dtapuska): Determine if we can remove this method and just 341 // TODO(dtapuska): Determine if we can remove this method and just
345 // not actually generate events for these instead of filtering them out. 342 // not actually generate events for these instead of filtering them out.
346 switch (windowsKeyCode) { 343 switch (windowsKeyCode) {
347 case 0x08: // VK_BACK 344 case 0x08: // VK_BACK
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 accelerationRatioY(1.0f), 450 accelerationRatioY(1.0f),
454 resendingPluginId(-1), 451 resendingPluginId(-1),
455 phase(PhaseNone), 452 phase(PhaseNone),
456 momentumPhase(PhaseNone), 453 momentumPhase(PhaseNone),
457 scrollByPage(false), 454 scrollByPage(false),
458 hasPreciseScrollingDeltas(false), 455 hasPreciseScrollingDeltas(false),
459 railsMode(RailsModeFree), 456 railsMode(RailsModeFree),
460 dispatchType(Blocking) {} 457 dispatchType(Blocking) {}
461 }; 458 };
462 459
463 // WebGestureEvent ---------------------------------------------------------
464
465 class WebGestureEvent : public WebInputEvent {
466 public:
467 enum ScrollUnits {
468 PrecisePixels = 0, // generated by high precision devices.
469 Pixels, // large pixel jump duration; should animate to delta.
470 Page // page (visible viewport) based scrolling.
471 };
472
473 enum InertialPhaseState {
474 UnknownMomentumPhase = 0, // No phase information.
475 NonMomentumPhase, // Regular scrolling phase.
476 MomentumPhase, // Momentum phase.
477 };
478
479 int x;
480 int y;
481 int globalX;
482 int globalY;
483 WebGestureDevice sourceDevice;
484
485 // If the WebGestureEvent has sourceDevice=WebGestureDeviceTouchscreen, this
486 // field contains the unique identifier for the touch event that released
487 // this event at TouchDispositionGestureFilter. If the WebGestureEvents was
488 // not released through a touch event (e.g. timer-released gesture events or
489 // gesture events with sourceDevice!=WebGestureDeviceTouchscreen), the field
490 // contains 0. See crbug.com/618738.
491 uint32_t uniqueTouchEventId;
492
493 // This field exists to allow BrowserPlugin to mark GestureScroll events as
494 // 'resent' to handle the case where an event is not consumed when first
495 // encountered; it should be handled differently by the plugin when it is
496 // sent for thesecond time. No code within Blink touches this, other than to
497 // plumb it through event conversions.
498 int resendingPluginId;
499
500 union {
501 // Tap information must be set for GestureTap, GestureTapUnconfirmed,
502 // and GestureDoubleTap events.
503 struct {
504 int tapCount;
505 float width;
506 float height;
507 } tap;
508
509 struct {
510 float width;
511 float height;
512 } tapDown;
513
514 struct {
515 float width;
516 float height;
517 } showPress;
518
519 struct {
520 float width;
521 float height;
522 } longPress;
523
524 struct {
525 float firstFingerWidth;
526 float firstFingerHeight;
527 } twoFingerTap;
528
529 struct {
530 // Initial motion that triggered the scroll.
531 // May be redundant with deltaX/deltaY in the first scrollUpdate.
532 float deltaXHint;
533 float deltaYHint;
534 // Default initialized to ScrollUnits::PrecisePixels.
535 ScrollUnits deltaHintUnits;
536 // If true, this event will skip hit testing to find a scroll
537 // target and instead just scroll the viewport.
538 bool targetViewport;
539 // The state of inertial phase scrolling. OSX has unique phases for normal
540 // and momentum scroll events. Should always be UnknownMomentumPhase for
541 // touch based input as it generates GestureFlingStart instead.
542 InertialPhaseState inertialPhase;
543 // True if this event was synthesized in order to force a hit test;
544 // avoiding scroll latching behavior until crbug.com/526463 is fully
545 // implemented.
546 bool synthetic;
547
548 // number of pointers down.
549 int pointerCount;
550 } scrollBegin;
551
552 struct {
553 float deltaX;
554 float deltaY;
555 float velocityX;
556 float velocityY;
557 // Whether any previous GestureScrollUpdate in the current scroll
558 // sequence was suppressed (e.g., the causal touchmove was
559 // preventDefault'ed). This bit is particularly useful for
560 // determining whether the observed scroll update sequence captures
561 // the entirety of the generative motion.
562 bool previousUpdateInSequencePrevented;
563 bool preventPropagation;
564 InertialPhaseState inertialPhase;
565 // Default initialized to ScrollUnits::PrecisePixels.
566 ScrollUnits deltaUnits;
567 } scrollUpdate;
568
569 struct {
570 // The original delta units the scrollBegin and scrollUpdates
571 // were sent as.
572 ScrollUnits deltaUnits;
573 // The state of inertial phase scrolling. OSX has unique phases for normal
574 // and momentum scroll events. Should always be UnknownMomentumPhase for
575 // touch based input as it generates GestureFlingStart instead.
576 InertialPhaseState inertialPhase;
577 // True if this event was synthesized in order to generate the proper
578 // GSB/GSU/GSE matching sequences. This is a temporary so that a future
579 // GSB will generate a hit test so latching behavior is avoided
580 // until crbug.com/526463 is fully implemented.
581 bool synthetic;
582 } scrollEnd;
583
584 struct {
585 float velocityX;
586 float velocityY;
587 // If true, this event will skip hit testing to find a scroll
588 // target and instead just scroll the viewport.
589 bool targetViewport;
590 } flingStart;
591
592 struct {
593 // If set to true, don't treat flingCancel
594 // as a part of fling boost events sequence.
595 bool preventBoosting;
596 } flingCancel;
597
598 struct {
599 bool zoomDisabled;
600 float scale;
601 } pinchUpdate;
602 } data;
603
604 WebGestureEvent()
605 : WebInputEvent(sizeof(WebGestureEvent)),
606 x(0),
607 y(0),
608 globalX(0),
609 globalY(0),
610 sourceDevice(WebGestureDeviceUninitialized),
611 resendingPluginId(-1) {
612 memset(&data, 0, sizeof(data));
613 }
614 };
615 460
616 // WebTouchEvent -------------------------------------------------------------- 461 // WebTouchEvent --------------------------------------------------------------
617 462
618 // TODO(e_hakkinen): Replace with WebPointerEvent. crbug.com/508283 463 // TODO(e_hakkinen): Replace with WebPointerEvent. crbug.com/508283
619 class WebTouchEvent : public WebInputEvent { 464 class WebTouchEvent : public WebInputEvent {
620 public: 465 public:
621 // Maximum number of simultaneous touches supported on 466 // Maximum number of simultaneous touches supported on
622 // Ash/Aura. 467 // Ash/Aura.
623 enum { kTouchesLengthCap = 16 }; 468 enum { kTouchesLengthCap = 16 };
624 469
(...skipping 25 matching lines...) Expand all
650 movedBeyondSlopRegion(false), 495 movedBeyondSlopRegion(false),
651 touchStartOrFirstTouchMove(false), 496 touchStartOrFirstTouchMove(false),
652 uniqueTouchEventId(0) {} 497 uniqueTouchEventId(0) {}
653 }; 498 };
654 499
655 #pragma pack(pop) 500 #pragma pack(pop)
656 501
657 } // namespace blink 502 } // namespace blink
658 503
659 #endif 504 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/public/platform/WebGestureEvent.h ('k') | third_party/WebKit/public/web/WebActiveWheelFlingParameters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698