From fe5a771e92cb22631e688403cce45c826bbda044 Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Wed, 26 Jul 2017 13:14:46 -0700 Subject: [PATCH] Add uid data even though on battery stats Advacned battery page doesn't show background toggle because it doesn't get uid from battery stats. This cl make it get uid by package name even though without battery stats. Bug: 64049162 Test: RunSettingsRoboTests Change-Id: Ie0f67ce9d080c02763a8382740e0640a66ce6053 --- .../settings/fuelgauge/AdvancedPowerUsageDetail.java | 9 ++++++++- .../fuelgauge/AdvancedPowerUsageDetailTest.java | 10 ++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java index 471710983e2..3b83fa52653 100644 --- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java @@ -31,6 +31,7 @@ import android.support.annotation.VisibleForTesting; import android.support.v14.preference.PreferenceFragment; import android.support.v7.preference.Preference; import android.text.TextUtils; +import android.util.Log; import android.view.View; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -163,9 +164,15 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements public static void startBatteryDetailPage(SettingsActivity caller, PreferenceFragment fragment, String packageName) { - final Bundle args = new Bundle(2); + final Bundle args = new Bundle(3); + final PackageManager packageManager = caller.getPackageManager(); args.putString(EXTRA_PACKAGE_NAME, packageName); args.putString(EXTRA_POWER_USAGE_PERCENT, Utils.formatPercentage(0)); + try { + args.putInt(EXTRA_UID, packageManager.getPackageUid(packageName, 0 /* no flag */)); + } catch (PackageManager.NameNotFoundException e) { + Log.e(TAG, "Cannot find package: " + packageName, e); + } caller.startPreferencePanelAsUser(fragment, AdvancedPowerUsageDetail.class.getName(), args, R.string.battery_details_title, null, new UserHandle(UserHandle.myUserId())); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java index c7eebc84e6c..54d043c419d 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java @@ -368,6 +368,16 @@ public class AdvancedPowerUsageDetailTest { "0%"); } + @Test + public void testStartBatteryDetailPage_batteryEntryNotExisted_extractUidFromPackageName() throws + PackageManager.NameNotFoundException{ + doReturn(UID).when(mPackageManager).getPackageUid(PACKAGE_NAME[0], 0 /* no flag */); + + AdvancedPowerUsageDetail.startBatteryDetailPage(mTestActivity, null, PACKAGE_NAME[0]); + + assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID); + } + @Test public void testStartBatteryDetailPage_defaultPackageNull_chooseFromBatterySipper() { mBatteryEntry.defaultPackageName = null;