Loading core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -52215,6 +52215,7 @@ package android.view.accessibility { method public android.view.accessibility.AccessibilityNodeInfo getRoot(); method @Nullable public android.view.accessibility.AccessibilityNodeInfo getRoot(int); method @Nullable public CharSequence getTitle(); method public long getTransitionTimeMillis(); method public int getType(); method public boolean isAccessibilityFocused(); method public boolean isActive(); core/java/android/view/accessibility/AccessibilityWindowInfo.java +32 −0 Original line number Diff line number Diff line Loading @@ -19,11 +19,13 @@ package android.view.accessibility; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.TestApi; import android.annotation.UptimeMillisLong; import android.app.ActivityTaskManager; import android.graphics.Rect; import android.graphics.Region; import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; import android.text.TextUtils; import android.util.LongArray; import android.util.Pools.SynchronizedPool; Loading Loading @@ -126,6 +128,7 @@ public final class AccessibilityWindowInfo implements Parcelable { private LongArray mChildIds; private CharSequence mTitle; private long mAnchorId = AccessibilityNodeInfo.UNDEFINED_NODE_ID; private long mTransitionTime; private int mConnectionId = UNDEFINED_CONNECTION_ID; Loading Loading @@ -526,6 +529,31 @@ public final class AccessibilityWindowInfo implements Parcelable { return mDisplayId; } /** * Sets the timestamp of the transition. * * @param transitionTime The timestamp from {@link SystemClock#uptimeMillis()} at which the * transition happens. * * @hide */ @UptimeMillisLong public void setTransitionTimeMillis(long transitionTime) { mTransitionTime = transitionTime; } /** * Return the {@link SystemClock#uptimeMillis()} at which the last transition happens. * A transition happens when {@link #getBoundsInScreen(Rect)} is changed. * * @return The transition timestamp. */ @UptimeMillisLong public long getTransitionTimeMillis() { return mTransitionTime; } /** * Returns a cached instance if such is available or a new one is * created. Loading Loading @@ -634,6 +662,7 @@ public final class AccessibilityWindowInfo implements Parcelable { mRegionInScreen.writeToParcel(parcel, flags); parcel.writeCharSequence(mTitle); parcel.writeLong(mAnchorId); parcel.writeLong(mTransitionTime); final LongArray childIds = mChildIds; if (childIds == null) { Loading Loading @@ -665,6 +694,7 @@ public final class AccessibilityWindowInfo implements Parcelable { mRegionInScreen.set(other.mRegionInScreen); mTitle = other.mTitle; mAnchorId = other.mAnchorId; mTransitionTime = other.mTransitionTime; if (mChildIds != null) mChildIds.clear(); if (other.mChildIds != null && other.mChildIds.size() > 0) { Loading @@ -689,6 +719,7 @@ public final class AccessibilityWindowInfo implements Parcelable { mRegionInScreen = Region.CREATOR.createFromParcel(parcel); mTitle = parcel.readCharSequence(); mAnchorId = parcel.readLong(); mTransitionTime = parcel.readLong(); final int childCount = parcel.readInt(); if (childCount > 0) { Loading Loading @@ -739,6 +770,7 @@ public final class AccessibilityWindowInfo implements Parcelable { builder.append(", focused=").append(isFocused()); builder.append(", active=").append(isActive()); builder.append(", pictureInPicture=").append(isInPictureInPictureMode()); builder.append(", transitionTime=").append(mTransitionTime); if (DEBUG) { builder.append(", parent=").append(mParentId); builder.append(", children=["); Loading services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java +15 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.Process; import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.text.TextUtils; import android.util.ArrayMap; Loading Loading @@ -564,7 +565,7 @@ public class AccessibilityWindowManager { final WindowInfo windowInfo = windows.get(i); final AccessibilityWindowInfo window; if (mTrackingWindows) { window = populateReportedWindowLocked(userId, windowInfo); window = populateReportedWindowLocked(userId, windowInfo, oldWindowsById); if (window == null) { hasWindowIgnore = true; } Loading Loading @@ -677,7 +678,7 @@ public class AccessibilityWindowManager { } private AccessibilityWindowInfo populateReportedWindowLocked(int userId, WindowInfo window) { WindowInfo window, SparseArray<AccessibilityWindowInfo> oldWindowsById) { final int windowId = findWindowIdLocked(userId, window.token); if (windowId < 0) { return null; Loading Loading @@ -716,6 +717,18 @@ public class AccessibilityWindowManager { } } final AccessibilityWindowInfo oldWindowInfo = oldWindowsById.get(windowId); if (oldWindowInfo == null) { reportedWindow.setTransitionTimeMillis(SystemClock.uptimeMillis()); } else { final Region oldTouchRegion = new Region(); oldWindowInfo.getRegionInScreen(oldTouchRegion); if (oldTouchRegion.equals(window.regionInScreen)) { reportedWindow.setTransitionTimeMillis(oldWindowInfo.getTransitionTimeMillis()); } else { reportedWindow.setTransitionTimeMillis(SystemClock.uptimeMillis()); } } return reportedWindow; } Loading Loading
core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -52215,6 +52215,7 @@ package android.view.accessibility { method public android.view.accessibility.AccessibilityNodeInfo getRoot(); method @Nullable public android.view.accessibility.AccessibilityNodeInfo getRoot(int); method @Nullable public CharSequence getTitle(); method public long getTransitionTimeMillis(); method public int getType(); method public boolean isAccessibilityFocused(); method public boolean isActive();
core/java/android/view/accessibility/AccessibilityWindowInfo.java +32 −0 Original line number Diff line number Diff line Loading @@ -19,11 +19,13 @@ package android.view.accessibility; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.TestApi; import android.annotation.UptimeMillisLong; import android.app.ActivityTaskManager; import android.graphics.Rect; import android.graphics.Region; import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; import android.text.TextUtils; import android.util.LongArray; import android.util.Pools.SynchronizedPool; Loading Loading @@ -126,6 +128,7 @@ public final class AccessibilityWindowInfo implements Parcelable { private LongArray mChildIds; private CharSequence mTitle; private long mAnchorId = AccessibilityNodeInfo.UNDEFINED_NODE_ID; private long mTransitionTime; private int mConnectionId = UNDEFINED_CONNECTION_ID; Loading Loading @@ -526,6 +529,31 @@ public final class AccessibilityWindowInfo implements Parcelable { return mDisplayId; } /** * Sets the timestamp of the transition. * * @param transitionTime The timestamp from {@link SystemClock#uptimeMillis()} at which the * transition happens. * * @hide */ @UptimeMillisLong public void setTransitionTimeMillis(long transitionTime) { mTransitionTime = transitionTime; } /** * Return the {@link SystemClock#uptimeMillis()} at which the last transition happens. * A transition happens when {@link #getBoundsInScreen(Rect)} is changed. * * @return The transition timestamp. */ @UptimeMillisLong public long getTransitionTimeMillis() { return mTransitionTime; } /** * Returns a cached instance if such is available or a new one is * created. Loading Loading @@ -634,6 +662,7 @@ public final class AccessibilityWindowInfo implements Parcelable { mRegionInScreen.writeToParcel(parcel, flags); parcel.writeCharSequence(mTitle); parcel.writeLong(mAnchorId); parcel.writeLong(mTransitionTime); final LongArray childIds = mChildIds; if (childIds == null) { Loading Loading @@ -665,6 +694,7 @@ public final class AccessibilityWindowInfo implements Parcelable { mRegionInScreen.set(other.mRegionInScreen); mTitle = other.mTitle; mAnchorId = other.mAnchorId; mTransitionTime = other.mTransitionTime; if (mChildIds != null) mChildIds.clear(); if (other.mChildIds != null && other.mChildIds.size() > 0) { Loading @@ -689,6 +719,7 @@ public final class AccessibilityWindowInfo implements Parcelable { mRegionInScreen = Region.CREATOR.createFromParcel(parcel); mTitle = parcel.readCharSequence(); mAnchorId = parcel.readLong(); mTransitionTime = parcel.readLong(); final int childCount = parcel.readInt(); if (childCount > 0) { Loading Loading @@ -739,6 +770,7 @@ public final class AccessibilityWindowInfo implements Parcelable { builder.append(", focused=").append(isFocused()); builder.append(", active=").append(isActive()); builder.append(", pictureInPicture=").append(isInPictureInPictureMode()); builder.append(", transitionTime=").append(mTransitionTime); if (DEBUG) { builder.append(", parent=").append(mParentId); builder.append(", children=["); Loading
services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java +15 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.Process; import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.text.TextUtils; import android.util.ArrayMap; Loading Loading @@ -564,7 +565,7 @@ public class AccessibilityWindowManager { final WindowInfo windowInfo = windows.get(i); final AccessibilityWindowInfo window; if (mTrackingWindows) { window = populateReportedWindowLocked(userId, windowInfo); window = populateReportedWindowLocked(userId, windowInfo, oldWindowsById); if (window == null) { hasWindowIgnore = true; } Loading Loading @@ -677,7 +678,7 @@ public class AccessibilityWindowManager { } private AccessibilityWindowInfo populateReportedWindowLocked(int userId, WindowInfo window) { WindowInfo window, SparseArray<AccessibilityWindowInfo> oldWindowsById) { final int windowId = findWindowIdLocked(userId, window.token); if (windowId < 0) { return null; Loading Loading @@ -716,6 +717,18 @@ public class AccessibilityWindowManager { } } final AccessibilityWindowInfo oldWindowInfo = oldWindowsById.get(windowId); if (oldWindowInfo == null) { reportedWindow.setTransitionTimeMillis(SystemClock.uptimeMillis()); } else { final Region oldTouchRegion = new Region(); oldWindowInfo.getRegionInScreen(oldTouchRegion); if (oldTouchRegion.equals(window.regionInScreen)) { reportedWindow.setTransitionTimeMillis(oldWindowInfo.getTransitionTimeMillis()); } else { reportedWindow.setTransitionTimeMillis(SystemClock.uptimeMillis()); } } return reportedWindow; } Loading