Add intent receiver in BatterySaverCondition
Receive ACTION_POWER_SAVE_MODE_CHANGING to listen state and update immediately. Change-Id: Iff2ebb262d95f43d0c970b32f326e3a3e6981a2a Fixes: 78104542 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -23,12 +23,20 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.fuelgauge.BatterySaverDrawable;
|
import com.android.settings.fuelgauge.BatterySaverDrawable;
|
||||||
|
import com.android.settings.fuelgauge.BatterySaverReceiver;
|
||||||
import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
|
import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
|
||||||
import com.android.settingslib.fuelgauge.BatterySaverUtils;
|
import com.android.settingslib.fuelgauge.BatterySaverUtils;
|
||||||
|
|
||||||
public class BatterySaverCondition extends Condition {
|
public class BatterySaverCondition extends Condition implements
|
||||||
|
BatterySaverReceiver.BatterySaverListener {
|
||||||
|
|
||||||
|
private final BatterySaverReceiver mReceiver;
|
||||||
|
|
||||||
public BatterySaverCondition(ConditionManager manager) {
|
public BatterySaverCondition(ConditionManager manager) {
|
||||||
super(manager);
|
super(manager);
|
||||||
|
|
||||||
|
mReceiver = new BatterySaverReceiver(manager.getContext());
|
||||||
|
mReceiver.setBatterySaverListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -54,7 +62,7 @@ public class BatterySaverCondition extends Condition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CharSequence[] getActions() {
|
public CharSequence[] getActions() {
|
||||||
return new CharSequence[] {mManager.getContext().getString(R.string.condition_turn_off)};
|
return new CharSequence[]{mManager.getContext().getString(R.string.condition_turn_off)};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -82,4 +90,25 @@ public class BatterySaverCondition extends Condition {
|
|||||||
public int getMetricsConstant() {
|
public int getMetricsConstant() {
|
||||||
return MetricsEvent.SETTINGS_CONDITION_BATTERY_SAVER;
|
return MetricsEvent.SETTINGS_CONDITION_BATTERY_SAVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
mReceiver.setListening(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
mReceiver.setListening(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPowerSaveModeChanged() {
|
||||||
|
ConditionManager.get(mManager.getContext()).getCondition(BatterySaverCondition.class)
|
||||||
|
.refreshState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBatteryChanged(boolean pluggedIn) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
* 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.dashboard.conditional;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.IntentFilter;
|
||||||
|
import android.os.PowerManager;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.fuelgauge.BatterySaverReceiver;
|
||||||
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.Shadows;
|
||||||
|
import org.robolectric.shadows.ShadowPowerManager;
|
||||||
|
|
||||||
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
|
public class BatterySaverConditionTest {
|
||||||
|
@Mock
|
||||||
|
private ConditionManager mConditionManager;
|
||||||
|
|
||||||
|
private ShadowPowerManager mPowerManager;
|
||||||
|
private Context mContext;
|
||||||
|
private BatterySaverCondition mCondition;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
|
mPowerManager = Shadows.shadowOf(mContext.getSystemService(PowerManager.class));
|
||||||
|
when(mConditionManager.getContext()).thenReturn(mContext);
|
||||||
|
mCondition = spy(new BatterySaverCondition(mConditionManager));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void verifyText() {
|
||||||
|
assertThat(mCondition.getTitle()).isEqualTo(
|
||||||
|
mContext.getText(R.string.condition_battery_title));
|
||||||
|
assertThat(mCondition.getSummary()).isEqualTo(
|
||||||
|
mContext.getText(R.string.condition_battery_summary));
|
||||||
|
assertThat(mCondition.getActions()[0]).isEqualTo(
|
||||||
|
mContext.getText(R.string.condition_turn_off));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onResume_shouldRegisterReceiver() {
|
||||||
|
mCondition.onResume();
|
||||||
|
|
||||||
|
verify(mContext).registerReceiver(any(BatterySaverReceiver.class), any(IntentFilter.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onPause_shouldUnregisterReceiver() {
|
||||||
|
mCondition.onResume();
|
||||||
|
mCondition.onPause();
|
||||||
|
|
||||||
|
verify(mContext).unregisterReceiver(any(BatterySaverReceiver.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void refreshState_PowerSaverOn_shouldActivate() {
|
||||||
|
mPowerManager.setIsPowerSaveMode(true);
|
||||||
|
|
||||||
|
mCondition.refreshState();
|
||||||
|
|
||||||
|
assertThat(mCondition.isActive()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void refreshState_PowerSaverOff_shouldNotActivate() {
|
||||||
|
mPowerManager.setIsPowerSaveMode(false);
|
||||||
|
|
||||||
|
mCondition.refreshState();
|
||||||
|
|
||||||
|
assertThat(mCondition.isActive()).isFalse();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user