blob: ec6a4e966723422f4e209fec38d6c0c9c3f0bc79 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugin.platform;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import io.flutter.view.AccessibilityBridge;
/**
* Delegates accessibility events to the currently attached accessibility bridge if one is attached.
*/
class AccessibilityEventsDelegate {
private AccessibilityBridge accessibilityBridge;
/**
* Delegates handling of {@link android.view.ViewParent#requestSendAccessibilityEvent} to the
* accessibility bridge.
*
* <p>This is a no-op if there is no accessibility delegate set.
*
* <p>This is used by embedded platform views to propagate accessibility events from their view
* hierarchy to the accessibility bridge.
*
* <p>As the embedded view doesn't have to be the only View in the embedded hierarchy (it can have
* child views) and the event might have been originated from any view in this hierarchy, this
* method gets both a reference to the embedded platform view, and a reference to the view from
* its hierarchy that sent the event.
*
* @param embeddedView the embedded platform view for which the event is delegated
* @param eventOrigin the view in the embedded view's hierarchy that sent the event.
* @return True if the event was sent.
*/
public boolean requestSendAccessibilityEvent(
@NonNull View embeddedView, @NonNull View eventOrigin, @NonNull AccessibilityEvent event) {
if (accessibilityBridge == null) {
return false;
}
return accessibilityBridge.externalViewRequestSendAccessibilityEvent(
embeddedView, eventOrigin, event);
}
/*
* This setter should only be used directly in PlatformViewsController when attached/detached to an accessibility
* bridge.
*/
void setAccessibilityBridge(@Nullable AccessibilityBridge accessibilityBridge) {
this.accessibilityBridge = accessibilityBridge;
}
}