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

Side by Side Diff: ui/chromeos/touch_exploration_controller.cc

Issue 1557683002: Convert Pass()→std::move() in //ui (CrOS edition) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 "ui/chromeos/touch_exploration_controller.h" 5 #include "ui/chromeos/touch_exploration_controller.h"
6 6
7 #include <utility>
8
7 #include "base/logging.h" 9 #include "base/logging.h"
8 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
9 #include "base/time/default_tick_clock.h" 11 #include "base/time/default_tick_clock.h"
10 #include "ui/aura/client/cursor_client.h" 12 #include "ui/aura/client/cursor_client.h"
11 #include "ui/aura/window.h" 13 #include "ui/aura/window.h"
12 #include "ui/aura/window_event_dispatcher.h" 14 #include "ui/aura/window_event_dispatcher.h"
13 #include "ui/aura/window_tree_host.h" 15 #include "ui/aura/window_tree_host.h"
14 #include "ui/events/event.h" 16 #include "ui/events/event.h"
15 #include "ui/events/event_processor.h" 17 #include "ui/events/event_processor.h"
16 #include "ui/events/event_utils.h" 18 #include "ui/events/event_utils.h"
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 touch_press->set_location_f(last_touch_exploration_->location_f()); 373 touch_press->set_location_f(last_touch_exploration_->location_f());
372 touch_press->set_root_location_f(last_touch_exploration_->location_f()); 374 touch_press->set_root_location_f(last_touch_exploration_->location_f());
373 DispatchEvent(touch_press.get()); 375 DispatchEvent(touch_press.get());
374 376
375 scoped_ptr<ui::TouchEvent> new_event( 377 scoped_ptr<ui::TouchEvent> new_event(
376 new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(), 378 new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(),
377 initial_press_->touch_id(), event.time_stamp())); 379 initial_press_->touch_id(), event.time_stamp()));
378 new_event->set_location_f(last_touch_exploration_->location_f()); 380 new_event->set_location_f(last_touch_exploration_->location_f());
379 new_event->set_root_location_f(last_touch_exploration_->location_f()); 381 new_event->set_root_location_f(last_touch_exploration_->location_f());
380 new_event->set_flags(event.flags()); 382 new_event->set_flags(event.flags());
381 *rewritten_event = new_event.Pass(); 383 *rewritten_event = std::move(new_event);
382 SET_STATE(NO_FINGERS_DOWN); 384 SET_STATE(NO_FINGERS_DOWN);
383 return ui::EVENT_REWRITE_REWRITTEN; 385 return ui::EVENT_REWRITE_REWRITTEN;
384 } 386 }
385 NOTREACHED(); 387 NOTREACHED();
386 return ui::EVENT_REWRITE_CONTINUE; 388 return ui::EVENT_REWRITE_CONTINUE;
387 } 389 }
388 390
389 ui::EventRewriteStatus TouchExplorationController::InTouchReleasePending( 391 ui::EventRewriteStatus TouchExplorationController::InTouchReleasePending(
390 const ui::TouchEvent& event, 392 const ui::TouchEvent& event,
391 scoped_ptr<ui::Event>* rewritten_event) { 393 scoped_ptr<ui::Event>* rewritten_event) {
392 const ui::EventType type = event.type(); 394 const ui::EventType type = event.type();
393 if (type == ui::ET_TOUCH_PRESSED || type == ui::ET_TOUCH_MOVED) { 395 if (type == ui::ET_TOUCH_PRESSED || type == ui::ET_TOUCH_MOVED) {
394 return ui::EVENT_REWRITE_DISCARD; 396 return ui::EVENT_REWRITE_DISCARD;
395 } else if (type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) { 397 } else if (type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) {
396 if (current_touch_ids_.size() != 0) 398 if (current_touch_ids_.size() != 0)
397 return EVENT_REWRITE_DISCARD; 399 return EVENT_REWRITE_DISCARD;
398 400
399 scoped_ptr<ui::TouchEvent> new_event( 401 scoped_ptr<ui::TouchEvent> new_event(
400 new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(), 402 new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(),
401 initial_press_->touch_id(), event.time_stamp())); 403 initial_press_->touch_id(), event.time_stamp()));
402 new_event->set_location_f(last_touch_exploration_->location_f()); 404 new_event->set_location_f(last_touch_exploration_->location_f());
403 new_event->set_root_location_f(last_touch_exploration_->location_f()); 405 new_event->set_root_location_f(last_touch_exploration_->location_f());
404 new_event->set_flags(event.flags()); 406 new_event->set_flags(event.flags());
405 *rewritten_event = new_event.Pass(); 407 *rewritten_event = std::move(new_event);
406 SET_STATE(NO_FINGERS_DOWN); 408 SET_STATE(NO_FINGERS_DOWN);
407 return ui::EVENT_REWRITE_REWRITTEN; 409 return ui::EVENT_REWRITE_REWRITTEN;
408 } 410 }
409 NOTREACHED(); 411 NOTREACHED();
410 return ui::EVENT_REWRITE_CONTINUE; 412 return ui::EVENT_REWRITE_CONTINUE;
411 } 413 }
412 414
413 ui::EventRewriteStatus TouchExplorationController::InTouchExploration( 415 ui::EventRewriteStatus TouchExplorationController::InTouchExploration(
414 const ui::TouchEvent& event, 416 const ui::TouchEvent& event,
415 scoped_ptr<ui::Event>* rewritten_event) { 417 scoped_ptr<ui::Event>* rewritten_event) {
416 const ui::EventType type = event.type(); 418 const ui::EventType type = event.type();
417 if (type == ui::ET_TOUCH_PRESSED) { 419 if (type == ui::ET_TOUCH_PRESSED) {
418 // Handle split-tap. 420 // Handle split-tap.
419 initial_press_.reset(new TouchEvent(event)); 421 initial_press_.reset(new TouchEvent(event));
420 tap_timer_.Stop(); 422 tap_timer_.Stop();
421 scoped_ptr<ui::TouchEvent> new_event( 423 scoped_ptr<ui::TouchEvent> new_event(
422 new ui::TouchEvent(ui::ET_TOUCH_PRESSED, gfx::Point(), event.touch_id(), 424 new ui::TouchEvent(ui::ET_TOUCH_PRESSED, gfx::Point(), event.touch_id(),
423 event.time_stamp())); 425 event.time_stamp()));
424 new_event->set_location_f(last_touch_exploration_->location_f()); 426 new_event->set_location_f(last_touch_exploration_->location_f());
425 new_event->set_root_location_f(last_touch_exploration_->location_f()); 427 new_event->set_root_location_f(last_touch_exploration_->location_f());
426 new_event->set_flags(event.flags()); 428 new_event->set_flags(event.flags());
427 *rewritten_event = new_event.Pass(); 429 *rewritten_event = std::move(new_event);
428 SET_STATE(TOUCH_EXPLORE_SECOND_PRESS); 430 SET_STATE(TOUCH_EXPLORE_SECOND_PRESS);
429 return ui::EVENT_REWRITE_REWRITTEN; 431 return ui::EVENT_REWRITE_REWRITTEN;
430 } else if (type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) { 432 } else if (type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) {
431 initial_press_.reset(new TouchEvent(event)); 433 initial_press_.reset(new TouchEvent(event));
432 StartTapTimer(); 434 StartTapTimer();
433 SET_STATE(TOUCH_EXPLORE_RELEASED); 435 SET_STATE(TOUCH_EXPLORE_RELEASED);
434 } else if (type != ui::ET_TOUCH_MOVED) { 436 } else if (type != ui::ET_TOUCH_MOVED) {
435 NOTREACHED(); 437 NOTREACHED();
436 return ui::EVENT_REWRITE_CONTINUE; 438 return ui::EVENT_REWRITE_CONTINUE;
437 } 439 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 } 476 }
475 SET_STATE(WAIT_FOR_NO_FINGERS); 477 SET_STATE(WAIT_FOR_NO_FINGERS);
476 return ui::EVENT_REWRITE_DISCARD; 478 return ui::EVENT_REWRITE_DISCARD;
477 } 479 }
478 480
479 scoped_ptr<ui::TouchEvent> new_event(new ui::TouchEvent( 481 scoped_ptr<ui::TouchEvent> new_event(new ui::TouchEvent(
480 type, gfx::Point(), event.touch_id(), event.time_stamp())); 482 type, gfx::Point(), event.touch_id(), event.time_stamp()));
481 new_event->set_location_f(event.location_f()); 483 new_event->set_location_f(event.location_f());
482 new_event->set_root_location_f(event.location_f()); 484 new_event->set_root_location_f(event.location_f());
483 new_event->set_flags(event.flags()); 485 new_event->set_flags(event.flags());
484 *rewritten_event = new_event.Pass(); 486 *rewritten_event = std::move(new_event);
485 487
486 if (current_touch_ids_.size() == 0) 488 if (current_touch_ids_.size() == 0)
487 SET_STATE(NO_FINGERS_DOWN); 489 SET_STATE(NO_FINGERS_DOWN);
488 490
489 return ui::EVENT_REWRITE_REWRITTEN; 491 return ui::EVENT_REWRITE_REWRITTEN;
490 } 492 }
491 493
492 ui::EventRewriteStatus TouchExplorationController::InOneFingerPassthrough( 494 ui::EventRewriteStatus TouchExplorationController::InOneFingerPassthrough(
493 const ui::TouchEvent& event, 495 const ui::TouchEvent& event,
494 scoped_ptr<ui::Event>* rewritten_event) { 496 scoped_ptr<ui::Event>* rewritten_event) {
495 if (event.touch_id() != initial_press_->touch_id()) { 497 if (event.touch_id() != initial_press_->touch_id()) {
496 if (current_touch_ids_.size() == 0) { 498 if (current_touch_ids_.size() == 0) {
497 SET_STATE(NO_FINGERS_DOWN); 499 SET_STATE(NO_FINGERS_DOWN);
498 } 500 }
499 return ui::EVENT_REWRITE_DISCARD; 501 return ui::EVENT_REWRITE_DISCARD;
500 } 502 }
501 scoped_ptr<ui::TouchEvent> new_event(new ui::TouchEvent( 503 scoped_ptr<ui::TouchEvent> new_event(new ui::TouchEvent(
502 event.type(), gfx::Point(), event.touch_id(), event.time_stamp())); 504 event.type(), gfx::Point(), event.touch_id(), event.time_stamp()));
503 new_event->set_location_f(event.location_f() - passthrough_offset_); 505 new_event->set_location_f(event.location_f() - passthrough_offset_);
504 new_event->set_root_location_f(event.location_f() - passthrough_offset_); 506 new_event->set_root_location_f(event.location_f() - passthrough_offset_);
505 new_event->set_flags(event.flags()); 507 new_event->set_flags(event.flags());
506 *rewritten_event = new_event.Pass(); 508 *rewritten_event = std::move(new_event);
507 if (current_touch_ids_.size() == 0) { 509 if (current_touch_ids_.size() == 0) {
508 SET_STATE(NO_FINGERS_DOWN); 510 SET_STATE(NO_FINGERS_DOWN);
509 } 511 }
510 return ui::EVENT_REWRITE_REWRITTEN; 512 return ui::EVENT_REWRITE_REWRITTEN;
511 } 513 }
512 514
513 ui::EventRewriteStatus TouchExplorationController::InTouchExploreSecondPress( 515 ui::EventRewriteStatus TouchExplorationController::InTouchExploreSecondPress(
514 const ui::TouchEvent& event, 516 const ui::TouchEvent& event,
515 scoped_ptr<ui::Event>* rewritten_event) { 517 scoped_ptr<ui::Event>* rewritten_event) {
516 ui::EventType type = event.type(); 518 ui::EventType type = event.type();
517 gfx::PointF location = event.location_f(); 519 gfx::PointF location = event.location_f();
518 if (type == ui::ET_TOUCH_PRESSED) { 520 if (type == ui::ET_TOUCH_PRESSED) {
519 // A third finger being pressed means that a split tap can no longer go 521 // A third finger being pressed means that a split tap can no longer go
520 // through. The user enters the wait state, Since there has already been 522 // through. The user enters the wait state, Since there has already been
521 // a press dispatched when split tap began, the touch needs to be 523 // a press dispatched when split tap began, the touch needs to be
522 // cancelled. 524 // cancelled.
523 scoped_ptr<ui::TouchEvent> new_event( 525 scoped_ptr<ui::TouchEvent> new_event(
524 new ui::TouchEvent(ui::ET_TOUCH_CANCELLED, gfx::Point(), 526 new ui::TouchEvent(ui::ET_TOUCH_CANCELLED, gfx::Point(),
525 initial_press_->touch_id(), event.time_stamp())); 527 initial_press_->touch_id(), event.time_stamp()));
526 new_event->set_location_f(last_touch_exploration_->location_f()); 528 new_event->set_location_f(last_touch_exploration_->location_f());
527 new_event->set_root_location_f(last_touch_exploration_->location_f()); 529 new_event->set_root_location_f(last_touch_exploration_->location_f());
528 new_event->set_flags(event.flags()); 530 new_event->set_flags(event.flags());
529 *rewritten_event = new_event.Pass(); 531 *rewritten_event = std::move(new_event);
530 SET_STATE(WAIT_FOR_NO_FINGERS); 532 SET_STATE(WAIT_FOR_NO_FINGERS);
531 return ui::EVENT_REWRITE_REWRITTEN; 533 return ui::EVENT_REWRITE_REWRITTEN;
532 } else if (type == ui::ET_TOUCH_MOVED) { 534 } else if (type == ui::ET_TOUCH_MOVED) {
533 // If the fingers have moved too far from their original locations, 535 // If the fingers have moved too far from their original locations,
534 // the user can no longer split tap. 536 // the user can no longer split tap.
535 ui::TouchEvent* original_touch; 537 ui::TouchEvent* original_touch;
536 if (event.touch_id() == last_touch_exploration_->touch_id()) { 538 if (event.touch_id() == last_touch_exploration_->touch_id()) {
537 original_touch = last_touch_exploration_.get(); 539 original_touch = last_touch_exploration_.get();
538 } else if (event.touch_id() == initial_press_->touch_id()) { 540 } else if (event.touch_id() == initial_press_->touch_id()) {
539 original_touch = initial_press_.get(); 541 original_touch = initial_press_.get();
540 } else { 542 } else {
541 NOTREACHED(); 543 NOTREACHED();
542 SET_STATE(WAIT_FOR_NO_FINGERS); 544 SET_STATE(WAIT_FOR_NO_FINGERS);
543 return ui::EVENT_REWRITE_DISCARD; 545 return ui::EVENT_REWRITE_DISCARD;
544 } 546 }
545 // Check the distance between the current finger location and the original 547 // Check the distance between the current finger location and the original
546 // location. The slop for this is a bit more generous since keeping two 548 // location. The slop for this is a bit more generous since keeping two
547 // fingers in place is a bit harder. If the user has left the slop, the 549 // fingers in place is a bit harder. If the user has left the slop, the
548 // split tap press (which was previous dispatched) is lifted with a touch 550 // split tap press (which was previous dispatched) is lifted with a touch
549 // cancelled, and the user enters the wait state. 551 // cancelled, and the user enters the wait state.
550 if ((event.location_f() - original_touch->location_f()).Length() > 552 if ((event.location_f() - original_touch->location_f()).Length() >
551 GetSplitTapTouchSlop()) { 553 GetSplitTapTouchSlop()) {
552 scoped_ptr<ui::TouchEvent> new_event( 554 scoped_ptr<ui::TouchEvent> new_event(
553 new ui::TouchEvent(ui::ET_TOUCH_CANCELLED, gfx::Point(), 555 new ui::TouchEvent(ui::ET_TOUCH_CANCELLED, gfx::Point(),
554 initial_press_->touch_id(), event.time_stamp())); 556 initial_press_->touch_id(), event.time_stamp()));
555 new_event->set_location_f(last_touch_exploration_->location_f()); 557 new_event->set_location_f(last_touch_exploration_->location_f());
556 new_event->set_root_location_f(last_touch_exploration_->location_f()); 558 new_event->set_root_location_f(last_touch_exploration_->location_f());
557 new_event->set_flags(event.flags()); 559 new_event->set_flags(event.flags());
558 *rewritten_event = new_event.Pass(); 560 *rewritten_event = std::move(new_event);
559 SET_STATE(WAIT_FOR_NO_FINGERS); 561 SET_STATE(WAIT_FOR_NO_FINGERS);
560 return ui::EVENT_REWRITE_REWRITTEN; 562 return ui::EVENT_REWRITE_REWRITTEN;
561 } 563 }
562 return ui::EVENT_REWRITE_DISCARD; 564 return ui::EVENT_REWRITE_DISCARD;
563 } else if (type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) { 565 } else if (type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) {
564 // If the touch exploration finger is lifted, there is no option to return 566 // If the touch exploration finger is lifted, there is no option to return
565 // to touch explore anymore. The remaining finger acts as a pending 567 // to touch explore anymore. The remaining finger acts as a pending
566 // tap or long tap for the last touch explore location. 568 // tap or long tap for the last touch explore location.
567 if (event.touch_id() == last_touch_exploration_->touch_id()) { 569 if (event.touch_id() == last_touch_exploration_->touch_id()) {
568 SET_STATE(TOUCH_RELEASE_PENDING); 570 SET_STATE(TOUCH_RELEASE_PENDING);
569 return EVENT_REWRITE_DISCARD; 571 return EVENT_REWRITE_DISCARD;
570 } 572 }
571 573
572 // Continue to release the touch only if the touch explore finger is the 574 // Continue to release the touch only if the touch explore finger is the
573 // only finger remaining. 575 // only finger remaining.
574 if (current_touch_ids_.size() != 1) 576 if (current_touch_ids_.size() != 1)
575 return EVENT_REWRITE_DISCARD; 577 return EVENT_REWRITE_DISCARD;
576 578
577 // Rewrite at location of last touch exploration. 579 // Rewrite at location of last touch exploration.
578 scoped_ptr<ui::TouchEvent> new_event( 580 scoped_ptr<ui::TouchEvent> new_event(
579 new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(), 581 new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(),
580 initial_press_->touch_id(), event.time_stamp())); 582 initial_press_->touch_id(), event.time_stamp()));
581 new_event->set_location_f(last_touch_exploration_->location_f()); 583 new_event->set_location_f(last_touch_exploration_->location_f());
582 new_event->set_root_location_f(last_touch_exploration_->location_f()); 584 new_event->set_root_location_f(last_touch_exploration_->location_f());
583 new_event->set_flags(event.flags()); 585 new_event->set_flags(event.flags());
584 *rewritten_event = new_event.Pass(); 586 *rewritten_event = std::move(new_event);
585 SET_STATE(TOUCH_EXPLORATION); 587 SET_STATE(TOUCH_EXPLORATION);
586 EnterTouchToMouseMode(); 588 EnterTouchToMouseMode();
587 return ui::EVENT_REWRITE_REWRITTEN; 589 return ui::EVENT_REWRITE_REWRITTEN;
588 } 590 }
589 NOTREACHED(); 591 NOTREACHED();
590 return ui::EVENT_REWRITE_CONTINUE; 592 return ui::EVENT_REWRITE_CONTINUE;
591 } 593 }
592 594
593 ui::EventRewriteStatus TouchExplorationController::InWaitForNoFingers( 595 ui::EventRewriteStatus TouchExplorationController::InWaitForNoFingers(
594 const ui::TouchEvent& event, 596 const ui::TouchEvent& event,
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after
1158 up_swipe_gestures_[4] = BindKeyEventWithFlags(VKEY_BROWSER_HOME, ui::EF_NONE); 1160 up_swipe_gestures_[4] = BindKeyEventWithFlags(VKEY_BROWSER_HOME, ui::EF_NONE);
1159 down_swipe_gestures_[4] = 1161 down_swipe_gestures_[4] =
1160 BindKeyEventWithFlags(VKEY_BROWSER_REFRESH, ui::EF_NONE); 1162 BindKeyEventWithFlags(VKEY_BROWSER_REFRESH, ui::EF_NONE);
1161 } 1163 }
1162 1164
1163 float TouchExplorationController::GetSplitTapTouchSlop() { 1165 float TouchExplorationController::GetSplitTapTouchSlop() {
1164 return gesture_detector_config_.touch_slop * 3; 1166 return gesture_detector_config_.touch_slop * 3;
1165 } 1167 }
1166 1168
1167 } // namespace ui 1169 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/ime/chromeos/input_method_whitelist.cc ('k') | ui/display/chromeos/apply_content_protection_task_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698