chromium/ash/keyboard/ui/keyboard_event_handler_unittest.cc

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ash/keyboard/ui/keyboard_event_handler.h"

#include "ash/keyboard/ui/keyboard_ui_controller.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/events/event.h"

namespace keyboard {

TEST(KeyboardEventHandlerTest, HandleGestureEvents) {
  // KeyboardEventHandler needs a KeyboardUIController to be present, otherwise
  // handling gesture events will crash.
  KeyboardUIController controller;

  KeyboardEventHandler filter;
  ui::GestureEvent pinch_begin(
      15, 15, 0, base::TimeTicks(),
      ui::GestureEventDetails(ui::EventType::kGesturePinchBegin));
  ui::GestureEvent pinch_update(
      20, 20, 0, base::TimeTicks(),
      ui::GestureEventDetails(ui::EventType::kGesturePinchUpdate));
  ui::GestureEvent pinch_end(
      30, 30, 0, base::TimeTicks(),
      ui::GestureEventDetails(ui::EventType::kGesturePinchEnd));
  filter.OnGestureEvent(&pinch_begin);
  filter.OnGestureEvent(&pinch_update);
  filter.OnGestureEvent(&pinch_end);

  EXPECT_TRUE(pinch_begin.stopped_propagation());
  EXPECT_TRUE(pinch_update.stopped_propagation());
  EXPECT_TRUE(pinch_end.stopped_propagation());

  ui::GestureEvent tap(15, 15, 0, base::TimeTicks(),
                       ui::GestureEventDetails(ui::EventType::kGestureTap));
  filter.OnGestureEvent(&tap);
  EXPECT_FALSE(tap.stopped_propagation());
}

}  // namespace keyboard