Merge "AccessibilityNodeInfo bounds in screen incorrect if application scale not one."
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index d04bbcd..c269ea3 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -4697,10 +4697,14 @@
*/
void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
Rect bounds = mAttachInfo.mTmpInvalRect;
+ final float applicationScale = mAttachInfo.mApplicationScale;
+
getDrawingRect(bounds);
+ bounds.scale(applicationScale);
info.setBoundsInParent(bounds);
getBoundsOnScreen(bounds);
+ bounds.scale(applicationScale);
info.setBoundsInScreen(bounds);
ViewParent parent = getParentForAccessibility();
diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java
index 02bcf1e..eabcb80 100644
--- a/core/java/android/widget/NumberPicker.java
+++ b/core/java/android/widget/NumberPicker.java
@@ -2421,14 +2421,22 @@
info.setParent((View) getParentForAccessibility());
info.setEnabled(NumberPicker.this.isEnabled());
info.setScrollable(true);
+
+ final float applicationScale =
+ getContext().getResources().getCompatibilityInfo().applicationScale;
+
Rect boundsInParent = mTempRect;
boundsInParent.set(left, top, right, bottom);
+ boundsInParent.scale(applicationScale);
info.setBoundsInParent(boundsInParent);
+
info.setVisibleToUser(isVisibleToUser());
+
Rect boundsInScreen = boundsInParent;
int[] locationOnScreen = mTempArray;
getLocationOnScreen(locationOnScreen);
boundsInScreen.offset(locationOnScreen[0], locationOnScreen[1]);
+ boundsInScreen.scale(applicationScale);
info.setBoundsInScreen(boundsInScreen);
if (mAccessibilityFocusedView != View.NO_ID) {