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

Commit 7da2a0c5 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Check if anyone could possibly provide service." into nyc-mr1-dev

parents 9ed777d0 f6e9b951
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);