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

Commit e4e75daa authored by Jun Mukai's avatar Jun Mukai
Browse files

Exclude accessing settings from PointerIcon.

This code structure causes a crash as rerported, better to extract
access to the settings to InputManagerService, who actually cares
about it.

Bug: 26196092
Change-Id: I4e0dbcc24ccf5d11681738ca3576b64471aa8cc4
parent 277fa3cf
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -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 @@ public final class PointerIcon implements Parcelable {
    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 @@ public final class PointerIcon implements Parcelable {
            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,
+11 −2
Original line number Diff line number Diff line
@@ -320,12 +320,13 @@ public class InputManagerService extends IInputManager.Stub
            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 @@ public class InputManagerService extends IInputManager.Stub
                }, 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);
    }