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

Commit 3716d96b authored by Svetoslav's avatar Svetoslav Committed by Android (Google) Code Review
Browse files

Merge "DynamicIndexableContentMonito should respect lacking software features."

parents 6734408f 149c1361
Loading
Loading
Loading
Loading
+75 −50
Original line number Diff line number Diff line
@@ -74,10 +74,15 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
        }
    };

    private final ContentObserver mContentObserver = new MyContentObserver(mHandler);
    private final ContentObserver mUserDictionaryContentObserver =
            new UserDictionaryContentObserver(mHandler);

    private Context mContext;

    private boolean mHasFeturePrinting;

    private boolean mHasFetureIme;

    private static Intent getAccessibilityServiceIntent(String packageName) {
        final Intent intent = new Intent(AccessibilityService.SERVICE_INTERFACE);
        intent.setPackage(packageName);
@@ -99,6 +104,11 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
    public void register(Context context) {
        mContext = context;

        mHasFeturePrinting = mContext.getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_PRINTING);
        mHasFetureIme = mContext.getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_INPUT_METHODS);

        // Cache accessibility service packages to know when they go away.
        AccessibilityManager accessibilityManager = (AccessibilityManager)
                mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
@@ -114,6 +124,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
            mAccessibilityServices.add(resolveInfo.serviceInfo.packageName);
        }

        if (mHasFeturePrinting) {
            // Cache print service packages to know when they go away.
            PrintManager printManager = (PrintManager)
                    mContext.getSystemService(Context.PRINT_SERVICE);
@@ -127,8 +138,10 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
                }
                mPrintServices.add(resolveInfo.serviceInfo.packageName);
            }
        }

        // Cache IME service packages to know when they go away.
        if (mHasFetureIme) {
            InputMethodManager imeManager = (InputMethodManager)
                    mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
            List<InputMethodInfo> inputMethods = imeManager.getInputMethodList();
@@ -142,7 +155,8 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme

            // Watch for related content URIs.
            mContext.getContentResolver().registerContentObserver(
                UserDictionary.Words.CONTENT_URI, true, mContentObserver);
                    UserDictionary.Words.CONTENT_URI, true, mUserDictionaryContentObserver);
        }

        // Watch for input device changes.
        InputManager inputManager = (InputManager) context.getSystemService(
@@ -160,7 +174,10 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
                Context.INPUT_SERVICE);
        inputManager.unregisterInputDeviceListener(this);

        mContext.getContentResolver().unregisterContentObserver(mContentObserver);
        if (mHasFetureIme) {
            mContext.getContentResolver().unregisterContentObserver(
                    mUserDictionaryContentObserver);
        }

        mAccessibilityServices.clear();
        mPrintServices.clear();
@@ -225,6 +242,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
            }
        }

        if (mHasFeturePrinting) {
            if (!mPrintServices.contains(packageName)) {
                final Intent intent = getPrintServiceIntent(packageName);
                if (!mContext.getPackageManager().queryIntentServices(intent, 0).isEmpty()) {
@@ -233,7 +251,9 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
                            PrintSettingsFragment.class.getName(), false, true);
                }
            }
        }

        if (mHasFetureIme) {
            if (!mImeServices.contains(packageName)) {
                Intent intent = getIMEServiceIntent(packageName);
                if (!mContext.getPackageManager().queryIntentServices(intent, 0).isEmpty()) {
@@ -243,6 +263,7 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
                }
            }
        }
    }

    private void handlePackageUnavailable(String packageName) {
        final int accessibilityIndex = mAccessibilityServices.indexOf(packageName);
@@ -252,13 +273,16 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
                    AccessibilitySettings.class.getName(), true, true);
        }

        if (mHasFeturePrinting) {
            final int printIndex = mPrintServices.indexOf(packageName);
            if (printIndex >= 0) {
                mPrintServices.remove(printIndex);
                Index.getInstance(mContext).updateFromClassNameResource(
                        PrintSettingsFragment.class.getName(), true, true);
            }
        }

        if (mHasFetureIme) {
            final int imeIndex = mImeServices.indexOf(packageName);
            if (imeIndex >= 0) {
                mImeServices.remove(imeIndex);
@@ -266,10 +290,11 @@ public final class DynamicIndexableContentMonitor extends PackageMonitor impleme
                        InputMethodAndLanguageSettings.class.getName(), true, true);
            }
        }
    }

    private final class MyContentObserver extends ContentObserver {
    private final class UserDictionaryContentObserver extends ContentObserver {

        public MyContentObserver(Handler handler) {
        public UserDictionaryContentObserver(Handler handler) {
            super(handler);
        }