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

Commit 4c22f20d authored by Xin Guan's avatar Xin Guan Committed by Android (Google) Code Review
Browse files

Merge "Offer more details about widget interaction." into main

parents 3f6775c8 05bacc15
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -43,7 +43,9 @@ import android.app.KeyguardManager;
import android.app.PendingIntent;
import android.app.admin.DevicePolicyManagerInternal;
import android.app.admin.DevicePolicyManagerInternal.OnCrossProfileWidgetProvidersChangeListener;
import android.app.usage.Flags;
import android.app.usage.UsageEvents;
import android.app.usage.UsageStatsManager;
import android.app.usage.UsageStatsManagerInternal;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetManagerInternal;
@@ -83,6 +85,7 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemClock;
@@ -3815,14 +3818,27 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
                final SparseArray<String> uid2PackageName = new SparseArray<String>();
                uid2PackageName.put(providerId.uid, packageName);
                mAppOpsManagerInternal.updateAppWidgetVisibility(uid2PackageName, true);
                mUsageStatsManagerInternal.reportEvent(packageName,
                        UserHandle.getUserId(providerId.uid), UsageEvents.Event.USER_INTERACTION);
                reportWidgetInteractionEvent(packageName, UserHandle.getUserId(providerId.uid),
                        "tap");
            }
        } finally {
            Binder.restoreCallingIdentity(ident);
        }
    }

    private void reportWidgetInteractionEvent(@NonNull String packageName, @UserIdInt int userId,
            @NonNull String action) {
        if (Flags.userInteractionTypeApi()) {
            PersistableBundle extras = new PersistableBundle();
            extras.putString(UsageStatsManager.EXTRA_EVENT_CATEGORY, "android.appwidget");
            extras.putString(UsageStatsManager.EXTRA_EVENT_ACTION, action);
            mUsageStatsManagerInternal.reportUserInteractionEvent(packageName, userId, extras);
        } else {
            mUsageStatsManagerInternal.reportEvent(packageName, userId,
                    UsageEvents.Event.USER_INTERACTION);
        }
    }

    private final class CallbackHandler extends Handler {
        public static final int MSG_NOTIFY_UPDATE_APP_WIDGET = 1;
        public static final int MSG_NOTIFY_PROVIDER_CHANGED = 2;