// Copyright 2022 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_ANDROID_ACCESSIBILITY_STATE_H_
#define UI_ACCESSIBILITY_ANDROID_ACCESSIBILITY_STATE_H_
#include <vector>
#include "base/no_destructor.h"
namespace ui {
// Provides methods for measuring accessibility state on Android via
// org.chromium.ui.accessibility.AccessibilityState.
class AccessibilityState {
public:
// Provides an interface for clients to listen to animator duration scale
// changes.
class Delegate {
public:
// Called when the animator duration scale changes.
virtual void OnAnimatorDurationScaleChanged() = 0;
};
// Registers a delegate to listen to animator duration scale changes.
static void RegisterAnimatorDurationScaleDelegate(Delegate* delegate);
// Unregisters a delegate to listen to animator duration scale changes.
static void UnregisterAnimatorDurationScaleDelegate(Delegate* delegate);
// Notifies all delegates of an animator duration scale change.
static void NotifyAnimatorDurationScaleObservers();
// --------------------------------------------------------------------------
// Methods that call into AccessibilityState.java via JNI
// --------------------------------------------------------------------------
// Register Java-side Android accessibility state observers and ensure
// AccessibilityState is initialized.
static void RegisterObservers();
// Returns the event mask of all running accessibility services.
static int GetAccessibilityServiceEventTypeMask();
// Returns the feedback type mask of all running accessibility services.
static int GetAccessibilityServiceFeedbackTypeMask();
// Returns the flags mask of all running accessibility services.
static int GetAccessibilityServiceFlagsMask();
// Returns the capabilities mask of all running accessibility services.
static int GetAccessibilityServiceCapabilitiesMask();
// Returns a vector containing the IDs of all running accessibility services.
static std::vector<std::string> GetAccessibilityServiceIds();
private:
// Returns the static vector of Delegates.
static std::vector<Delegate*> GetDelegates() {
static base::NoDestructor<std::vector<Delegate*>> delegates;
return *delegates;
}
};
} // namespace ui
#endif // UI_ACCESSIBILITY_ANDROID_ACCESSIBILITY_STATE_H_