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

Commit bf63e9cf authored by Alex Chau's avatar Alex Chau Committed by Android (Google) Code Review
Browse files

Merge "Add debug logs for testPromiseIcon_addedFromEligibleSession"

parents 7823e8b5 701774d0
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2401,6 +2401,10 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
                    } else {
                        Log.d(TAG, desc);
                        getModelWriter().deleteItemFromDatabase(item);
                        if (TestProtocol.sDebugTracing) {
                            Log.d(TestProtocol.MISSING_PROMISE_ICON,
                                    TAG + "bindItems failed for item=" + item);
                        }
                        continue;
                    }
                }
+17 −0
Original line number Diff line number Diff line
@@ -24,12 +24,14 @@ import android.content.pm.PackageInstaller.SessionInfo;
import android.content.pm.PackageManager;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;

import androidx.annotation.WorkerThread;

import com.android.launcher3.logging.FileLog;
import com.android.launcher3.model.ItemInstallQueue;
import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.util.Executors;

/**
@@ -51,6 +53,9 @@ public class SessionCommitReceiver extends BroadcastReceiver {
    private static void processIntent(Context context, Intent intent) {
        if (!isEnabled(context)) {
            // User has decided to not add icons on homescreen.
            if (TestProtocol.sDebugTracing) {
                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " not enabled");
            }
            return;
        }

@@ -59,6 +64,9 @@ public class SessionCommitReceiver extends BroadcastReceiver {
        if (!PackageInstaller.ACTION_SESSION_COMMITTED.equals(intent.getAction())
                || info == null || user == null) {
            // Invalid intent.
            if (TestProtocol.sDebugTracing) {
                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " invalid intent");
            }
            return;
        }

@@ -68,6 +76,15 @@ public class SessionCommitReceiver extends BroadcastReceiver {
                || info.getInstallReason() != PackageManager.INSTALL_REASON_USER
                || packageInstallerCompat.promiseIconAddedForId(info.getSessionId())) {
            packageInstallerCompat.removePromiseIconId(info.getSessionId());
            if (TestProtocol.sDebugTracing) {
                int id = info.getSessionId();
                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG
                        + ", TextUtils.isEmpty=" + TextUtils.isEmpty(info.getAppPackageName())
                        + ", info.getInstallReason()=" + info.getInstallReason()
                        + ", INSTALL_REASON_USER=" + PackageManager.INSTALL_REASON_USER
                        + ", icon added=" + packageInstallerCompat.promiseIconAddedForId(id)
                );
            }
            return;
        }

+22 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.pm.LauncherActivityInfo;
import android.content.pm.LauncherApps;
import android.content.pm.PackageInstaller.SessionInfo;
import android.os.UserHandle;
import android.util.Log;
import android.util.LongSparseArray;
import android.util.Pair;

@@ -39,6 +40,7 @@ import com.android.launcher3.model.data.LauncherAppWidgetInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.pm.PackageInstallInfo;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.util.GridOccupancy;
import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.IntSet;
@@ -82,11 +84,19 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask {
                        item.itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT) {
                    // Short-circuit this logic if the icon exists somewhere on the workspace
                    if (shortcutExists(dataModel, item.getIntent(), item.user)) {
                        if (TestProtocol.sDebugTracing) {
                            Log.d(TestProtocol.MISSING_PROMISE_ICON,
                                    LOG + " Item already on workspace.");
                        }
                        continue;
                    }

                    // b/139663018 Short-circuit this logic if the icon is a system app
                    if (PackageManagerHelper.isSystemApp(app.getContext(), item.getIntent())) {
                        if (TestProtocol.sDebugTracing) {
                            Log.d(TestProtocol.MISSING_PROMISE_ICON,
                                    LOG + " Item is a system app.");
                        }
                        continue;
                    }
                }
@@ -126,6 +136,9 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask {
                    String packageName = item.getTargetComponent() != null
                            ? item.getTargetComponent().getPackageName() : null;
                    if (packageName == null) {
                        if (TestProtocol.sDebugTracing) {
                            Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " Null packageName.");
                        }
                        continue;
                    }
                    SessionInfo sessionInfo = packageInstaller.getActiveSessionInfo(item.user,
@@ -134,6 +147,9 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask {
                    if (!packageInstaller.verifySessionInfo(sessionInfo)) {
                        FileLog.d(LOG, "Item info failed session info verification. "
                                + "Skipping : " + workspaceInfo);
                        if (TestProtocol.sDebugTracing) {
                            Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + "Failed verification.");
                        }
                        continue;
                    }

@@ -144,6 +160,9 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask {
                    if (sessionInfo == null) {
                        if (!hasActivity) {
                            // Session was cancelled, do not add.
                            if (TestProtocol.sDebugTracing) {
                                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + "Session cancelled");
                            }
                            continue;
                        }
                    } else {
@@ -163,6 +182,9 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask {
                            // workspace items as promise icons. At this point we now have the
                            // correct intent to compare against existing workspace icons.
                            // Icon already exists on the workspace and should not be auto-added.
                            if (TestProtocol.sDebugTracing) {
                                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + "shortcutExists");
                            }
                            continue;
                        }

+17 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import com.android.launcher3.model.data.LauncherAppWidgetInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.shortcuts.ShortcutKey;
import com.android.launcher3.shortcuts.ShortcutRequest;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.util.PersistedItemArray;
import com.android.launcher3.util.Preconditions;
@@ -118,10 +119,18 @@ public class ItemInstallQueue {
        Launcher launcher = Launcher.ACTIVITY_TRACKER.getCreatedActivity();
        if (launcher == null) {
            // Launcher not loaded
            if (TestProtocol.sDebugTracing) {
                Log.d(TestProtocol.MISSING_PROMISE_ICON,
                        LOG + " flushQueueInBackground launcher not loaded");
            }
            return;
        }
        ensureQueueLoaded();
        if (mItems.isEmpty()) {
            if (TestProtocol.sDebugTracing) {
                Log.d(TestProtocol.MISSING_PROMISE_ICON,
                        LOG + " flushQueueInBackground no items to load");
            }
            return;
        }

@@ -131,6 +140,10 @@ public class ItemInstallQueue {

        // Add the items and clear queue
        if (!installQueue.isEmpty()) {
            if (TestProtocol.sDebugTracing) {
                Log.d(TestProtocol.MISSING_PROMISE_ICON,
                        LOG + " flushQueueInBackground launcher addAndBindAddedWorkspaceItems");
            }
            // add log
            launcher.getModel().addAndBindAddedWorkspaceItems(installQueue);
        }
@@ -191,6 +204,10 @@ public class ItemInstallQueue {
        // Queue the item up for adding if launcher has not loaded properly yet
        MODEL_EXECUTOR.post(() -> {
            Pair<ItemInfo, Object> itemInfo = info.getItemInfo(mContext);
            if (TestProtocol.sDebugTracing) {
                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " queuePendingShortcutInfo"
                        + ", itemInfo=" + itemInfo);
            }
            if (itemInfo == null) {
                FileLog.d(LOG,
                        "Adding PendingInstallShortcutInfo with no attached info to queue.",
+34 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.content.pm.PackageManager;
import android.os.Process;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
@@ -38,6 +39,7 @@ import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
import com.android.launcher3.logging.FileLog;
import com.android.launcher3.model.ItemInstallQueue;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.util.IntArray;
import com.android.launcher3.util.IntSet;
import com.android.launcher3.util.MainThreadInitializedObject;
@@ -142,6 +144,16 @@ public class InstallSessionHelper {
        if (sessionInfo == null
                || sessionInfo.getInstallerPackageName() == null
                || TextUtils.isEmpty(sessionInfo.getAppPackageName())) {
            if (TestProtocol.sDebugTracing) {
                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " verify"
                        + ", info=" + (sessionInfo == null)
                        + ", info install name" + (sessionInfo == null
                                ? null
                                : sessionInfo.getInstallerPackageName())
                        + ", empty pkg name" + TextUtils.isEmpty((sessionInfo == null
                                ? null
                                : sessionInfo.getAppPackageName())));
            }
            return null;
        }
        String pkg = sessionInfo.getInstallerPackageName();
@@ -211,6 +223,14 @@ public class InstallSessionHelper {
     */
    @WorkerThread
    void tryQueuePromiseAppIcon(PackageInstaller.SessionInfo sessionInfo) {
        if (TestProtocol.sDebugTracing) {
            Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " tryQueuePromiseAppIcon"
                    + ", FeatureFlags=" + FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get()
                    + ", SessionCommitReceiveEnabled" + SessionCommitReceiver.isEnabled(mAppContext)
                    + ", verifySessionInfo(sessionInfo)=" + verifySessionInfo(sessionInfo)
                    + ", !promiseIconAdded=" + (sessionInfo != null
                    && !promiseIconAddedForId(sessionInfo.getSessionId())));
        }
        if (FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get()
                && SessionCommitReceiver.isEnabled(mAppContext)
                && verifySessionInfo(sessionInfo)
@@ -227,6 +247,20 @@ public class InstallSessionHelper {
    }

    public boolean verifySessionInfo(PackageInstaller.SessionInfo sessionInfo) {
        if (TestProtocol.sDebugTracing) {
            boolean appNotInstalled = sessionInfo == null
                    || !new PackageManagerHelper(mAppContext)
                    .isAppInstalled(sessionInfo.getAppPackageName(), getUserHandle(sessionInfo));
            boolean labelNotEmpty = sessionInfo != null
                    && !TextUtils.isEmpty(sessionInfo.getAppLabel());
            Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " verifySessionInfo"
                    + ", verify(sessionInfo)=" + verify(sessionInfo)
                    + ", reason=" + (sessionInfo == null ? null : sessionInfo.getInstallReason())
                    + ", PackageManager.INSTALL_REASON_USER=" + PackageManager.INSTALL_REASON_USER
                    + ", hasIcon=" + (sessionInfo != null && sessionInfo.getAppIcon() != null)
                    + ", label is ! empty=" + labelNotEmpty
                    + " +, app not installed="  + appNotInstalled);
        }
        return verify(sessionInfo) != null
                && sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER
                && sessionInfo.getAppIcon() != null
Loading