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

#ifndef ASH_LOGIN_UI_LOGIN_KEYBOARD_TEST_BASE_H_
#define ASH_LOGIN_UI_LOGIN_KEYBOARD_TEST_BASE_H_

#include <memory>

#include "ash/login/ui/login_test_base.h"
#include "ash/test/ash_test_base.h"

namespace ash {

// Base test fixture for testing the views-based login and lock screens with
// virtual keyboard.
class LoginKeyboardTestBase : public LoginTestBase {
 public:
  LoginKeyboardTestBase();

  LoginKeyboardTestBase(const LoginKeyboardTestBase&) = delete;
  LoginKeyboardTestBase& operator=(const LoginKeyboardTestBase&) = delete;

  ~LoginKeyboardTestBase() override;

  // Shows keyboard with the height of half of the window height. Asserts that
  // keyboard is visible. To stop execution of the test on failed assertion
  // use ASSERT_NO_FATAL_FAILURE macro.
  void ShowKeyboard();

  // Hides keyboard. Asserts that keyboard is not visible. To stop execution of
  // the test on failed assertion use ASSERT_NO_FATAL_FAILURE macro.
  void HideKeyboard();

  // Returns bounds of the keyboard in screen coordinate space.
  gfx::Rect GetKeyboardBoundsInScreen() const;

  // AshTestBase:
  void SetUp() override;

 private:
  std::vector<LoginUserInfo> users_;
};

}  // namespace ash

#endif  // ASH_LOGIN_UI_LOGIN_KEYBOARD_TEST_BASE_H_
