1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_ACCESSIBILITY_PLATFORM_FUCHSIA_ACCESSIBILITY_BRIDGE_FUCHSIA_REGISTRY_H_
#define UI_ACCESSIBILITY_PLATFORM_FUCHSIA_ACCESSIBILITY_BRIDGE_FUCHSIA_REGISTRY_H_
#include "base/component_export.h"
#include "base/containers/flat_map.h"
#include "ui/accessibility/platform/fuchsia/accessibility_bridge_fuchsia.h"
#include "ui/aura/window.h"
namespace ui {
// TODO(crbug.com/40212066): Investigate using window ID instead of
// Window*.
// This class manages a mapping between aura root windows and their respective
// accessibility bridge instances. This class does NOT own the accessibility
// bridge instances themselves.
class COMPONENT_EXPORT(AX_PLATFORM) AccessibilityBridgeFuchsiaRegistry {
public:
// Get the global instance of this class.
static AccessibilityBridgeFuchsiaRegistry* GetInstance();
AccessibilityBridgeFuchsiaRegistry();
~AccessibilityBridgeFuchsiaRegistry();
AccessibilityBridgeFuchsiaRegistry(
const AccessibilityBridgeFuchsiaRegistry&) = delete;
AccessibilityBridgeFuchsiaRegistry& operator=(
const AccessibilityBridgeFuchsiaRegistry&) = delete;
// Retrieve an |AccessibilityBridgeFuchsia| by aura::Window*.
//
// Returns nullptr if no accessibility bridge is registered for
// |window|.
AccessibilityBridgeFuchsia* GetAccessibilityBridge(aura::Window* window);
// Registers the accessibility bridge for the specified window.
// There must NOT be an accessibility bridge registered for |window| when
// this method is called, and |window| must NOT be null.
void RegisterAccessibilityBridge(
aura::Window* window,
AccessibilityBridgeFuchsia* accessibility_bridge);
// Removes the accessibility bridge for the specified widow.
// There must be an accessibility bridge registered for |window| when this
// method is called.
void UnregisterAccessibilityBridge(aura::Window* window);
private:
base::flat_map<aura::Window*, AccessibilityBridgeFuchsia*>
window_to_bridge_map_;
};
} // namespace ui
#endif // UI_ACCESSIBILITY_PLATFORM_FUCHSIA_ACCESSIBILITY_BRIDGE_FUCHSIA_REGISTRY_H_
|