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) {