Merge "Empty state for unused apps screen on Auto" into sc-v2-dev
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
index 61f7dde..bf48e28 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java
@@ -25,6 +25,8 @@
 import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION__ACTION__OPENED_FOR_AUTO_REVOKE;
 import static com.android.permissioncontroller.PermissionControllerStatsLog.APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION__ACTION__OPENED_FROM_INTENT;
 import static com.android.permissioncontroller.PermissionControllerStatsLog.AUTO_REVOKE_NOTIFICATION_CLICKED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__OPEN;
 
 import android.app.ActionBar;
 import android.content.Intent;
@@ -163,9 +165,12 @@
                     return;
                 }
 
+
+                PermissionControllerStatsLog.write(PERMISSION_USAGE_FRAGMENT_INTERACTION, sessionId,
+                        PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__OPEN);
                 String groupName = getIntent().getStringExtra(Intent.EXTRA_PERMISSION_GROUP_NAME);
                 androidXFragment = PermissionUsageV2WrapperFragment.newInstance(groupName,
-                        Long.MAX_VALUE);
+                        Long.MAX_VALUE, sessionId);
             } break;
 
             case Intent.ACTION_REVIEW_PERMISSION_HISTORY: {
@@ -179,7 +184,7 @@
                 boolean showSystem = getIntent()
                         .getBooleanExtra(EXTRA_SHOW_SYSTEM, false);
                 androidXFragment = PermissionDetailsWrapperFragment
-                        .newInstance(groupName, Long.MAX_VALUE, showSystem);
+                        .newInstance(groupName, Long.MAX_VALUE, showSystem, sessionId);
                 break;
             }
 
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsFragment.java
index 034f666..05e7292 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsFragment.java
@@ -16,6 +16,9 @@
 
 package com.android.permissioncontroller.permission.ui.handheld.dashboard;
 
+import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
+import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
+
 import static java.util.concurrent.TimeUnit.DAYS;
 import static java.util.concurrent.TimeUnit.HOURS;
 import static java.util.concurrent.TimeUnit.MINUTES;
@@ -98,6 +101,10 @@
     private static final String SHOW_SYSTEM_KEY = PermissionDetailsFragment.class.getName()
             + KEY_SHOW_SYSTEM_PREFS;
 
+    private static final String KEY_SESSION_ID = "_session_id";
+    private static final String SESSION_ID_KEY = PermissionDetailsFragment.class.getName()
+            + KEY_SESSION_ID;
+
     private @Nullable String mFilterGroup;
     private @Nullable List<AppPermissionUsage> mAppPermissionUsages = new ArrayList<>();
     private @NonNull List<TimeFilterItem> mFilterTimes;
@@ -112,6 +119,8 @@
     private MenuItem mHideSystemMenu;
     private @NonNull RoleManager mRoleManager;
 
+    private long mSessionId;
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -122,9 +131,11 @@
 
         if (savedInstanceState != null) {
             mShowSystem = savedInstanceState.getBoolean(SHOW_SYSTEM_KEY);
+            mSessionId = savedInstanceState.getLong(SESSION_ID_KEY);
         } else {
             mShowSystem = getArguments().getBoolean(
                     ManagePermissionsActivity.EXTRA_SHOW_SYSTEM, false);
+            mSessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
         }
 
         if (mFilterGroup == null) {
@@ -219,6 +230,7 @@
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putBoolean(SHOW_SYSTEM_KEY, mShowSystem);
+        outState.putLong(SESSION_ID_KEY, mSessionId);
     }
 
     @Override
@@ -507,7 +519,8 @@
                         usage.mAppPermissionUsage.getApp().getIcon(),
                         usage.mAppPermissionUsage.getApp().getLabel(),
                         mFilterGroup, accessTime, summaryLabel, accessTimeList, attributionTags,
-                        usageNum == (numUsages - 1)
+                        usageNum == (numUsages - 1),
+                        mSessionId
                 );
 
                 category.get().addPreference(permissionUsagePreference);
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsWrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsWrapperFragment.java
index 6edda41..9dad6d0 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsWrapperFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionDetailsWrapperFragment.java
@@ -16,6 +16,8 @@
 
 package com.android.permissioncontroller.permission.ui.handheld.dashboard;
 
+import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
+
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
@@ -43,7 +45,7 @@
      * Construct a new instance of PermissionDetailsFragment
      */
     public static @NonNull PermissionDetailsWrapperFragment newInstance(@Nullable String groupName,
-            long numMillis, boolean showSystem) {
+            long numMillis, boolean showSystem, long sessionId) {
         PermissionDetailsWrapperFragment fragment = new PermissionDetailsWrapperFragment();
         Bundle arguments = new Bundle();
         if (groupName != null) {
@@ -51,6 +53,7 @@
         }
         arguments.putLong(Intent.EXTRA_DURATION_MILLIS, numMillis);
         arguments.putBoolean(ManagePermissionsActivity.EXTRA_SHOW_SYSTEM, showSystem);
+        arguments.putLong(EXTRA_SESSION_ID, sessionId);
         fragment.setArguments(arguments);
         return fragment;
     }
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionHistoryPreference.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionHistoryPreference.java
index cec464d..e7fe255 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionHistoryPreference.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionHistoryPreference.java
@@ -16,6 +16,10 @@
 
 package com.android.permissioncontroller.permission.ui.handheld.dashboard;
 
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_DETAILS_INTERACTION;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.PERMISSION_DETAILS_INTERACTION__ACTION__INFO_ICON_CLICKED;
+import static com.android.permissioncontroller.PermissionControllerStatsLog.write;
+
 import android.app.Dialog;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
@@ -72,6 +76,8 @@
     private final boolean mIsLastUsage;
     private final Intent mIntent;
 
+    private final long mSessionId;
+
     private Drawable mWidgetIcon;
 
     public PermissionHistoryPreference(@NonNull Context context,
@@ -80,7 +86,7 @@
             @NonNull String preferenceTitle,
             @NonNull String permissionGroup, @NonNull String accessTime,
             @Nullable CharSequence summaryText, @NonNull List<Long> accessTimeList,
-            @NonNull ArrayList<String> attributionTags, boolean isLastUsage) {
+            @NonNull ArrayList<String> attributionTags, boolean isLastUsage, long sessionId) {
         super(context);
         mContext = context;
         mUserHandle = userHandle;
@@ -100,6 +106,7 @@
         mContext.getResources().getValue(R.dimen.permission_access_time_dialog_height_scalar,
                 outValue, true);
         mDialogHeightScalar = outValue.getFloat();
+        mSessionId = sessionId;
 
         setTitle(mTitle);
         if (summaryText != null) {
@@ -212,6 +219,11 @@
         if (mIntent != null) {
             widgetView.setImageDrawable(mWidgetIcon);
             widgetView.setOnClickListener(v -> {
+                write(PERMISSION_DETAILS_INTERACTION,
+                        mSessionId,
+                        mPermissionGroup,
+                        mPackageName,
+                        PERMISSION_DETAILS_INTERACTION__ACTION__INFO_ICON_CLICKED);
                 try {
                     mContext.startActivity(mIntent);
                 } catch (ActivityNotFoundException e) {
@@ -293,4 +305,4 @@
             return mAccessTimeList.size();
         }
     }
-}
+}
\ No newline at end of file
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2Fragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2Fragment.java
index 9ce1c7c..33662a9 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2Fragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2Fragment.java
@@ -16,8 +16,9 @@
 
 package com.android.permissioncontroller.permission.ui.handheld.dashboard;
 
+import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
+import static com.android.permissioncontroller.Constants.INVALID_SESSION_ID;
 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;
@@ -64,7 +65,6 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Random;
 import java.util.Set;
 
 /**
@@ -93,8 +93,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 static final String KEY_SESSION_ID = "_session_id";
+    private static final String SESSION_ID_KEY = PermissionUsageV2Fragment.class.getName()
+            + KEY_SESSION_ID;
 
     private @NonNull PermissionUsages mPermissionUsages;
     private @Nullable List<AppPermissionUsage> mAppPermissionUsages = new ArrayList<>();
@@ -120,10 +121,10 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        if (savedInstanceState == null) {
-            mSessionId = new Random().nextLong();
+        if (savedInstanceState != null) {
+            mSessionId = savedInstanceState.getLong(SESSION_ID_KEY);
         } else {
-            mSessionId = savedInstanceState.getLong(KEY_SESSION_ID);
+            mSessionId = getArguments().getLong(EXTRA_SESSION_ID, INVALID_SESSION_ID);
         }
 
         mFinishedInitialLoad = false;
@@ -217,8 +218,6 @@
         super.onStart();
         getActivity().setTitle(R.string.permission_usage_title);
 
-        write(PERMISSION_USAGE_FRAGMENT_INTERACTION, mSessionId,
-                PERMISSION_USAGE_FRAGMENT_INTERACTION__ACTION__OPEN);
     }
 
     @Override
@@ -288,7 +287,7 @@
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         if (outState != null) {
-            outState.putLong(KEY_SESSION_ID, mSessionId);
+            outState.putLong(SESSION_ID_KEY, mSessionId);
         }
     }
 
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2WrapperFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2WrapperFragment.java
index abe48cb..3bbe19d 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2WrapperFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/dashboard/PermissionUsageV2WrapperFragment.java
@@ -16,6 +16,8 @@
 
 package com.android.permissioncontroller.permission.ui.handheld.dashboard;
 
+import static com.android.permissioncontroller.Constants.EXTRA_SESSION_ID;
+
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
@@ -42,13 +44,14 @@
      * @return A new fragment
      */
     public static @NonNull PermissionUsageV2WrapperFragment newInstance(@Nullable String groupName,
-            long numMillis) {
+            long numMillis, long sessionId) {
         PermissionUsageV2WrapperFragment fragment = new PermissionUsageV2WrapperFragment();
         Bundle arguments = new Bundle();
         if (groupName != null) {
             arguments.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, groupName);
         }
         arguments.putLong(Intent.EXTRA_DURATION_MILLIS, numMillis);
+        arguments.putLong(EXTRA_SESSION_ID, sessionId);
         fragment.setArguments(arguments);
         return fragment;
     }