Merge "Exclude accessing settings from PointerIcon."
diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java
index aa879cd..7ba046b 100644
--- a/core/java/android/view/PointerIcon.java
+++ b/core/java/android/view/PointerIcon.java
@@ -17,8 +17,6 @@
 package android.view;
 
 import android.annotation.NonNull;
-import android.os.UserHandle;
-import android.provider.Settings;
 import android.util.SparseArray;
 import com.android.internal.util.XmlUtils;
 
@@ -142,6 +140,9 @@
     private static final PointerIcon gNullIcon = new PointerIcon(STYLE_NULL);
     private static final SparseArray<PointerIcon> gSystemIcons = new SparseArray<PointerIcon>();
 
+    /** @hide */
+    public static boolean sUseLargeIcons = false;
+
     private final int mStyle;
     private int mSystemIconResourceId;
     private Bitmap mBitmap;
@@ -210,10 +211,7 @@
             styleIndex = getSystemIconStyleIndex(STYLE_DEFAULT);
         }
 
-        int accessibilityConfig = Settings.Secure.getIntForUser(
-                    context.getContentResolver(), Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON,
-                    0, UserHandle.USER_CURRENT);
-        int defStyle = (accessibilityConfig == 1) ?
+        int defStyle = sUseLargeIcons ?
                 com.android.internal.R.style.LargePointer : com.android.internal.R.style.Pointer;
         TypedArray a = context.obtainStyledAttributes(null,
                 com.android.internal.R.styleable.Pointer,
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 8b37383..68b3817 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -320,12 +320,13 @@
             public void onReceive(Context context, Intent intent) {
                 updatePointerSpeedFromSettings();
                 updateShowTouchesFromSettings();
-                nativeReloadPointerIcons(mPtr);
+                updateAccessibilityLargePointerFromSettings();
             }
         }, new IntentFilter(Intent.ACTION_USER_SWITCHED), null, mHandler);
 
         updatePointerSpeedFromSettings();
         updateShowTouchesFromSettings();
+        updateAccessibilityLargePointerFromSettings();
     }
 
     // TODO(BT) Pass in paramter for bluetooth system
@@ -1366,13 +1367,21 @@
                 }, UserHandle.USER_ALL);
     }
 
+    public void updateAccessibilityLargePointerFromSettings() {
+        final int accessibilityConfig = Settings.Secure.getIntForUser(
+                mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON,
+                0, UserHandle.USER_CURRENT);
+        PointerIcon.sUseLargeIcons = (accessibilityConfig == 1);
+        nativeReloadPointerIcons(mPtr);
+    }
+
     private void registerAccessibilityLargePointerSettingObserver() {
         mContext.getContentResolver().registerContentObserver(
                 Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_LARGE_POINTER_ICON), true,
                 new ContentObserver(mHandler) {
                     @Override
                     public void onChange(boolean selfChange) {
-                        nativeReloadPointerIcons(mPtr);
+                        updateAccessibilityLargePointerFromSettings();
                     }
                 }, UserHandle.USER_ALL);
     }