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

Commit 8b97d7ec authored by Riley Jones's avatar Riley Jones
Browse files

Added locales field to AccessibilityWindowInfo. Locales will reflect the...

Added locales field to AccessibilityWindowInfo. Locales will reflect the LocaleList obtainable by ViewRootImpl.

Bug: 134731341
Test: Existing tests are adjusted for the locales field.
Change-Id: Ice260ab7d2ef6fe07eecb5eadca7822cde15b446
parent cda60c24
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -53773,6 +53773,7 @@ package android.view.accessibility {
    method public int getDisplayId();
    method public int getId();
    method public int getLayer();
    method @NonNull public android.os.LocaleList getLocales();
    method public android.view.accessibility.AccessibilityWindowInfo getParent();
    method public void getRegionInScreen(@NonNull android.graphics.Region);
    method public android.view.accessibility.AccessibilityNodeInfo getRoot();
+1 −1
Original line number Diff line number Diff line
@@ -1424,7 +1424,7 @@ public final class ViewRootImpl implements ViewParent,
                != AccessibilityWindowInfo.UNDEFINED_WINDOW_ID;
        if (registered) {
            final AccessibilityWindowAttributes attributes = new AccessibilityWindowAttributes(
                    mWindowAttributes);
                    mWindowAttributes, mContext.getResources().getConfiguration().getLocales());
            if (!attributes.equals(mAccessibilityWindowAttributes)) {
                mAccessibilityWindowAttributes = attributes;
                mAccessibilityManager.setAccessibilityWindowAttributes(getDisplayId(),
+8 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.ActivityTaskManager;
import android.graphics.Matrix;
import android.graphics.Region;
import android.os.IBinder;
import android.os.LocaleList;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Pools;
@@ -60,6 +61,8 @@ public class WindowInfo implements Parcelable {

    public MagnificationSpec mMagnificationSpec = new MagnificationSpec();

    public LocaleList locales = LocaleList.getEmptyLocaleList();

    private WindowInfo() {
        /* do nothing - hide constructor */
    }
@@ -99,6 +102,7 @@ public class WindowInfo implements Parcelable {
            }
        }
        window.mMagnificationSpec.setTo(other.mMagnificationSpec);
        window.locales = other.locales;
        return window;
    }

@@ -136,6 +140,7 @@ public class WindowInfo implements Parcelable {
            parcel.writeInt(0);
        }
        mMagnificationSpec.writeToParcel(parcel, flags);
        parcel.writeParcelable(locales, flags);
    }

    @Override
@@ -160,6 +165,7 @@ public class WindowInfo implements Parcelable {
        matrix.setValues(mTransformMatrix);
        builder.append(", mTransformMatrix=").append(matrix);
        builder.append(", mMagnificationSpec=").append(mMagnificationSpec);
        builder.append(", locales=").append(locales);
        builder.append(']');
        return builder.toString();
    }
@@ -187,6 +193,7 @@ public class WindowInfo implements Parcelable {
            parcel.readBinderList(childTokens);
        }
        mMagnificationSpec = MagnificationSpec.CREATOR.createFromParcel(parcel);
        locales = parcel.readParcelable(null, LocaleList.class);
    }

    private void clear() {
@@ -210,6 +217,7 @@ public class WindowInfo implements Parcelable {
        mMagnificationSpec.clear();
        title = null;
        accessibilityIdOfAnchor = AccessibilityNodeInfo.UNDEFINED_NODE_ID;
        locales = LocaleList.getEmptyLocaleList();
    }

    public static final @android.annotation.NonNull Parcelable.Creator<WindowInfo> CREATOR =
+22 −3
Original line number Diff line number Diff line
@@ -17,11 +17,14 @@
package android.view.accessibility;

import android.annotation.NonNull;
import android.os.LocaleList;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.view.WindowManager;

import java.util.Objects;

/**
 * This class represents the attributes of a window needed for {@link AccessibilityWindowInfo}.
 *
@@ -30,13 +33,22 @@ import android.view.WindowManager;
public final class AccessibilityWindowAttributes implements Parcelable {

    private final CharSequence mWindowTitle;
    private final LocaleList mLocales;

    public AccessibilityWindowAttributes(@NonNull WindowManager.LayoutParams layoutParams) {
    public AccessibilityWindowAttributes(@NonNull WindowManager.LayoutParams layoutParams,
            @NonNull LocaleList locales) {
        mWindowTitle = populateWindowTitle(layoutParams);
        mLocales = locales;
    }

    private AccessibilityWindowAttributes(Parcel in) {
        mWindowTitle = in.readCharSequence();
        LocaleList inLocales = in.readParcelable(null, LocaleList.class);
        if (inLocales != null) {
            mLocales = inLocales;
        } else {
            mLocales = LocaleList.getEmptyLocaleList();
        }
    }

    public CharSequence getWindowTitle() {
@@ -63,6 +75,10 @@ public final class AccessibilityWindowAttributes implements Parcelable {
        return  windowTitle;
    }

    public @NonNull LocaleList getLocales() {
        return mLocales;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
@@ -70,12 +86,13 @@ public final class AccessibilityWindowAttributes implements Parcelable {

        AccessibilityWindowAttributes that = (AccessibilityWindowAttributes) o;

        return TextUtils.equals(mWindowTitle, that.mWindowTitle);
        return TextUtils.equals(mWindowTitle, that.mWindowTitle) && Objects.equals(
                mLocales, that.mLocales);
    }

    @Override
    public int hashCode() {
        return mWindowTitle.hashCode();
        return Objects.hash(mWindowTitle, mLocales);
    }

    public static final Creator<AccessibilityWindowAttributes> CREATOR =
@@ -99,12 +116,14 @@ public final class AccessibilityWindowAttributes implements Parcelable {
    @Override
    public void writeToParcel(@NonNull Parcel parcel, int flags) {
        parcel.writeCharSequence(mWindowTitle);
        parcel.writeParcelable(mLocales, flags);
    }

    @Override
    public String toString() {
        return "AccessibilityWindowAttributes{"
                + "mAccessibilityWindowTitle=" + mWindowTitle
                + "mLocales=" + mLocales
                + '}';
    }
}
+26 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.annotation.UptimeMillisLong;
import android.app.ActivityTaskManager;
import android.graphics.Rect;
import android.graphics.Region;
import android.os.LocaleList;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
@@ -132,6 +133,8 @@ public final class AccessibilityWindowInfo implements Parcelable {

    private int mConnectionId = UNDEFINED_CONNECTION_ID;

    private LocaleList mLocales = LocaleList.getEmptyLocaleList();

    /**
     * Creates a new {@link AccessibilityWindowInfo}.
     */
@@ -554,6 +557,26 @@ public final class AccessibilityWindowInfo implements Parcelable {
        return mTransitionTime;
    }

    /**
     * Sets the locales of the window. Locales are populated by the view root by default.
     *
     * @param locales The {@link android.os.LocaleList}.
     *
     * @hide
     */
    public void setLocales(@NonNull LocaleList locales) {
        mLocales = locales;
    }

    /**
     * Return the {@link android.os.LocaleList} of the window.
     *
     * @return the locales of the window.
     */
    public @NonNull LocaleList getLocales() {
        return mLocales;
    }

    /**
     * Returns a cached instance if such is available or a new one is
     * created.
@@ -676,6 +699,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
        }

        parcel.writeInt(mConnectionId);
        parcel.writeParcelable(mLocales, flags);
    }

    /**
@@ -706,6 +730,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
        }

        mConnectionId = other.mConnectionId;
        mLocales = other.mLocales;
    }

    private void initFromParcel(Parcel parcel) {
@@ -733,6 +758,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
        }

        mConnectionId = parcel.readInt();
        mLocales = parcel.readParcelable(null, LocaleList.class);
    }

    @Override
Loading