Add smart battery tip.

Also move the action method from BatteryTip to TipAction. Since it
need extra data that we don't want to store it in parcel.

Bug: 71502850
Test: RunSettingsRoboTests
Change-Id: Ib658426725158d26fcdd437fa8bf6bf24e9a8c14
This commit is contained in:
jackqdyulei
2018-01-10 09:51:52 -08:00
parent 92aa8583c6
commit e682126a11
17 changed files with 352 additions and 33 deletions

View File

@@ -4773,6 +4773,10 @@
<string name="battery_tip_low_battery_title">Low battery capacity</string> <string name="battery_tip_low_battery_title">Low battery capacity</string>
<!-- Summary for the low battery tip [CHAR LIMIT=NONE] --> <!-- Summary for the low battery tip [CHAR LIMIT=NONE] -->
<string name="battery_tip_low_battery_summary">Battery can\'t provide good battery life</string> <string name="battery_tip_low_battery_summary">Battery can\'t provide good battery life</string>
<!-- Title for the smart battery tip [CHAR LIMIT=NONE] -->
<string name="battery_tip_smart_battery_title">Turn on smart battery manager</string>
<!-- Summary for the smart battery tip [CHAR LIMIT=NONE] -->
<string name="battery_tip_smart_battery_summary">Turn on to optimize battery usage</string>
<!-- Title for the battery high usage tip [CHAR LIMIT=NONE] --> <!-- Title for the battery high usage tip [CHAR LIMIT=NONE] -->
<string name="battery_tip_high_usage_title" product="default">Phone used heavily</string> <string name="battery_tip_high_usage_title" product="default">Phone used heavily</string>
<!-- Title for the battery high usage tip [CHAR LIMIT=NONE] --> <!-- Title for the battery high usage tip [CHAR LIMIT=NONE] -->

View File

@@ -266,7 +266,7 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
KEY_APP_LIST, lifecycle, activity, this); KEY_APP_LIST, lifecycle, activity, this);
controllers.add(mBatteryAppListPreferenceController); controllers.add(mBatteryAppListPreferenceController);
mBatteryTipPreferenceController = new BatteryTipPreferenceController(context, mBatteryTipPreferenceController = new BatteryTipPreferenceController(context,
KEY_BATTERY_TIP, this, this); KEY_BATTERY_TIP, (SettingsActivity) getActivity(), this, this);
controllers.add(mBatteryTipPreferenceController); controllers.add(mBatteryTipPreferenceController);
controllers.add(new BatterySaverController(context, getLifecycle())); controllers.add(new BatterySaverController(context, getLifecycle()));
controllers.add(new BatteryPercentagePreferenceController(context)); controllers.add(new BatteryPercentagePreferenceController(context));

View File

@@ -27,8 +27,10 @@ import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController.BatteryTipListener; import com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController.BatteryTipListener;
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip; import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip;
@@ -97,7 +99,11 @@ public class BatteryTipDialogFragment extends InstrumentedDialogFragment impleme
if (lsn == null) { if (lsn == null) {
return; return;
} }
mBatteryTip.action(); final BatteryTipAction action = BatteryTipUtils.getActionForBatteryTip(mBatteryTip,
(SettingsActivity) getActivity(), this);
if (action != null) {
action.handlePositiveAction();
}
lsn.onBatteryTipHandled(mBatteryTip); lsn.onBatteryTipHandled(mBatteryTip);
} }

View File

@@ -25,6 +25,7 @@ import com.android.settings.fuelgauge.BatteryUtils;
import com.android.settings.fuelgauge.batterytip.detectors.BatteryTipDetector; import com.android.settings.fuelgauge.batterytip.detectors.BatteryTipDetector;
import com.android.settings.fuelgauge.batterytip.detectors.HighUsageDetector; import com.android.settings.fuelgauge.batterytip.detectors.HighUsageDetector;
import com.android.settings.fuelgauge.batterytip.detectors.LowBatteryDetector; import com.android.settings.fuelgauge.batterytip.detectors.LowBatteryDetector;
import com.android.settings.fuelgauge.batterytip.detectors.SmartBatteryDetector;
import com.android.settings.fuelgauge.batterytip.detectors.SummaryDetector; import com.android.settings.fuelgauge.batterytip.detectors.SummaryDetector;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip; import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip;
@@ -68,6 +69,8 @@ public class BatteryTipLoader extends AsyncLoader<List<BatteryTip>> {
addBatteryTipFromDetector(tips, new LowBatteryDetector(policy, batteryInfo)); addBatteryTipFromDetector(tips, new LowBatteryDetector(policy, batteryInfo));
addBatteryTipFromDetector(tips, addBatteryTipFromDetector(tips,
new HighUsageDetector(getContext(), policy, mBatteryStatsHelper)); new HighUsageDetector(getContext(), policy, mBatteryStatsHelper));
addBatteryTipFromDetector(tips,
new SmartBatteryDetector(policy, getContext().getContentResolver()));
// Add summary detector at last since it need other detectors to update the mVisibleTips // Add summary detector at last since it need other detectors to update the mVisibleTips
addBatteryTipFromDetector(tips, new SummaryDetector(policy, mVisibleTips)); addBatteryTipFromDetector(tips, new SummaryDetector(policy, mVisibleTips));

View File

@@ -23,7 +23,9 @@ 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;
import com.android.settings.SettingsActivity;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip; import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
@@ -41,6 +43,7 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
private BatteryTipListener mBatteryTipListener; private BatteryTipListener mBatteryTipListener;
private List<BatteryTip> mBatteryTips; private List<BatteryTip> mBatteryTips;
private Map<String, BatteryTip> mBatteryTipMap; private Map<String, BatteryTip> mBatteryTipMap;
private SettingsActivity mSettingsActivity;
@VisibleForTesting @VisibleForTesting
PreferenceGroup mPreferenceGroup; PreferenceGroup mPreferenceGroup;
@VisibleForTesting @VisibleForTesting
@@ -48,15 +51,17 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
PreferenceFragment mFragment; PreferenceFragment mFragment;
public BatteryTipPreferenceController(Context context, String preferenceKey) { public BatteryTipPreferenceController(Context context, String preferenceKey) {
this(context, preferenceKey, null, null); this(context, preferenceKey, null, null, null);
} }
public BatteryTipPreferenceController(Context context, String preferenceKey, public BatteryTipPreferenceController(Context context, String preferenceKey,
PreferenceFragment fragment, BatteryTipListener batteryTipListener) { SettingsActivity settingsActivity, PreferenceFragment fragment,
BatteryTipListener batteryTipListener) {
super(context, preferenceKey); super(context, preferenceKey);
mBatteryTipListener = batteryTipListener; mBatteryTipListener = batteryTipListener;
mBatteryTipMap = new HashMap<>(); mBatteryTipMap = new HashMap<>();
mFragment = fragment; mFragment = fragment;
mSettingsActivity = settingsActivity;
} }
@Override @Override
@@ -107,7 +112,11 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
dialogFragment.setTargetFragment(mFragment, REQUEST_ANOMALY_ACTION); dialogFragment.setTargetFragment(mFragment, REQUEST_ANOMALY_ACTION);
dialogFragment.show(mFragment.getFragmentManager(), TAG); dialogFragment.show(mFragment.getFragmentManager(), TAG);
} else { } else {
batteryTip.action(); final BatteryTipAction action = BatteryTipUtils.getActionForBatteryTip(batteryTip,
mSettingsActivity, mFragment);
if (action != null) {
action.handlePositiveAction();
}
if (mBatteryTipListener != null) { if (mBatteryTipListener != null) {
mBatteryTipListener.onBatteryTipHandled(batteryTip); mBatteryTipListener.onBatteryTipHandled(batteryTip);
} }

View File

@@ -0,0 +1,47 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge.batterytip;
import android.app.Fragment;
import com.android.settings.SettingsActivity;
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
import com.android.settings.fuelgauge.batterytip.actions.SmartBatteryAction;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
/**
* Utility class for {@link BatteryTip}
*/
public class BatteryTipUtils {
/**
* Get a corresponding action based on {@code batteryTip}
* @param batteryTip used to detect which action to choose
* @param settingsActivity used to populate {@link BatteryTipAction}
* @param fragment used to populate {@link BatteryTipAction}
* @return an action for {@code batteryTip}
*/
public static BatteryTipAction getActionForBatteryTip(BatteryTip batteryTip,
SettingsActivity settingsActivity, Fragment fragment) {
switch (batteryTip.getType()) {
case BatteryTip.TipType.SMART_BATTERY_MANAGER:
return new SmartBatteryAction(settingsActivity, fragment);
default:
return null;
}
}
}

View File

@@ -0,0 +1,37 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge.batterytip.actions;
import android.content.Context;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
/**
* Abstract class for battery tip action, which is triggered if we need to handle the battery tip
*/
public abstract class BatteryTipAction {
protected Context mContext;
public BatteryTipAction(Context context) {
mContext = context;
}
/**
* Handle the action when user clicks positive button
*/
public abstract void handlePositiveAction();
}

View File

@@ -0,0 +1,48 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge.batterytip.actions;
import android.app.Fragment;
import android.os.UserHandle;
import android.support.v14.preference.PreferenceFragment;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.fuelgauge.SmartBatterySettings;
public class SmartBatteryAction extends BatteryTipAction {
private SettingsActivity mSettingsActivity;
private Fragment mFragment;
public SmartBatteryAction(SettingsActivity settingsActivity, Fragment fragment) {
super(settingsActivity.getApplicationContext());
mSettingsActivity = settingsActivity;
mFragment = fragment;
}
/**
* Handle the action when user clicks positive button
*/
@Override
public void handlePositiveAction() {
mSettingsActivity.startPreferencePanelAsUser(mFragment,
SmartBatterySettings.class.getName(), null /* args */,
R.string.smart_battery_manager_title, null /* titleText */,
new UserHandle(UserHandle.myUserId()));
}
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge.batterytip.detectors;
import android.content.ContentResolver;
import android.provider.Settings;
import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SmartBatteryTip;
/**
* Detect whether to show smart battery tip.
*/
public class SmartBatteryDetector implements BatteryTipDetector {
private BatteryTipPolicy mPolicy;
private ContentResolver mContentResolver;
public SmartBatteryDetector(BatteryTipPolicy policy, ContentResolver contentResolver) {
mPolicy = policy;
mContentResolver = contentResolver;
}
@Override
public BatteryTip detect() {
// Show it if there is no other tips shown
final boolean smartBatteryOn = Settings.Global.getInt(mContentResolver,
Settings.Global.APP_STANDBY_ENABLED, 1) != 0;
final int state =
smartBatteryOn ? BatteryTip.StateType.INVISIBLE : BatteryTip.StateType.NEW;
return new SmartBatteryTip(state);
}
}

View File

@@ -105,11 +105,6 @@ public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable {
*/ */
public abstract void updateState(BatteryTip tip); public abstract void updateState(BatteryTip tip);
/**
* Execute the action for this {@link BatteryTip}
*/
public abstract void action();
public Preference buildPreference(Context context) { public Preference buildPreference(Context context) {
Preference preference = new Preference(context); Preference preference = new Preference(context);

View File

@@ -78,11 +78,6 @@ public class HighUsageTip extends BatteryTip {
mState = tip.mState; mState = tip.mState;
} }
@Override
public void action() {
// do nothing
}
public long getScreenTimeMs() { public long getScreenTimeMs() {
return mScreenTimeMs; return mScreenTimeMs;
} }

View File

@@ -55,11 +55,6 @@ public class LowBatteryTip extends BatteryTip {
mState = tip.mState; mState = tip.mState;
} }
@Override
public void action() {
// do nothing
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public BatteryTip createFromParcel(Parcel in) { public BatteryTip createFromParcel(Parcel in) {
return new LowBatteryTip(in); return new LowBatteryTip(in);

View File

@@ -0,0 +1,68 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge.batterytip.tips;
import android.content.Context;
import android.os.Parcel;
import android.provider.Settings;
import com.android.settings.R;
/**
* Tip to suggest turn on smart battery if it is not on
*/
public class SmartBatteryTip extends BatteryTip {
public SmartBatteryTip(@StateType int state) {
super(TipType.SMART_BATTERY_MANAGER, state, false /* showDialog */);
}
private SmartBatteryTip(Parcel in) {
super(in);
}
@Override
public CharSequence getTitle(Context context) {
return context.getString(R.string.battery_tip_smart_battery_title);
}
@Override
public CharSequence getSummary(Context context) {
return context.getString(R.string.battery_tip_smart_battery_summary);
}
@Override
public int getIconId() {
return R.drawable.ic_perm_device_information_red_24dp;
}
@Override
public void updateState(BatteryTip tip) {
mState = tip.mState;
}
public static final Creator CREATOR = new Creator() {
public BatteryTip createFromParcel(Parcel in) {
return new SmartBatteryTip(in);
}
public BatteryTip[] newArray(int size) {
return new SmartBatteryTip[size];
}
};
}

View File

@@ -55,11 +55,6 @@ public class SummaryTip extends BatteryTip {
mState = tip.mState; mState = tip.mState;
} }
@Override
public void action() {
// do nothing
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public BatteryTip createFromParcel(Parcel in) { public BatteryTip createFromParcel(Parcel in) {
return new SummaryTip(in); return new SummaryTip(in);

View File

@@ -15,6 +15,9 @@
*/ */
package com.android.settings.fuelgauge.batterytip; package com.android.settings.fuelgauge.batterytip;
import static com.android.settings.fuelgauge.batterytip.tips.BatteryTip.TipType
.SMART_BATTERY_MANAGER;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
@@ -29,6 +32,7 @@ import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceManager;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip; import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
@@ -57,6 +61,8 @@ public class BatteryTipPreferenceControllerTest {
private PreferenceScreen mPreferenceScreen; private PreferenceScreen mPreferenceScreen;
@Mock @Mock
private BatteryTip mBatteryTip; private BatteryTip mBatteryTip;
@Mock
private SettingsActivity mSettingsActivity;
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private PreferenceManager mPreferenceManager; private PreferenceManager mPreferenceManager;
@@ -85,7 +91,7 @@ public class BatteryTipPreferenceControllerTest {
mNewBatteryTips.add(new SummaryTip(BatteryTip.StateType.INVISIBLE)); mNewBatteryTips.add(new SummaryTip(BatteryTip.StateType.INVISIBLE));
mBatteryTipPreferenceController = new BatteryTipPreferenceController(mContext, KEY_PREF, mBatteryTipPreferenceController = new BatteryTipPreferenceController(mContext, KEY_PREF,
null, mBatteryTipListener); mSettingsActivity, null, mBatteryTipListener);
mBatteryTipPreferenceController.mPreferenceGroup = mPreferenceGroup; mBatteryTipPreferenceController.mPreferenceGroup = mPreferenceGroup;
mBatteryTipPreferenceController.mPrefContext = mContext; mBatteryTipPreferenceController.mPrefContext = mContext;
} }
@@ -109,7 +115,8 @@ public class BatteryTipPreferenceControllerTest {
} }
@Test @Test
public void testHandlePreferenceTreeClick_noDialog_invokeAction() { public void testHandlePreferenceTreeClick_noDialog_invokeCallback() {
doReturn(SMART_BATTERY_MANAGER).when(mBatteryTip).getType();
List<BatteryTip> batteryTips = new ArrayList<>(); List<BatteryTip> batteryTips = new ArrayList<>();
batteryTips.add(mBatteryTip); batteryTips.add(mBatteryTip);
doReturn(mPreference).when(mBatteryTip).buildPreference(any()); doReturn(mPreference).when(mBatteryTip).buildPreference(any());
@@ -119,7 +126,7 @@ public class BatteryTipPreferenceControllerTest {
mBatteryTipPreferenceController.handlePreferenceTreeClick(mPreference); mBatteryTipPreferenceController.handlePreferenceTreeClick(mPreference);
verify(mBatteryTip).action(); verify(mBatteryTipListener).onBatteryTipHandled(mBatteryTip);
} }
private void assertOnlyContainsSummaryTip(final PreferenceGroup preferenceGroup) { private void assertOnlyContainsSummaryTip(final PreferenceGroup preferenceGroup) {

View File

@@ -0,0 +1,68 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge.batterytip.detectors;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.TestConfig;
import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class SmartBatteryDetectorTest {
private Context mContext;
private BatteryTipPolicy mPolicy;
private SmartBatteryDetector mSmartBatteryDetector;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mPolicy = spy(new BatteryTipPolicy(mContext));
mSmartBatteryDetector = new SmartBatteryDetector(mPolicy, mContext.getContentResolver());
}
@Test
public void testDetect_smartBatteryOff_tipVisible() {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.APP_STANDBY_ENABLED, 0);
assertThat(mSmartBatteryDetector.detect().isVisible()).isTrue();
}
@Test
public void testDetect_smartBatteryOn_tipInvisible() {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.APP_STANDBY_ENABLED, 1);
assertThat(mSmartBatteryDetector.detect().isVisible()).isFalse();
}
}

View File

@@ -107,11 +107,6 @@ public class BatteryTipTest {
// do nothing // do nothing
} }
@Override
public void action() {
// do nothing
}
public final Parcelable.Creator CREATOR = new Parcelable.Creator() { public final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public BatteryTip createFromParcel(Parcel in) { public BatteryTip createFromParcel(Parcel in) {
return new TestBatteryTip(in); return new TestBatteryTip(in);