Merge "Wrap and carry clicked slot information data for restriction page" into sc-dev
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index 3ef7c45..2ebff34 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -113,6 +113,7 @@
         private String mUsagePercent;
         private String mPackageName;
         private String mAppLabel;
+        private String mSlotInformation;
         private int mUid;
         private int mIconId;
         private int mConsumedPower;
@@ -124,18 +125,22 @@
     /** Launches battery details page for an individual battery consumer. */
     public static void startBatteryDetailPage(
             Activity caller, InstrumentedPreferenceFragment fragment,
-            BatteryDiffEntry diffEntry, String usagePercent) {
+            BatteryDiffEntry diffEntry, String usagePercent,
+            boolean isValidToShowSummary, String slotInformation) {
         final BatteryHistEntry histEntry = diffEntry.mBatteryHistEntry;
         final LaunchBatteryDetailPageArgs launchArgs = new LaunchBatteryDetailPageArgs();
         // configure the launch argument.
         launchArgs.mUsagePercent = usagePercent;
         launchArgs.mPackageName = diffEntry.getPackageName();
         launchArgs.mAppLabel = diffEntry.getAppLabel();
+        launchArgs.mSlotInformation = slotInformation;
         launchArgs.mUid = (int) histEntry.mUid;
         launchArgs.mIconId = diffEntry.getAppIconId();
         launchArgs.mConsumedPower = (int) diffEntry.mConsumePower;
-        launchArgs.mForegroundTimeMs = diffEntry.mForegroundUsageTimeInMs;
-        launchArgs.mBackgroundTimeMs = diffEntry.mBackgroundUsageTimeInMs;
+        launchArgs.mForegroundTimeMs =
+            isValidToShowSummary ? diffEntry.mForegroundUsageTimeInMs : 0;
+        launchArgs.mBackgroundTimeMs =
+            isValidToShowSummary ? diffEntry.mBackgroundUsageTimeInMs : 0;
         launchArgs.mIsUserEntry = histEntry.isUserEntry();
         startBatteryDetailPage(caller, fragment, launchArgs);
     }
diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
index ff74477..99e6b0d 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
@@ -151,21 +151,22 @@
         final PowerGaugePreference powerPref = (PowerGaugePreference) preference;
         final BatteryDiffEntry diffEntry = powerPref.getBatteryDiffEntry();
         final BatteryHistEntry histEntry = diffEntry.mBatteryHistEntry;
+        final String packageName = histEntry.mPackageName;
         // Checks whether the package is installed or not.
         boolean isValidPackage = true;
         if (histEntry.isAppEntry()) {
             if (mBatteryUtils == null) {
                 mBatteryUtils = BatteryUtils.getInstance(mPrefContext);
             }
-            isValidPackage = mBatteryUtils.getPackageUid(histEntry.mPackageName)
+            isValidPackage = mBatteryUtils.getPackageUid(packageName)
                 != BatteryUtils.UID_NULL;
         }
         Log.d(TAG, String.format("handleClick() label=%s key=%s isValid:%b %s",
-            diffEntry.getAppLabel(), histEntry.getKey(), isValidPackage,
-            histEntry.mPackageName));
+            diffEntry.getAppLabel(), histEntry.getKey(), isValidPackage, packageName));
         if (isValidPackage) {
             AdvancedPowerUsageDetail.startBatteryDetailPage(
-                mActivity, mFragment, diffEntry, powerPref.getPercent());
+                mActivity, mFragment, diffEntry, powerPref.getPercent(),
+                isValidToShowSummary(packageName), getSlotInformation());
             return true;
         }
         return false;
@@ -267,8 +268,8 @@
                 || (mTrapezoidIndex == trapezoidIndex && !isForce)) {
             return false;
         }
-        Log.d(TAG, String.format("refreshUi: index=%d batteryIndexedMap.size=%d",
-            mTrapezoidIndex, mBatteryIndexedMap.size()));
+        Log.d(TAG, String.format("refreshUi: index=%d size=%d isForce:%b",
+            trapezoidIndex, mBatteryIndexedMap.size(), isForce));
 
         mTrapezoidIndex = trapezoidIndex;
         mHandler.post(() -> {
@@ -471,11 +472,9 @@
         final long backgroundUsageTimeInMs = entry.mBackgroundUsageTimeInMs;
         final long totalUsageTimeInMs = foregroundUsageTimeInMs + backgroundUsageTimeInMs;
         // Checks whether the package is allowed to show summary or not.
-        for (CharSequence notAllowPackageName : mNotAllowShowSummaryPackages) {
-            if (TextUtils.equals(entry.getPackageName(), notAllowPackageName)) {
-                preference.setSummary(null);
-                return;
-            }
+        if (!isValidToShowSummary(entry.getPackageName())) {
+            preference.setSummary(null);
+            return;
         }
         String usageTimeSummary = null;
         // Not shows summary for some system components without usage time.
@@ -515,6 +514,17 @@
         return mPrefContext.getString(resourceId, timeSequence);
     }
 
+    private boolean isValidToShowSummary(String packageName) {
+        if (mNotAllowShowSummaryPackages != null) {
+            for (CharSequence notAllowPackageName : mNotAllowShowSummaryPackages) {
+                if (TextUtils.equals(packageName, notAllowPackageName)) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
     private static String utcToLocalTime(long[] timestamps) {
         final StringBuilder builder = new StringBuilder();
         for (int index = 0; index < timestamps.length; index++) {
diff --git a/src/com/android/settings/fuelgauge/ExpandDividerPreference.java b/src/com/android/settings/fuelgauge/ExpandDividerPreference.java
index 40536eb..b89f2d4 100644
--- a/src/com/android/settings/fuelgauge/ExpandDividerPreference.java
+++ b/src/com/android/settings/fuelgauge/ExpandDividerPreference.java
@@ -38,6 +38,7 @@
     private OnExpandListener mOnExpandListener;
 
     private boolean mIsExpanded = false;
+    private String mTitleContent = null;
 
     /** A callback listener for expand state is changed by users. */
     public interface OnExpandListener {
@@ -72,6 +73,7 @@
     }
 
     void setTitle(final String titleContent) {
+        mTitleContent = titleContent;
         if (mTextView != null) {
             mTextView.postDelayed(
                 () -> mTextView.setText(titleContent), 50);
@@ -95,5 +97,6 @@
         if (mImageView != null) {
             mImageView.setImageResource(iconId);
         }
+        setTitle(mTitleContent);
     }
 }