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

Commit e0526686 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Check if anyone could possibly provide service."

parents a4aa4cbe 05ed25c4
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -141,8 +141,12 @@ public class ServiceWatcher implements ServiceConnection {
     * <p>
     * Note that if there are no matching encryption-aware services, we may not
     * bind to a real service until after the current user is unlocked.
     *
     * @returns {@code true} if a potential service implementation was found.
     */
    public boolean start() {
        if (isServiceMissing()) return false;

        synchronized (mLock) {
            bindBestPackageLocked(mServicePackageName, false);
        }
@@ -173,6 +177,17 @@ public class ServiceWatcher implements ServiceConnection {
        return true;
    }

    /**
     * Check if any instance of this service is present on the device,
     * regardless of it being encryption-aware or not.
     */
    private boolean isServiceMissing() {
        final Intent intent = new Intent(mAction);
        final int flags = PackageManager.MATCH_DIRECT_BOOT_AWARE
                | PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
        return mPm.queryIntentServicesAsUser(intent, flags, mCurrentUserId).isEmpty();
    }

    /**
     * Searches and binds to the best package, or do nothing if the best package
     * is already bound, unless force rebinding is requested.
@@ -181,7 +196,7 @@ public class ServiceWatcher implements ServiceConnection {
     *            packages if it is {@code null}.
     * @param forceRebind Force a rebinding to the best package if it's already
     *            bound.
     * @return {@code true} if a valid package was found to bind to.
     * @returns {@code true} if a valid package was found to bind to.
     */
    private boolean bindBestPackageLocked(String justCheckThisPackage, boolean forceRebind) {
        Intent intent = new Intent(mAction);