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