Merge "Refine the update process of battery tip" into pi-dev
This commit is contained in:
@@ -105,6 +105,8 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
||||
SparseArray<List<Anomaly>> mAnomalySparseArray;
|
||||
@VisibleForTesting
|
||||
BatteryHeaderPreferenceController mBatteryHeaderPreferenceController;
|
||||
@VisibleForTesting
|
||||
boolean mNeedUpdateBatteryTip;
|
||||
private BatteryTipPreferenceController mBatteryTipPreferenceController;
|
||||
private int mStatsType = BatteryStats.STATS_SINCE_CHARGED;
|
||||
|
||||
@@ -211,6 +213,8 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
||||
mAnomalySparseArray = new SparseArray<>();
|
||||
|
||||
restartBatteryInfoLoader();
|
||||
mNeedUpdateBatteryTip = icicle == null;
|
||||
mBatteryTipPreferenceController.restoreInstanceState(icicle);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -291,7 +295,12 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
||||
return;
|
||||
}
|
||||
|
||||
restartBatteryTipLoader();
|
||||
// Only skip BatteryTipLoader for the first time when device is rotated
|
||||
if (mNeedUpdateBatteryTip) {
|
||||
restartBatteryTipLoader();
|
||||
} else {
|
||||
mNeedUpdateBatteryTip = true;
|
||||
}
|
||||
|
||||
// reload BatteryInfo and updateUI
|
||||
restartBatteryInfoLoader();
|
||||
@@ -385,6 +394,12 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
||||
restartBatteryStatsLoader(true /* clearHeader */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
mBatteryTipPreferenceController.saveInstanceState(outState);
|
||||
}
|
||||
|
||||
void restartBatteryStatsLoader(boolean clearHeader) {
|
||||
super.restartBatteryStatsLoader();
|
||||
if (clearHeader) {
|
||||
|
@@ -17,8 +17,8 @@
|
||||
package com.android.settings.fuelgauge.batterytip;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.VisibleForTesting;
|
||||
import android.support.v14.preference.PreferenceFragment;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceGroup;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
@@ -34,6 +34,7 @@ import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -44,6 +45,7 @@ import java.util.Map;
|
||||
public class BatteryTipPreferenceController extends BasePreferenceController {
|
||||
private static final String TAG = "BatteryTipPreferenceController";
|
||||
private static final int REQUEST_ANOMALY_ACTION = 0;
|
||||
private static final String KEY_BATTERY_TIPS = "key_battery_tips";
|
||||
|
||||
private BatteryTipListener mBatteryTipListener;
|
||||
private List<BatteryTip> mBatteryTips;
|
||||
@@ -138,6 +140,17 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
|
||||
return super.handlePreferenceTreeClick(preference);
|
||||
}
|
||||
|
||||
public void restoreInstanceState(Bundle bundle) {
|
||||
if (bundle != null) {
|
||||
List<BatteryTip> batteryTips = bundle.getParcelableArrayList(KEY_BATTERY_TIPS);
|
||||
updateBatteryTips(batteryTips);
|
||||
}
|
||||
}
|
||||
|
||||
public void saveInstanceState(Bundle outState) {
|
||||
outState.putParcelableList(KEY_BATTERY_TIPS, mBatteryTips);
|
||||
}
|
||||
|
||||
/**
|
||||
* Listener to give the control back to target fragment
|
||||
*/
|
||||
|
@@ -98,6 +98,9 @@ public class RestrictAppTip extends BatteryTip {
|
||||
// If anomaly becomes invisible, show it as handled
|
||||
mState = StateType.HANDLED;
|
||||
mShowDialog = false;
|
||||
} else {
|
||||
mState = tip.getState();
|
||||
mShowDialog = tip.shouldShowDialog();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -352,6 +352,14 @@ public class PowerUsageSummaryTest {
|
||||
R.string.advanced_battery_title);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRefreshUi_deviceRotate_doNotUpdateBatteryTip() {
|
||||
mFragment.mNeedUpdateBatteryTip = false;
|
||||
mFragment.refreshUi();
|
||||
|
||||
verify(mFragment, never()).restartBatteryTipLoader();
|
||||
}
|
||||
|
||||
public static class TestFragment extends PowerUsageSummary {
|
||||
private Context mContext;
|
||||
|
||||
@@ -364,12 +372,6 @@ public class PowerUsageSummaryTest {
|
||||
return mContext;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void refreshUi() {
|
||||
// Leave it empty for toggle apps menu test
|
||||
}
|
||||
|
||||
@Override
|
||||
void showBothEstimates() {
|
||||
List<BatteryInfo> fakeBatteryInfo = new ArrayList<>(2);
|
||||
|
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceCategory;
|
||||
import android.support.v7.preference.PreferenceGroup;
|
||||
@@ -133,6 +134,21 @@ public class BatteryTipPreferenceControllerTest {
|
||||
BatteryTip.StateType.NEW);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveAndRestore() {
|
||||
mBatteryTipPreferenceController.updateBatteryTips(mOldBatteryTips);
|
||||
final Bundle bundle = new Bundle();
|
||||
mBatteryTipPreferenceController.saveInstanceState(bundle);
|
||||
|
||||
final BatteryTipPreferenceController controller = new BatteryTipPreferenceController(
|
||||
mContext, KEY_PREF, mSettingsActivity, mFragment, mBatteryTipListener);
|
||||
controller.mPreferenceGroup = mPreferenceGroup;
|
||||
controller.mPrefContext = mContext;
|
||||
controller.restoreInstanceState(bundle);
|
||||
|
||||
assertOnlyContainsSummaryTip(mPreferenceGroup);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHandlePreferenceTreeClick_noDialog_invokeCallback() {
|
||||
when(mBatteryTip.getType()).thenReturn(SMART_BATTERY_MANAGER);
|
||||
|
@@ -148,6 +148,13 @@ public class RestrictAppTipTest {
|
||||
assertThat(mNewBatteryTip.getState()).isEqualTo(BatteryTip.StateType.HANDLED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void update_handledAnomlayBecomeInvisible_stateInvisible() {
|
||||
mHandledBatteryTip.updateState(mInvisibleBatteryTip);
|
||||
|
||||
assertThat(mHandledBatteryTip.getState()).isEqualTo(BatteryTip.StateType.INVISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void update_newAnomalyComes_stateNew() {
|
||||
mInvisibleBatteryTip.updateState(mNewBatteryTip);
|
||||
|
Reference in New Issue
Block a user