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

Commit 05bacc15 authored by Xin Guan's avatar Xin Guan
Browse files

Offer more details about widget interaction.

Bug: 296061232
Test: manual test with widget interaction

Change-Id: I4a00403dd17491339c4563cba5d3d4daa4b4b709
parent 6fb6c6f8
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;