Merge "A11y: Use a backstop dialog timeout when a11y is enabled." into mnc-dev

This commit is contained in:
John Spurlock
2015-06-11 20:35:51 +00:00
committed by Android (Google) Code Review

View File

@@ -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;
} }
} }