Add logs for the PrivacyHub.

BUG: 191275337

Test: m statsd_testdrive
Change-Id: I60adec90eb088e7c1196260393455dc602369546
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsageV2Fragment.java b/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsageV2Fragment.java
index 7e90178..30080d2 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsageV2Fragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/debug/PermissionUsageV2Fragment.java
@@ -16,6 +16,12 @@
 
 package com.android.permissioncontroller.permission.debug;
 
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__OPEN;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SEE_OTHER_PERMISSIONS_CLICKED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SHOW_SYSTEM_CLICKED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.write;
+
 import static java.util.concurrent.TimeUnit.DAYS;
 
 import android.Manifest;
@@ -59,6 +65,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Random;
 import java.util.Set;
 
 /**
@@ -87,6 +94,9 @@
             PERMISSION_GROUP_ORDER.size() + 1;
     private static final int EXPAND_BUTTON_ORDER = 999;
 
+    private static final String KEY_SESSION_ID = PermissionUsageV2Fragment.class.getName()
+            + "_REQUEST_ID";
+
     private @NonNull PermissionUsages mPermissionUsages;
     private @Nullable List<AppPermissionUsage> mAppPermissionUsages = new ArrayList<>();
 
@@ -104,10 +114,19 @@
 
     private PermissionUsageGraphicPreference mGraphic;
 
+    /** Unique Id of a request */
+    private long mSessionId;
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        if (savedInstanceState == null) {
+            mSessionId = new Random().nextLong();
+        } else {
+            mSessionId = savedInstanceState.getLong(KEY_SESSION_ID);
+        }
+
         mFinishedInitialLoad = false;
 
         // By default, do not show system app usages.
@@ -198,6 +217,9 @@
     public void onStart() {
         super.onStart();
         getActivity().setTitle(R.string.permission_usage_title);
+
+        write(PERMISSION_USAGE_FRAGMENT_INTERACTION, mSessionId,
+                PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__OPEN);
     }
 
     @Override
@@ -226,6 +248,9 @@
                 getActivity().finishAfterTransition();
                 return true;
             case MENU_SHOW_SYSTEM:
+                write(PERMISSION_USAGE_FRAGMENT_INTERACTION, mSessionId,
+                        PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SHOW_SYSTEM_CLICKED);
+                // fall through
             case MENU_HIDE_SYSTEM:
                 mShowSystem = item.getItemId() == MENU_SHOW_SYSTEM;
                 // We already loaded all data, so don't reload
@@ -260,6 +285,14 @@
         return R.string.no_permission_usages;
     }
 
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+        if (outState != null) {
+            outState.putLong(KEY_SESSION_ID, mSessionId);
+        }
+    }
+
     private void updateUI() {
         if (mAppPermissionUsages.isEmpty() || getActivity() == null) {
             return;
@@ -279,6 +312,10 @@
             screen.setInitialExpandedChildrenCount(
                     PERMISSION_USAGE_INITIAL_EXPANDED_CHILDREN_COUNT);
         }
+        screen.setOnExpandButtonClickListener(() -> {
+            write(PERMISSION_USAGE_FRAGMENT_INTERACTION, mSessionId,
+                    PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__SEE_OTHER_PERMISSIONS_CLICKED);
+        });
 
         long curTime = System.currentTimeMillis();
         long startTime = Math.max(curTime - TIME_FILTER_MILLIS,
@@ -441,7 +478,7 @@
                 Map.Entry<String, Integer> currentEntry = usages.get(i);
                 PermissionUsageV2ControlPreference permissionUsagePreference =
                         new PermissionUsageV2ControlPreference(context, currentEntry.getKey(),
-                                currentEntry.getValue(), mShowSystem);
+                                currentEntry.getValue(), mShowSystem, mSessionId);
                 category.addPreference(permissionUsagePreference);
             }
 
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionUsageV2ControlPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionUsageV2ControlPreference.java
index f2fc04f..794c760 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionUsageV2ControlPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/PermissionUsageV2ControlPreference.java
@@ -16,6 +16,12 @@
 
 package com.android.permissioncontroller.permission.ui.handheld;
 
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__CAMERA_ACCESS_TIMELINE_VIEWED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__LOCATION_ACCESS_TIMELINE_VIEWED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__MICROPHONE_ACCESS_TIMELINE_VIEWED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.write;
+
 import android.Manifest;
 import android.content.Context;
 import android.content.Intent;
@@ -47,14 +53,16 @@
     private final String mGroupName;
     private final int mCount;
     private final boolean mShowSystem;
+    private final long mSessionId;
 
     public PermissionUsageV2ControlPreference(@NonNull Context context, @NonNull String groupName,
-            int count, boolean showSystem) {
+            int count, boolean showSystem, long sessionId) {
         super(context);
         mContext = context;
         mGroupName = groupName;
         mCount = count;
         mShowSystem = showSystem;
+        mSessionId = sessionId;
 
         CharSequence permGroupLabel = KotlinUtils.INSTANCE.getPermGroupLabel(mContext, mGroupName);
         setTitle(permGroupLabel);
@@ -71,6 +79,8 @@
                 intent.putExtra(Intent.EXTRA_PERMISSION_GROUP_NAME, mGroupName);
                 intent.putExtra(ManagePermissionsActivity.EXTRA_SHOW_SYSTEM, mShowSystem);
 
+                logSensorDataTimelineViewed(mGroupName);
+
                 mContext.startActivity(intent);
                 return true;
             });
@@ -85,6 +95,18 @@
         }
     }
 
+    private void logSensorDataTimelineViewed(String groupName) {
+        int act = 0;
+        if (groupName.equals(Manifest.permission_group.LOCATION)) {
+            act = PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__LOCATION_ACCESS_TIMELINE_VIEWED;
+        } else if (groupName.equals(Manifest.permission_group.CAMERA)) {
+            act = PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__CAMERA_ACCESS_TIMELINE_VIEWED;
+        } else if (groupName.equals(Manifest.permission_group.MICROPHONE)) {
+            act = PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__MICROPHONE_ACCESS_TIMELINE_VIEWED;
+        }
+        write(PERMISSION_USAGE_FRAGMENT_INTERACTION, mSessionId, act);
+    }
+
     @Override
     public void onBindViewHolder(PreferenceViewHolder view) {
         super.onBindViewHolder(view);