提交 d0e17e67 编写于 作者: H Hixie

Track whether accessibility is enabled.

If we send accessibility events when accessibility is disabled, we crash.
上级 380d5353
......@@ -29,6 +29,7 @@ public class FlutterSemanticsToAndroidAccessibilityBridge extends AccessibilityN
private Map<Integer, PersistentAccessibilityNode> mTreeNodes;
private PlatformViewAndroid mOwner;
private SemanticsServer.Proxy mSemanticsServer;
private boolean mAccessilibilyEnabled;
private PersistentAccessibilityNode mFocusedNode;
private PersistentAccessibilityNode mHoveredNode;
......@@ -41,6 +42,10 @@ public class FlutterSemanticsToAndroidAccessibilityBridge extends AccessibilityN
mSemanticsServer.addSemanticsListener(this);
}
public void setAccessibilityEnabled(boolean accessibilityEnabled) {
mAccessilibilyEnabled = accessibilityEnabled;
}
@Override
public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) {
......@@ -213,6 +218,9 @@ public class FlutterSemanticsToAndroidAccessibilityBridge extends AccessibilityN
}
private void sendAccessibilityEvent(int virtualViewId, int eventType) {
if (!mAccessilibilyEnabled) {
return;
}
if (virtualViewId == 0) {
mOwner.sendAccessibilityEvent(eventType);
} else {
......
......@@ -342,13 +342,15 @@ public class PlatformViewAndroid extends SurfaceView
// ACCESSIBILITY
private boolean mAccessibilityEnabled = false;
private boolean mTouchExplorationEnabled = false;
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
mAccessibilityEnabled = mAccessibilityManager.isEnabled();
mTouchExplorationEnabled = mAccessibilityManager.isTouchExplorationEnabled();
if (mAccessibilityManager.isEnabled() || mTouchExplorationEnabled)
if (mAccessibilityEnabled || mTouchExplorationEnabled)
ensureAccessibilityEnabled();
mAccessibilityManager.addAccessibilityStateChangeListener(this);
mAccessibilityManager.addTouchExplorationStateChangeListener(this);
......@@ -356,8 +358,15 @@ public class PlatformViewAndroid extends SurfaceView
@Override
public void onAccessibilityStateChanged(boolean enabled) {
if (enabled)
if (enabled) {
mAccessibilityEnabled = true;
ensureAccessibilityEnabled();
} else {
mAccessibilityEnabled = false;
}
if (mAccessibilityNodeProvider != null) {
mAccessibilityNodeProvider.setAccessibilityEnabled(mAccessibilityEnabled);
}
}
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册