Merge "A11y: Use a backstop dialog timeout when a11y is enabled." into mnc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
06a9fdc4ea
@@ -17,6 +17,7 @@
|
|||||||
package com.android.systemui.volume;
|
package com.android.systemui.volume;
|
||||||
|
|
||||||
import static android.accessibilityservice.AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
|
import static android.accessibilityservice.AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
|
||||||
|
import static android.accessibilityservice.AccessibilityServiceInfo.FEEDBACK_GENERIC;
|
||||||
|
|
||||||
import android.accessibilityservice.AccessibilityServiceInfo;
|
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||||
import android.animation.LayoutTransition;
|
import android.animation.LayoutTransition;
|
||||||
@@ -422,17 +423,15 @@ public class VolumeDialog {
|
|||||||
|
|
||||||
protected void rescheduleTimeoutH() {
|
protected void rescheduleTimeoutH() {
|
||||||
mHandler.removeMessages(H.DISMISS);
|
mHandler.removeMessages(H.DISMISS);
|
||||||
int timeout = -1;
|
final int timeout = computeTimeoutH();
|
||||||
if (!mAccessibility.mFeedbackEnabled) {
|
mHandler.sendMessageDelayed(mHandler
|
||||||
timeout = computeTimeoutH();
|
.obtainMessage(H.DISMISS, Events.DISMISS_REASON_TIMEOUT, 0), timeout);
|
||||||
mHandler.sendMessageDelayed(mHandler
|
|
||||||
.obtainMessage(H.DISMISS, Events.DISMISS_REASON_TIMEOUT, 0), timeout);
|
|
||||||
}
|
|
||||||
if (D.BUG) Log.d(TAG, "rescheduleTimeout " + timeout + " " + Debug.getCaller());
|
if (D.BUG) Log.d(TAG, "rescheduleTimeout " + timeout + " " + Debug.getCaller());
|
||||||
mController.userActivity();
|
mController.userActivity();
|
||||||
}
|
}
|
||||||
|
|
||||||
private int computeTimeoutH() {
|
private int computeTimeoutH() {
|
||||||
|
if (mAccessibility.mFeedbackEnabled) return 20000;
|
||||||
if (mSafetyWarning != null) return 5000;
|
if (mSafetyWarning != null) return 5000;
|
||||||
if (mExpanded || mExpanding) return 5000;
|
if (mExpanded || mExpanding) return 5000;
|
||||||
if (mActiveStream == AudioManager.STREAM_MUSIC) return 1500;
|
if (mActiveStream == AudioManager.STREAM_MUSIC) return 1500;
|
||||||
@@ -959,7 +958,7 @@ public class VolumeDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final class Accessibility {
|
private final class Accessibility extends AccessibilityDelegate {
|
||||||
private AccessibilityManager mMgr;
|
private AccessibilityManager mMgr;
|
||||||
private boolean mFeedbackEnabled;
|
private boolean mFeedbackEnabled;
|
||||||
|
|
||||||
@@ -976,14 +975,7 @@ public class VolumeDialog {
|
|||||||
updateFeedbackEnabled();
|
updateFeedbackEnabled();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
mDialogView.setAccessibilityDelegate(new AccessibilityDelegate() {
|
mDialogView.setAccessibilityDelegate(this);
|
||||||
@Override
|
|
||||||
public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
|
|
||||||
AccessibilityEvent event) {
|
|
||||||
rescheduleTimeoutH();
|
|
||||||
return super.onRequestSendAccessibilityEvent(host, child, event);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
mMgr.addAccessibilityStateChangeListener(new AccessibilityStateChangeListener() {
|
mMgr.addAccessibilityStateChangeListener(new AccessibilityStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onAccessibilityStateChanged(boolean enabled) {
|
public void onAccessibilityStateChanged(boolean enabled) {
|
||||||
@@ -993,15 +985,23 @@ public class VolumeDialog {
|
|||||||
updateFeedbackEnabled();
|
updateFeedbackEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
|
||||||
|
AccessibilityEvent event) {
|
||||||
|
rescheduleTimeoutH();
|
||||||
|
return super.onRequestSendAccessibilityEvent(host, child, event);
|
||||||
|
}
|
||||||
|
|
||||||
private void updateFeedbackEnabled() {
|
private void updateFeedbackEnabled() {
|
||||||
mFeedbackEnabled = computeFeedbackEnabled();
|
mFeedbackEnabled = computeFeedbackEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean computeFeedbackEnabled() {
|
private boolean computeFeedbackEnabled() {
|
||||||
|
// are there any enabled non-generic a11y services?
|
||||||
final List<AccessibilityServiceInfo> services =
|
final List<AccessibilityServiceInfo> services =
|
||||||
mMgr.getEnabledAccessibilityServiceList(FEEDBACK_ALL_MASK);
|
mMgr.getEnabledAccessibilityServiceList(FEEDBACK_ALL_MASK);
|
||||||
for (AccessibilityServiceInfo asi : services) {
|
for (AccessibilityServiceInfo asi : services) {
|
||||||
if ((asi.feedbackType & FEEDBACK_ALL_MASK) != 0) {
|
if (asi.feedbackType != 0 && asi.feedbackType != FEEDBACK_GENERIC) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user