Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 51 // properly and don't have paddings/gaps, otherwise memory check tools | 51 // properly and don't have paddings/gaps, otherwise memory check tools |
| 52 // like Valgrind will complain about uninitialized memory usage when | 52 // like Valgrind will complain about uninitialized memory usage when |
| 53 // transferring these classes over the wire. | 53 // transferring these classes over the wire. |
| 54 | 54 |
| 55 #pragma pack(push, 4) | 55 #pragma pack(push, 4) |
| 56 | 56 |
| 57 // WebInputEvent -------------------------------------------------------------- | 57 // WebInputEvent -------------------------------------------------------------- |
| 58 | 58 |
| 59 class WebInputEvent { | 59 class WebInputEvent { |
| 60 public: | 60 public: |
| 61 WebInputEvent(unsigned sizeParam = sizeof(WebInputEvent)) | |
| 62 { | |
| 63 memset(this, 0, sizeParam); | |
| 64 timeStampSeconds = 0.0; | |
| 65 size = sizeParam; | |
| 66 type = Undefined; | |
| 67 modifiers = 0; | |
| 68 } | |
| 69 | |
| 70 // When we use an input method (or an input method editor), we receive | 61 // When we use an input method (or an input method editor), we receive |
| 71 // two events for a keypress. The former event is a keydown, which | 62 // two events for a keypress. The former event is a keydown, which |
| 72 // provides a keycode, and the latter is a textinput, which provides | 63 // provides a keycode, and the latter is a textinput, which provides |
| 73 // a character processed by an input method. (The mapping from a | 64 // a character processed by an input method. (The mapping from a |
| 74 // keycode to a character code is not trivial for non-English | 65 // keycode to a character code is not trivial for non-English |
| 75 // keyboards.) | 66 // keyboards.) |
| 76 // To support input methods, Safari sends keydown events to WebKit for | 67 // To support input methods, Safari sends keydown events to WebKit for |
| 77 // filtering. WebKit sends filtered keydown events back to Safari, | 68 // filtering. WebKit sends filtered keydown events back to Safari, |
| 78 // which sends them to input methods. | 69 // which sends them to input methods. |
| 79 // Unfortunately, it is hard to apply this design to Chrome because of | 70 // Unfortunately, it is hard to apply this design to Chrome because of |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 217 || type == MouseUp | 208 || type == MouseUp |
| 218 || type == TouchStart | 209 || type == TouchStart |
| 219 || type == TouchEnd; | 210 || type == TouchEnd; |
| 220 } | 211 } |
| 221 | 212 |
| 222 // Returns true if the WebInputEvent is a gesture event. | 213 // Returns true if the WebInputEvent is a gesture event. |
| 223 static bool isGestureEventType(int type) | 214 static bool isGestureEventType(int type) |
| 224 { | 215 { |
| 225 return GestureTypeFirst <= type && type <= GestureTypeLast; | 216 return GestureTypeFirst <= type && type <= GestureTypeLast; |
| 226 } | 217 } |
| 218 | |
| 219 protected: | |
| 220 explicit WebInputEvent(unsigned sizeParam) | |
| 221 { | |
| 222 memset(this, 0, sizeParam); | |
| 223 timeStampSeconds = 0.0; | |
| 224 size = sizeParam; | |
| 225 type = Undefined; | |
| 226 modifiers = 0; | |
| 227 } | |
| 228 | |
| 229 private: | |
| 230 WebInputEvent(); | |
|
tkent
2014/04/02 00:18:52
Is this necessary?
jdduke (slow)
2014/04/02 20:21:00
Nope, removed.
| |
| 227 }; | 231 }; |
| 228 | 232 |
| 229 // WebKeyboardEvent ----------------------------------------------------------- | 233 // WebKeyboardEvent ----------------------------------------------------------- |
| 230 | 234 |
| 231 class WebKeyboardEvent : public WebInputEvent { | 235 class WebKeyboardEvent : public WebInputEvent { |
| 232 public: | 236 public: |
| 233 // Caps on string lengths so we can make them static arrays and keep | 237 // Caps on string lengths so we can make them static arrays and keep |
| 234 // them PODs. | 238 // them PODs. |
| 235 static const size_t textLengthCap = 4; | 239 static const size_t textLengthCap = 4; |
| 236 | 240 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 267 // shift). This is useful for working out shortcut keys. Linux and | 271 // shift). This is useful for working out shortcut keys. Linux and |
| 268 // Windows guarantee one character per event. The Mac does not, but in | 272 // Windows guarantee one character per event. The Mac does not, but in |
| 269 // reality that's all it ever gives. We're generous, and cap it a bit | 273 // reality that's all it ever gives. We're generous, and cap it a bit |
| 270 // longer. | 274 // longer. |
| 271 WebUChar text[textLengthCap]; | 275 WebUChar text[textLengthCap]; |
| 272 WebUChar unmodifiedText[textLengthCap]; | 276 WebUChar unmodifiedText[textLengthCap]; |
| 273 | 277 |
| 274 // This is a string identifying the key pressed. | 278 // This is a string identifying the key pressed. |
| 275 char keyIdentifier[keyIdentifierLengthCap]; | 279 char keyIdentifier[keyIdentifierLengthCap]; |
| 276 | 280 |
| 277 WebKeyboardEvent(unsigned sizeParam = sizeof(WebKeyboardEvent)) | 281 WebKeyboardEvent() |
| 278 : WebInputEvent(sizeParam) | 282 : WebInputEvent(sizeof(WebKeyboardEvent)) |
| 279 , windowsKeyCode(0) | 283 , windowsKeyCode(0) |
| 280 , nativeKeyCode(0) | 284 , nativeKeyCode(0) |
| 281 , isSystemKey(false) | 285 , isSystemKey(false) |
| 282 { | 286 { |
| 283 memset(&text, 0, sizeof(text)); | 287 memset(&text, 0, sizeof(text)); |
| 284 memset(&unmodifiedText, 0, sizeof(unmodifiedText)); | 288 memset(&unmodifiedText, 0, sizeof(unmodifiedText)); |
| 285 memset(&keyIdentifier, 0, sizeof(keyIdentifier)); | 289 memset(&keyIdentifier, 0, sizeof(keyIdentifier)); |
| 286 } | 290 } |
| 287 | 291 |
| 288 // Sets keyIdentifier based on the value of windowsKeyCode. This is | 292 // Sets keyIdentifier based on the value of windowsKeyCode. This is |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 308 int x; | 312 int x; |
| 309 int y; | 313 int y; |
| 310 int windowX; | 314 int windowX; |
| 311 int windowY; | 315 int windowY; |
| 312 int globalX; | 316 int globalX; |
| 313 int globalY; | 317 int globalY; |
| 314 int movementX; | 318 int movementX; |
| 315 int movementY; | 319 int movementY; |
| 316 int clickCount; | 320 int clickCount; |
| 317 | 321 |
| 318 WebMouseEvent(unsigned sizeParam = sizeof(WebMouseEvent)) | 322 WebMouseEvent() |
| 323 : WebInputEvent(sizeof(WebMouseEvent)) | |
| 324 , button(ButtonNone) | |
| 325 , x(0) | |
| 326 , y(0) | |
| 327 , windowX(0) | |
| 328 , windowY(0) | |
| 329 , globalX(0) | |
| 330 , globalY(0) | |
| 331 , movementX(0) | |
| 332 , movementY(0) | |
| 333 , clickCount(0) | |
| 334 { | |
| 335 } | |
| 336 | |
| 337 protected: | |
| 338 explicit WebMouseEvent(unsigned sizeParam) | |
| 319 : WebInputEvent(sizeParam) | 339 : WebInputEvent(sizeParam) |
| 320 , button(ButtonNone) | 340 , button(ButtonNone) |
| 321 , x(0) | 341 , x(0) |
| 322 , y(0) | 342 , y(0) |
| 323 , windowX(0) | 343 , windowX(0) |
| 324 , windowY(0) | 344 , windowY(0) |
| 325 , globalX(0) | 345 , globalX(0) |
| 326 , globalY(0) | 346 , globalY(0) |
| 327 , movementX(0) | 347 , movementX(0) |
| 328 , movementY(0) | 348 , movementY(0) |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 372 // an alternate effect. The common case is that a scroll in the left or | 392 // an alternate effect. The common case is that a scroll in the left or |
| 373 // right directions causes a back or forwards navigation, respectively. | 393 // right directions causes a back or forwards navigation, respectively. |
| 374 // | 394 // |
| 375 // These flags prevent rubber banding from starting in a given direction, | 395 // These flags prevent rubber banding from starting in a given direction, |
| 376 // but have no effect on an ongoing rubber banding. A rubber banding that | 396 // but have no effect on an ongoing rubber banding. A rubber banding that |
| 377 // started in the vertical direction is allowed to continue in the right | 397 // started in the vertical direction is allowed to continue in the right |
| 378 // direction, even if canRubberbandRight is 0. | 398 // direction, even if canRubberbandRight is 0. |
| 379 int canRubberbandLeft; | 399 int canRubberbandLeft; |
| 380 int canRubberbandRight; | 400 int canRubberbandRight; |
| 381 | 401 |
| 382 WebMouseWheelEvent(unsigned sizeParam = sizeof(WebMouseWheelEvent)) | 402 WebMouseWheelEvent() |
| 383 : WebMouseEvent(sizeParam) | 403 : WebMouseEvent(sizeof(WebMouseWheelEvent)) |
| 384 , deltaX(0.0f) | 404 , deltaX(0.0f) |
| 385 , deltaY(0.0f) | 405 , deltaY(0.0f) |
| 386 , wheelTicksX(0.0f) | 406 , wheelTicksX(0.0f) |
| 387 , wheelTicksY(0.0f) | 407 , wheelTicksY(0.0f) |
| 388 , accelerationRatioX(1.0f) | 408 , accelerationRatioX(1.0f) |
| 389 , accelerationRatioY(1.0f) | 409 , accelerationRatioY(1.0f) |
| 390 , scrollByPage(false) | 410 , scrollByPage(false) |
| 391 , hasPreciseScrollingDeltas(false) | 411 , hasPreciseScrollingDeltas(false) |
| 392 , phase(PhaseNone) | 412 , phase(PhaseNone) |
| 393 , momentumPhase(PhaseNone) | 413 , momentumPhase(PhaseNone) |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 458 struct { | 478 struct { |
| 459 float velocityX; | 479 float velocityX; |
| 460 float velocityY; | 480 float velocityY; |
| 461 } flingStart; | 481 } flingStart; |
| 462 | 482 |
| 463 struct { | 483 struct { |
| 464 float scale; | 484 float scale; |
| 465 } pinchUpdate; | 485 } pinchUpdate; |
| 466 } data; | 486 } data; |
| 467 | 487 |
| 468 WebGestureEvent(unsigned sizeParam = sizeof(WebGestureEvent)) | 488 WebGestureEvent() |
| 469 : WebInputEvent(sizeParam) | 489 : WebInputEvent(sizeof(WebGestureEvent)) |
| 470 , x(0) | 490 , x(0) |
| 471 , y(0) | 491 , y(0) |
| 472 , globalX(0) | 492 , globalX(0) |
| 473 , globalY(0) | 493 , globalY(0) |
| 474 { | 494 { |
| 475 memset(&data, 0, sizeof(data)); | 495 memset(&data, 0, sizeof(data)); |
| 476 } | 496 } |
| 477 }; | 497 }; |
| 478 | 498 |
| 479 // WebTouchEvent -------------------------------------------------------------- | 499 // WebTouchEvent -------------------------------------------------------------- |
| 480 | 500 |
| 481 class WebTouchEvent : public WebInputEvent { | 501 class WebTouchEvent : public WebInputEvent { |
| 482 public: | 502 public: |
| 483 // Maximum number of simultaneous touches supported on | 503 // Maximum number of simultaneous touches supported on |
| 484 // Ash/Aura. | 504 // Ash/Aura. |
| 485 enum { touchesLengthCap = 12 }; | 505 enum { touchesLengthCap = 12 }; |
| 486 | 506 |
| 487 unsigned touchesLength; | 507 unsigned touchesLength; |
| 488 // List of all touches which are currently down. | 508 // List of all touches which are currently down. |
| 489 WebTouchPoint touches[touchesLengthCap]; | 509 WebTouchPoint touches[touchesLengthCap]; |
| 490 | 510 |
| 491 unsigned changedTouchesLength; | 511 unsigned changedTouchesLength; |
| 492 // List of all touches whose state has changed since the last WebTouchEvent | 512 // List of all touches whose state has changed since the last WebTouchEvent |
| 493 WebTouchPoint changedTouches[touchesLengthCap]; | 513 WebTouchPoint changedTouches[touchesLengthCap]; |
| 494 | 514 |
| 495 unsigned targetTouchesLength; | 515 unsigned targetTouchesLength; |
| 496 // List of all touches which are currently down and are targeting the event recipient. | 516 // List of all touches which are currently down and are targeting the event recipient. |
| 497 WebTouchPoint targetTouches[touchesLengthCap]; | 517 WebTouchPoint targetTouches[touchesLengthCap]; |
| 498 | 518 |
| 499 WebTouchEvent(unsigned sizeParam = sizeof(WebTouchEvent)) | 519 WebTouchEvent() |
| 500 : WebInputEvent(sizeParam) | 520 : WebInputEvent(sizeof(WebTouchEvent)) |
| 501 , touchesLength(0) | 521 , touchesLength(0) |
| 502 , changedTouchesLength(0) | 522 , changedTouchesLength(0) |
| 503 , targetTouchesLength(0) | 523 , targetTouchesLength(0) |
| 504 { | 524 { |
| 505 } | 525 } |
| 506 }; | 526 }; |
| 507 | 527 |
| 508 #pragma pack(pop) | 528 #pragma pack(pop) |
| 509 | 529 |
| 510 } // namespace blink | 530 } // namespace blink |
| 511 | 531 |
| 512 #endif | 532 #endif |
| OLD | NEW |