mock_virtual_keyboard.cc 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "fuchsia_web/webengine/browser/mock_virtual_keyboard.h"
  5. #include "base/run_loop.h"
  6. namespace virtualkeyboard = fuchsia::input::virtualkeyboard;
  7. MockVirtualKeyboardController::MockVirtualKeyboardController()
  8. : binding_(this) {}
  9. MockVirtualKeyboardController::~MockVirtualKeyboardController() = default;
  10. void MockVirtualKeyboardController::Bind(
  11. fuchsia::ui::views::ViewRef view_ref,
  12. virtualkeyboard::TextType text_type,
  13. fidl::InterfaceRequest<fuchsia::input::virtualkeyboard::Controller>
  14. controller_request) {
  15. text_type_ = text_type;
  16. view_ref_ = std::move(view_ref);
  17. binding_.Bind(std::move(controller_request));
  18. }
  19. void MockVirtualKeyboardController::AwaitWatchAndRespondWith(bool is_visible) {
  20. if (!watch_vis_callback_) {
  21. base::RunLoop run_loop;
  22. on_watch_visibility_ = run_loop.QuitClosure();
  23. run_loop.Run();
  24. ASSERT_TRUE(watch_vis_callback_);
  25. }
  26. (*watch_vis_callback_)(is_visible);
  27. watch_vis_callback_ = {};
  28. }
  29. void MockVirtualKeyboardController::WatchVisibility(
  30. virtualkeyboard::Controller::WatchVisibilityCallback callback) {
  31. watch_vis_callback_ = std::move(callback);
  32. if (on_watch_visibility_)
  33. std::move(on_watch_visibility_).Run();
  34. }
  35. MockVirtualKeyboardControllerCreator::MockVirtualKeyboardControllerCreator(
  36. base::TestComponentContextForProcess* component_context)
  37. : binding_(component_context->additional_services(), this) {}
  38. MockVirtualKeyboardControllerCreator::~MockVirtualKeyboardControllerCreator() {
  39. CHECK(!pending_controller_);
  40. }
  41. std::unique_ptr<MockVirtualKeyboardController>
  42. MockVirtualKeyboardControllerCreator::CreateController() {
  43. DCHECK(!pending_controller_);
  44. auto controller = std::make_unique<MockVirtualKeyboardController>();
  45. pending_controller_ = controller.get();
  46. return controller;
  47. }
  48. void MockVirtualKeyboardControllerCreator::Create(
  49. fuchsia::ui::views::ViewRef view_ref,
  50. fuchsia::input::virtualkeyboard::TextType text_type,
  51. fidl::InterfaceRequest<fuchsia::input::virtualkeyboard::Controller>
  52. controller_request) {
  53. CHECK(pending_controller_);
  54. pending_controller_->Bind(std::move(view_ref), text_type,
  55. std::move(controller_request));
  56. pending_controller_ = nullptr;
  57. }