Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f78014e7 authored by Rhed Jao's avatar Rhed Jao Committed by Android (Google) Code Review
Browse files

Merge "Adding a11y ui minimum timeout api."

parents 37f3eae1 e972881f
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -934,6 +934,7 @@ package android {
    field public static final int minSdkVersion = 16843276; // 0x101020c
    field public static final int minSdkVersion = 16843276; // 0x101020c
    field public static final int minWidth = 16843071; // 0x101013f
    field public static final int minWidth = 16843071; // 0x101013f
    field public static final int minimumHorizontalAngle = 16843901; // 0x101047d
    field public static final int minimumHorizontalAngle = 16843901; // 0x101047d
    field public static final int minimumUiTimeout = 16844174; // 0x101058e
    field public static final int minimumVerticalAngle = 16843902; // 0x101047e
    field public static final int minimumVerticalAngle = 16843902; // 0x101047e
    field public static final int mipMap = 16843725; // 0x10103cd
    field public static final int mipMap = 16843725; // 0x10103cd
    field public static final int mirrorForRtl = 16843726; // 0x10103ce
    field public static final int mirrorForRtl = 16843726; // 0x10103ce
@@ -2874,10 +2875,12 @@ package android.accessibilityservice {
    method public int getCapabilities();
    method public int getCapabilities();
    method public deprecated java.lang.String getDescription();
    method public deprecated java.lang.String getDescription();
    method public java.lang.String getId();
    method public java.lang.String getId();
    method public int getMinimumUiTimeoutMillis();
    method public android.content.pm.ResolveInfo getResolveInfo();
    method public android.content.pm.ResolveInfo getResolveInfo();
    method public java.lang.String getSettingsActivityName();
    method public java.lang.String getSettingsActivityName();
    method public java.lang.String loadDescription(android.content.pm.PackageManager);
    method public java.lang.String loadDescription(android.content.pm.PackageManager);
    method public java.lang.CharSequence loadSummary(android.content.pm.PackageManager);
    method public java.lang.CharSequence loadSummary(android.content.pm.PackageManager);
    method public void setMinimumUiTimeoutMillis(int);
    method public void writeToParcel(android.os.Parcel, int);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10
    field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10
    field public static final int CAPABILITY_CAN_PERFORM_GESTURES = 32; // 0x20
    field public static final int CAPABILITY_CAN_PERFORM_GESTURES = 32; // 0x20
@@ -49547,6 +49550,7 @@ package android.view.accessibility {
    method public deprecated java.util.List<android.content.pm.ServiceInfo> getAccessibilityServiceList();
    method public deprecated java.util.List<android.content.pm.ServiceInfo> getAccessibilityServiceList();
    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int);
    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int);
    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getInstalledAccessibilityServiceList();
    method public java.util.List<android.accessibilityservice.AccessibilityServiceInfo> getInstalledAccessibilityServiceList();
    method public int getMinimumUiTimeoutMillis();
    method public void interrupt();
    method public void interrupt();
    method public static boolean isAccessibilityButtonSupported();
    method public static boolean isAccessibilityButtonSupported();
    method public boolean isEnabled();
    method public boolean isEnabled();
+39 −0
Original line number Original line Diff line number Diff line
@@ -76,6 +76,7 @@ import java.util.List;
 * @attr ref android.R.styleable#AccessibilityService_notificationTimeout
 * @attr ref android.R.styleable#AccessibilityService_notificationTimeout
 * @attr ref android.R.styleable#AccessibilityService_packageNames
 * @attr ref android.R.styleable#AccessibilityService_packageNames
 * @attr ref android.R.styleable#AccessibilityService_settingsActivity
 * @attr ref android.R.styleable#AccessibilityService_settingsActivity
 * @attr ref android.R.styleable#AccessibilityService_minimumUiTimeout
 * @see AccessibilityService
 * @see AccessibilityService
 * @see android.view.accessibility.AccessibilityEvent
 * @see android.view.accessibility.AccessibilityEvent
 * @see android.view.accessibility.AccessibilityManager
 * @see android.view.accessibility.AccessibilityManager
@@ -425,6 +426,13 @@ public class AccessibilityServiceInfo implements Parcelable {
     */
     */
    public boolean crashed;
    public boolean crashed;


    /**
     * The minimum timeout in milliseconds that UI controls need to remain on the screen.
     *
     * @see #setMinimumUiTimeoutMillis
     */
    private int mMinimumUiTimeout;

    /**
    /**
     * The component name the accessibility service.
     * The component name the accessibility service.
     */
     */
@@ -529,6 +537,9 @@ public class AccessibilityServiceInfo implements Parcelable {
            notificationTimeout = asAttributes.getInt(
            notificationTimeout = asAttributes.getInt(
                    com.android.internal.R.styleable.AccessibilityService_notificationTimeout,
                    com.android.internal.R.styleable.AccessibilityService_notificationTimeout,
                    0);
                    0);
            mMinimumUiTimeout = asAttributes.getInt(
                    com.android.internal.R.styleable.AccessibilityService_minimumUiTimeout,
                    0);
            flags = asAttributes.getInt(
            flags = asAttributes.getInt(
                    com.android.internal.R.styleable.AccessibilityService_accessibilityFlags, 0);
                    com.android.internal.R.styleable.AccessibilityService_accessibilityFlags, 0);
            mSettingsActivityName = asAttributes.getString(
            mSettingsActivityName = asAttributes.getString(
@@ -598,6 +609,7 @@ public class AccessibilityServiceInfo implements Parcelable {
        packageNames = other.packageNames;
        packageNames = other.packageNames;
        feedbackType = other.feedbackType;
        feedbackType = other.feedbackType;
        notificationTimeout = other.notificationTimeout;
        notificationTimeout = other.notificationTimeout;
        mMinimumUiTimeout = other.mMinimumUiTimeout;
        flags = other.flags;
        flags = other.flags;
    }
    }


@@ -755,6 +767,29 @@ public class AccessibilityServiceInfo implements Parcelable {
        return null;
        return null;
    }
    }


    /**
     * Set the minimum time that controls need to remain on the screen to support the user.
     * <p>
     *    <strong>This value can be dynamically set at runtime by
     *    {@link AccessibilityService#setServiceInfo(AccessibilityServiceInfo)}.</strong>
     * </p>
     *
     * @param timeout The timeout in milliseconds.
     */
    public void setMinimumUiTimeoutMillis(int timeout) {
        mMinimumUiTimeout = timeout;
    }

    /**
     * Get the minimum ui timeout.
     *
     * @see #setMinimumUiTimeoutMillis
     * @return The timeout in milliseconds.
     */
    public int getMinimumUiTimeoutMillis() {
        return mMinimumUiTimeout;
    }

    /** {@hide} */
    /** {@hide} */
    public boolean isDirectBootAware() {
    public boolean isDirectBootAware() {
        return ((flags & FLAG_FORCE_DIRECT_BOOT_AWARE) != 0)
        return ((flags & FLAG_FORCE_DIRECT_BOOT_AWARE) != 0)
@@ -773,6 +808,7 @@ public class AccessibilityServiceInfo implements Parcelable {
        parcel.writeStringArray(packageNames);
        parcel.writeStringArray(packageNames);
        parcel.writeInt(feedbackType);
        parcel.writeInt(feedbackType);
        parcel.writeLong(notificationTimeout);
        parcel.writeLong(notificationTimeout);
        parcel.writeInt(mMinimumUiTimeout);
        parcel.writeInt(flags);
        parcel.writeInt(flags);
        parcel.writeInt(crashed ? 1 : 0);
        parcel.writeInt(crashed ? 1 : 0);
        parcel.writeParcelable(mComponentName, flagz);
        parcel.writeParcelable(mComponentName, flagz);
@@ -790,6 +826,7 @@ public class AccessibilityServiceInfo implements Parcelable {
        packageNames = parcel.readStringArray();
        packageNames = parcel.readStringArray();
        feedbackType = parcel.readInt();
        feedbackType = parcel.readInt();
        notificationTimeout = parcel.readLong();
        notificationTimeout = parcel.readLong();
        mMinimumUiTimeout = parcel.readInt();
        flags = parcel.readInt();
        flags = parcel.readInt();
        crashed = parcel.readInt() != 0;
        crashed = parcel.readInt() != 0;
        mComponentName = parcel.readParcelable(this.getClass().getClassLoader());
        mComponentName = parcel.readParcelable(this.getClass().getClassLoader());
@@ -840,6 +877,8 @@ public class AccessibilityServiceInfo implements Parcelable {
        stringBuilder.append(", ");
        stringBuilder.append(", ");
        stringBuilder.append("notificationTimeout: ").append(notificationTimeout);
        stringBuilder.append("notificationTimeout: ").append(notificationTimeout);
        stringBuilder.append(", ");
        stringBuilder.append(", ");
        stringBuilder.append("minimumUiTimeout: ").append(mMinimumUiTimeout);
        stringBuilder.append(", ");
        appendFlags(stringBuilder, flags);
        appendFlags(stringBuilder, flags);
        stringBuilder.append(", ");
        stringBuilder.append(", ");
        stringBuilder.append("id: ").append(getId());
        stringBuilder.append("id: ").append(getId());
+23 −0
Original line number Original line Diff line number Diff line
@@ -6507,6 +6507,25 @@ public final class Settings {
         */
         */
        public static final String MULTI_PRESS_TIMEOUT = "multi_press_timeout";
        public static final String MULTI_PRESS_TIMEOUT = "multi_press_timeout";
        /**
         * Whether the user specifies a minimum ui timeout to override minimum ui timeout of
         * accessibility service
         *
         * Type: int (0 for false, 1 for true)
         * @hide
         */
        public static final String ACCESSIBILITY_MINIMUM_UI_TIMEOUT_ENABLED =
                "accessibility_minimum_ui_timeout_enabled";
        /**
         * Setting that specifies ui minimum timeout in milliseconds.
         *
         * @see #ACCESSIBILITY_MINIMUM_UI_TIMEOUT_ENABLED
         * @hide
         */
        public static final String ACCESSIBILITY_MINIMUM_UI_TIMEOUT_MS =
                "accessibility_minimum_ui_timeout_ms";
        /**
        /**
         * List of the enabled print services.
         * List of the enabled print services.
         *
         *
@@ -8195,6 +8214,8 @@ public final class Settings {
            ZEN_SETTINGS_SUGGESTION_VIEWED,
            ZEN_SETTINGS_SUGGESTION_VIEWED,
            CHARGING_SOUNDS_ENABLED,
            CHARGING_SOUNDS_ENABLED,
            CHARGING_VIBRATION_ENABLED,
            CHARGING_VIBRATION_ENABLED,
            ACCESSIBILITY_MINIMUM_UI_TIMEOUT_ENABLED,
            ACCESSIBILITY_MINIMUM_UI_TIMEOUT_MS,
        };
        };
        /**
        /**
@@ -8349,6 +8370,8 @@ public final class Settings {
            VALIDATORS.put(ZEN_SETTINGS_SUGGESTION_VIEWED, BOOLEAN_VALIDATOR);
            VALIDATORS.put(ZEN_SETTINGS_SUGGESTION_VIEWED, BOOLEAN_VALIDATOR);
            VALIDATORS.put(CHARGING_SOUNDS_ENABLED, BOOLEAN_VALIDATOR);
            VALIDATORS.put(CHARGING_SOUNDS_ENABLED, BOOLEAN_VALIDATOR);
            VALIDATORS.put(CHARGING_VIBRATION_ENABLED, BOOLEAN_VALIDATOR);
            VALIDATORS.put(CHARGING_VIBRATION_ENABLED, BOOLEAN_VALIDATOR);
            VALIDATORS.put(ACCESSIBILITY_MINIMUM_UI_TIMEOUT_ENABLED, BOOLEAN_VALIDATOR);
            VALIDATORS.put(ACCESSIBILITY_MINIMUM_UI_TIMEOUT_MS, NON_NEGATIVE_INTEGER_VALIDATOR);
        }
        }
        /**
        /**
+21 −0
Original line number Original line Diff line number Diff line
@@ -139,6 +139,8 @@ public final class AccessibilityManager {


    int mRelevantEventTypes = AccessibilityEvent.TYPES_ALL_MASK;
    int mRelevantEventTypes = AccessibilityEvent.TYPES_ALL_MASK;


    int mMinimumUiTimeout;

    boolean mIsTouchExplorationEnabled;
    boolean mIsTouchExplorationEnabled;


    @UnsupportedAppUsage
    @UnsupportedAppUsage
@@ -320,6 +322,11 @@ public final class AccessibilityManager {
        public void setRelevantEventTypes(int eventTypes) {
        public void setRelevantEventTypes(int eventTypes) {
            mRelevantEventTypes = eventTypes;
            mRelevantEventTypes = eventTypes;
        }
        }

        @Override
        public void setMinimumUiTimeout(int uiTimeout) {
            mMinimumUiTimeout = uiTimeout;
        }
    };
    };


    /**
    /**
@@ -826,6 +833,19 @@ public final class AccessibilityManager {
        }
        }
    }
    }


    /**
     * Get the minimum timeout for changes to the UI needed by this user. Controls should remain
     * on the screen for at least this long to give users time to react. Some users may need
     * extra time to review the controls, or to reach them, or to activate assistive technology
     * to activate the controls automatically.
     *
     * @return The minimum ui timeout for the current user in milliseconds.
     * {@link Integer#MAX_VALUE} if timeout is infinite.
     */
    public int getMinimumUiTimeoutMillis() {
        return mMinimumUiTimeout;
    }

    /**
    /**
     * Get the preparers that are registered for an accessibility ID
     * Get the preparers that are registered for an accessibility ID
     *
     *
@@ -1139,6 +1159,7 @@ public final class AccessibilityManager {
            final long userStateAndRelevantEvents = service.addClient(mClient, mUserId);
            final long userStateAndRelevantEvents = service.addClient(mClient, mUserId);
            setStateLocked(IntPair.first(userStateAndRelevantEvents));
            setStateLocked(IntPair.first(userStateAndRelevantEvents));
            mRelevantEventTypes = IntPair.second(userStateAndRelevantEvents);
            mRelevantEventTypes = IntPair.second(userStateAndRelevantEvents);
            mMinimumUiTimeout = service.getMinimumUiTimeout();
            mService = service;
            mService = service;
        } catch (RemoteException re) {
        } catch (RemoteException re) {
            Log.e(LOG_TAG, "AccessibilityManagerService is dead", re);
            Log.e(LOG_TAG, "AccessibilityManagerService is dead", re);
+2 −0
Original line number Original line Diff line number Diff line
@@ -72,4 +72,6 @@ interface IAccessibilityManager {


    // System process only
    // System process only
    boolean sendFingerprintGesture(int gestureKeyCode);
    boolean sendFingerprintGesture(int gestureKeyCode);

    int getMinimumUiTimeout();
}
}
Loading