Merge "Fix crash when opening battery page" into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
418e5bffda
@@ -7390,7 +7390,7 @@
|
||||
Allowing <xliff:g id="app_name" example="Settings">%1$s</xliff:g> to always run in the background may reduce battery life.
|
||||
\n\nYou can change this later from Settings > Apps & notifications.</string>
|
||||
<!-- Summary of power usage for an app [CHAR LIMIT=NONE] -->
|
||||
<string name="battery_summary"><xliff:g id="percentage" example="2">%1$d</xliff:g>%% use since last full charge</string>
|
||||
<string name="battery_summary"><xliff:g id="percentage" example="2">%1$s</xliff:g> use since last full charge</string>
|
||||
|
||||
<!-- Title of a group of settings that let you manage settings that affect battery life [CHAR LIMIT=60] -->
|
||||
<string name="battery_power_management">Power management</string>
|
||||
|
@@ -89,6 +89,7 @@ import com.android.settings.applications.instantapps.InstantAppButtonsController
|
||||
import com.android.settings.datausage.AppDataUsage;
|
||||
import com.android.settings.datausage.DataUsageList;
|
||||
import com.android.settings.datausage.DataUsageSummary;
|
||||
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
|
||||
import com.android.settings.fuelgauge.BatteryEntry;
|
||||
import com.android.settings.fuelgauge.PowerUsageDetail;
|
||||
import com.android.settings.notification.AppNotificationSettings;
|
||||
@@ -183,10 +184,12 @@ public class InstalledAppDetails extends AppInfoBase
|
||||
private ChartData mChartData;
|
||||
private INetworkStatsSession mStatsSession;
|
||||
|
||||
private Preference mBatteryPreference;
|
||||
|
||||
private BatteryStatsHelper mBatteryHelper;
|
||||
private BatterySipper mSipper;
|
||||
@VisibleForTesting
|
||||
Preference mBatteryPreference;
|
||||
@VisibleForTesting
|
||||
BatterySipper mSipper;
|
||||
@VisibleForTesting
|
||||
BatteryStatsHelper mBatteryHelper;
|
||||
|
||||
protected ProcStatsData mStatsManager;
|
||||
protected ProcStatsPackageEntry mStats;
|
||||
@@ -194,6 +197,7 @@ public class InstalledAppDetails extends AppInfoBase
|
||||
private InstantAppButtonsController mInstantAppButtonsController;
|
||||
|
||||
private AppStorageStats mLastResult;
|
||||
private String mBatteryPercent;
|
||||
|
||||
private boolean handleDisableable(Button button) {
|
||||
boolean disableable = false;
|
||||
@@ -686,7 +690,8 @@ public class InstalledAppDetails extends AppInfoBase
|
||||
BatteryStats.STATS_SINCE_CHARGED);
|
||||
final int percentOfMax = (int) ((mSipper.totalPowerMah)
|
||||
/ mBatteryHelper.getTotalPower() * dischargeAmount + .5f);
|
||||
mBatteryPreference.setSummary(getString(R.string.battery_summary, percentOfMax));
|
||||
mBatteryPercent = Utils.formatPercentage(percentOfMax);
|
||||
mBatteryPreference.setSummary(getString(R.string.battery_summary, mBatteryPercent));
|
||||
} else {
|
||||
mBatteryPreference.setEnabled(false);
|
||||
mBatteryPreference.setSummary(getString(R.string.no_battery_summary));
|
||||
@@ -960,9 +965,9 @@ public class InstalledAppDetails extends AppInfoBase
|
||||
} else if (preference == mDataPreference) {
|
||||
startAppInfoFragment(AppDataUsage.class, getString(R.string.app_data_usage));
|
||||
} else if (preference == mBatteryPreference) {
|
||||
BatteryEntry entry = new BatteryEntry(getActivity(), null, mUserManager, mSipper);
|
||||
PowerUsageDetail.startBatteryDetailPage((SettingsActivity) getActivity(), this,
|
||||
mBatteryHelper, BatteryStats.STATS_SINCE_CHARGED, entry, true, false);
|
||||
BatteryEntry entry = new BatteryEntry(getContext(), null, mUserManager, mSipper);
|
||||
AdvancedPowerUsageDetail.startBatteryDetailPage((SettingsActivity) getActivity(), this,
|
||||
mBatteryHelper, BatteryStats.STATS_SINCE_CHARGED, entry, mBatteryPercent);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
@@ -23,12 +23,16 @@ import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.os.BatteryStats;
|
||||
import android.os.UserManager;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.android.internal.os.BatterySipper;
|
||||
import com.android.internal.os.BatteryStatsHelper;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.applications.instantapps.InstantAppButtonsController;
|
||||
@@ -53,8 +57,10 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.anyInt;
|
||||
import static org.mockito.Matchers.anyString;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@@ -64,23 +70,37 @@ import static org.mockito.Mockito.when;
|
||||
public final class InstalledAppDetailsTest {
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private Context mContext;
|
||||
|
||||
@Mock
|
||||
ApplicationFeatureProvider mApplicationFeatureProvider;
|
||||
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private UserManager mUserManager;
|
||||
@Mock
|
||||
private Activity mActivity;
|
||||
private SettingsActivity mActivity;
|
||||
@Mock
|
||||
private DevicePolicyManager mDevicePolicyManager;
|
||||
@Mock
|
||||
private Preference mBatteryPreference;
|
||||
@Mock
|
||||
private BatterySipper mBatterySipper;
|
||||
@Mock
|
||||
private BatteryStatsHelper mBatteryStatsHelper;
|
||||
@Mock
|
||||
private BatteryStats.Uid mUid;
|
||||
|
||||
private InstalledAppDetails mAppDetail;
|
||||
private Context mShadowContext;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mAppDetail = new InstalledAppDetails();
|
||||
mShadowContext = RuntimeEnvironment.application;
|
||||
|
||||
mAppDetail = spy(new InstalledAppDetails());
|
||||
|
||||
mBatterySipper.drainType = BatterySipper.DrainType.IDLE;
|
||||
mBatterySipper.uidObj = mUid;
|
||||
doReturn(mActivity).when(mAppDetail).getActivity();
|
||||
doReturn(mShadowContext).when(mAppDetail).getContext();
|
||||
|
||||
// Default to not considering any apps to be instant (individual tests can override this).
|
||||
ReflectionHelpers.setStaticField(AppUtils.class, "sInstantAppDataProvider",
|
||||
@@ -157,6 +177,16 @@ public final class InstalledAppDetailsTest {
|
||||
verify(mActivity, never()).finishAndRemoveTask();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void launchPowerUsageDetailFragment_shouldNotCrash() {
|
||||
mAppDetail.mBatteryPreference = mBatteryPreference;
|
||||
mAppDetail.mSipper = mBatterySipper;
|
||||
mAppDetail.mBatteryHelper = mBatteryStatsHelper;
|
||||
|
||||
// Should not crash
|
||||
mAppDetail.onPreferenceClick(mBatteryPreference);
|
||||
}
|
||||
|
||||
// Tests that we don't show the "uninstall for all users" button for instant apps.
|
||||
@Test
|
||||
public void instantApps_noUninstallForAllButton() {
|
||||
|
Reference in New Issue
Block a user