123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef FUCHSIA_WEB_WEBENGINE_BROWSER_FAKE_SEMANTICS_MANAGER_H_
- #define FUCHSIA_WEB_WEBENGINE_BROWSER_FAKE_SEMANTICS_MANAGER_H_
- #include <fuchsia/accessibility/semantics/cpp/fidl.h>
- #include <fuchsia/accessibility/semantics/cpp/fidl_test_base.h>
- #include <fuchsia/ui/scenic/cpp/fidl.h>
- #include <lib/fidl/cpp/binding.h>
- #include "base/callback.h"
- #include "fuchsia_web/webengine/browser/fake_semantic_tree.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- class FakeSemanticsManager : public fuchsia::accessibility::semantics::testing::
- SemanticsManager_TestBase {
- public:
- FakeSemanticsManager();
- ~FakeSemanticsManager() override;
- FakeSemanticsManager(const FakeSemanticsManager&) = delete;
- FakeSemanticsManager& operator=(const FakeSemanticsManager&) = delete;
- bool is_view_registered() const { return view_ref_.reference.is_valid(); }
- bool is_listener_valid() const { return static_cast<bool>(listener_); }
- FakeSemanticTree* semantic_tree() { return &semantic_tree_; }
- int32_t num_actions_handled() { return num_actions_handled_; }
- int32_t num_actions_unhandled() { return num_actions_unhandled_; }
- // Directly call the listener to simulate Fuchsia setting the semantics mode.
- void SetSemanticsModeEnabled(bool is_enabled);
- // Pumps the message loop until the RegisterViewForSemantics() is called.
- void WaitUntilViewRegistered();
- // The value returned by hit testing is written to a class member. In the case
- // Run() times out, the function continues so we don't want to write to a
- // local variable.
- uint32_t HitTestAtPointSync(fuchsia::math::PointF target_point);
- // A helper function for RequestAccessibilityAction.
- void CheckNumActions();
- // TODO(crbug.com/1291330): Remove async RequestAccessibilityAction(), and
- // replace with RequestAccessibilityActionSync().
- // Request the client to perform |action| on the node with |node_id|.
- void RequestAccessibilityAction(
- uint32_t node_id,
- fuchsia::accessibility::semantics::Action action);
- // Request the client to perform |action| on the node with |node_id|.
- bool RequestAccessibilityActionSync(
- uint32_t node_id,
- fuchsia::accessibility::semantics::Action action);
- // Runs until |num_actions| accessibility actions have been handled.
- void RunUntilNumActionsHandledEquals(int32_t num_actions);
- // fuchsia::accessibility::semantics::SemanticsManager implementation.
- void RegisterViewForSemantics(
- fuchsia::ui::views::ViewRef view_ref,
- fidl::InterfaceHandle<fuchsia::accessibility::semantics::SemanticListener>
- listener,
- fidl::InterfaceRequest<fuchsia::accessibility::semantics::SemanticTree>
- semantic_tree_request) final;
- void NotImplemented_(const std::string& name) final;
- private:
- fuchsia::ui::views::ViewRef view_ref_;
- fuchsia::accessibility::semantics::SemanticListenerPtr listener_;
- // This fake only supports one SemanticTree, unlike the real SemanticsManager
- // which can support many.
- FakeSemanticTree semantic_tree_;
- absl::optional<uint32_t> hit_test_result_;
- int32_t num_actions_handled_ = 0;
- int32_t num_actions_unhandled_ = 0;
- int32_t expected_num_actions_ = 0;
- base::RepeatingClosure on_expected_num_actions_;
- base::OnceClosure on_view_registered_;
- };
- #endif // FUCHSIA_WEB_WEBENGINE_BROWSER_FAKE_SEMANTICS_MANAGER_H_
|