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

Commit a8c7c0b7 authored by Jon Miranda's avatar Jon Miranda
Browse files

Only add promise icon if icon is provided in the SessionInfo.

- In some cases, SessionInfo is created without an icon until later on
  in the install process. This prevents promise icons with default Android
  logo from appearing.
- This will also prevent apps without a launching activity from appearing
  as a promise icon and then disappearing when the app is installed.

Bug: 135633159
Change-Id: I30adde8bf2cf583bffca8ed878f9cc20d6d41a13
parent 78ebf57e
Loading
Loading
Loading
Loading
+24 −11
Original line number Diff line number Diff line
@@ -136,6 +136,25 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
        }
    }

    /**
     * Add a promise app icon to the workspace iff:
     * - The settings for it are enabled
     * - The user installed the app
     * - There is a provided app icon (For apps with no launching activity, no icon is provided).
     */
    private void tryQueuePromiseAppIcon(SessionInfo sessionInfo) {
        if (Utilities.ATLEAST_OREO && FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get()
                && SessionCommitReceiver.isEnabled(mAppContext)
                && sessionInfo != null
                && sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER
                && sessionInfo.getAppIcon() != null
                && !mPromiseIconIds.contains(sessionInfo.getSessionId())) {
            SessionCommitReceiver.queuePromiseAppIconAddition(mAppContext, sessionInfo);
            mPromiseIconIds.add(sessionInfo.getSessionId());
            updatePromiseIconPrefs();
        }
    }

    private final SessionCallback mCallback = new SessionCallback() {

        @Override
@@ -149,16 +168,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
                }
            }

            if (Utilities.ATLEAST_OREO && FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get()
                    && SessionCommitReceiver.isEnabled(mAppContext)
                    && sessionInfo != null
                    && sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER) {
                SessionCommitReceiver.queuePromiseAppIconAddition(mAppContext, sessionInfo);
                if (!mPromiseIconIds.contains(sessionInfo.getSessionId())) {
                    mPromiseIconIds.add(sessionInfo.getSessionId());
                    updatePromiseIconPrefs();
                }
            }
            tryQueuePromiseAppIcon(sessionInfo);
        }

        @Override
@@ -196,7 +206,10 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {

        @Override
        public void onBadgingChanged(int sessionId) {
            pushSessionDisplayToLauncher(sessionId);
            SessionInfo sessionInfo = pushSessionDisplayToLauncher(sessionId);
            if (sessionInfo != null) {
                tryQueuePromiseAppIcon(sessionInfo);
            }
        }

        private SessionInfo pushSessionDisplayToLauncher(int sessionId) {