Implements additional battery info menu behavior.

Bug: 33352540
Test: Updated existing tests.
Change-Id: I990029d2ea9032301362d614959259965b8ecb10
This commit is contained in:
Jaewoong Jung
2016-12-19 18:39:41 -08:00
parent a95be3f49b
commit 6a43a06cac
3 changed files with 46 additions and 5 deletions

View File

@@ -16,6 +16,8 @@
package com.android.settings.fuelgauge; package com.android.settings.fuelgauge;
import android.content.Intent;
/** /**
* Feature Provider used in power usage * Feature Provider used in power usage
*/ */
@@ -25,5 +27,13 @@ public interface PowerUsageFeatureProvider {
*/ */
boolean isLocationSettingEnabled(String[] packages); boolean isLocationSettingEnabled(String[] packages);
/**
* Check whether additional battery info feature is enabled.
*/
boolean isAdditionalBatteryInfoEnabled(); boolean isAdditionalBatteryInfoEnabled();
/**
* Gets an {@link Intent} to show additional battery info.
*/
Intent getAdditionalBatteryInfoIntent();
} }

View File

@@ -175,6 +175,11 @@ public class PowerUsageSummary extends PowerUsageBase {
sa.startPreferencePanel(ManageApplications.class.getName(), args, sa.startPreferencePanel(ManageApplications.class.getName(), args,
R.string.high_power_apps, null, null, 0); R.string.high_power_apps, null, null, 0);
return true; return true;
case MENU_ADDITIONAL_BATTERY_INFO:
startActivity(FeatureFactory.getFactory(getContext())
.getPowerUsageFeatureProvider(getContext())
.getAdditionalBatteryInfoIntent());
return true;
default: default:
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }

View File

@@ -1,6 +1,7 @@
package com.android.settings.fuelgauge; package com.android.settings.fuelgauge;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
@@ -9,6 +10,7 @@ import com.android.settings.TestConfig;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Answers; import org.mockito.Answers;
import org.mockito.Mock; import org.mockito.Mock;
@@ -18,6 +20,7 @@ import org.robolectric.annotation.Config;
import static com.android.settings.fuelgauge.PowerUsageBase.MENU_STATS_REFRESH; import static com.android.settings.fuelgauge.PowerUsageBase.MENU_STATS_REFRESH;
import static com.android.settings.fuelgauge.PowerUsageSummary.MENU_ADDITIONAL_BATTERY_INFO; import static com.android.settings.fuelgauge.PowerUsageSummary.MENU_ADDITIONAL_BATTERY_INFO;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -25,16 +28,22 @@ import static org.mockito.Mockito.when;
/** /**
* Unit tests for {@link PowerUsageSummary}. * Unit tests for {@link PowerUsageSummary}.
*/ */
// TODO: Improve this test class so that it starts up the real activity and fragment.
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class PowerUsageSummaryTest { public class PowerUsageSummaryTest {
private static final Intent ADDITIONAL_BATTERY_INFO_INTENT =
new Intent("com.example.app.ADDITIONAL_BATTERY_INFO");
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext; private Context mContext;
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Menu mMenu; private Menu mMenu;
@Mock @Mock
private MenuItem mRefresh; private MenuItem mRefreshMenu;
@Mock
private MenuItem mAdditionalBatteryInfoMenu;
@Mock @Mock
private MenuInflater mMenuInflater; private MenuInflater mMenuInflater;
@@ -49,15 +58,19 @@ public class PowerUsageSummaryTest {
mFragment = new TestFragment(mContext); mFragment = new TestFragment(mContext);
when(mMenu.add(Menu.NONE, PowerUsageBase.MENU_STATS_REFRESH, Menu.NONE, when(mMenu.add(Menu.NONE, MENU_STATS_REFRESH, Menu.NONE,
R.string.menu_stats_refresh) R.string.menu_stats_refresh)
.setIcon(com.android.internal.R.drawable.ic_menu_refresh) .setIcon(com.android.internal.R.drawable.ic_menu_refresh)
.setAlphabeticShortcut('r')) .setAlphabeticShortcut('r'))
.thenReturn(mRefresh); .thenReturn(mRefreshMenu);
when(mAdditionalBatteryInfoMenu.getItemId())
.thenReturn(MENU_ADDITIONAL_BATTERY_INFO);
when(mFeatureFactory.powerUsageFeatureProvider.getAdditionalBatteryInfoIntent())
.thenReturn(ADDITIONAL_BATTERY_INFO_INTENT);
} }
@Test @Test
public void testOnCreateOptionsMenu_additionalBatteryInfoEnabled() { public void testOptionsMenu_additionalBatteryInfoEnabled() {
when(mFeatureFactory.powerUsageFeatureProvider.isAdditionalBatteryInfoEnabled()) when(mFeatureFactory.powerUsageFeatureProvider.isAdditionalBatteryInfoEnabled())
.thenReturn(true); .thenReturn(true);
@@ -65,10 +78,15 @@ public class PowerUsageSummaryTest {
verify(mMenu).add(Menu.NONE, MENU_ADDITIONAL_BATTERY_INFO, verify(mMenu).add(Menu.NONE, MENU_ADDITIONAL_BATTERY_INFO,
Menu.NONE, R.string.additional_battery_info); Menu.NONE, R.string.additional_battery_info);
mFragment.onOptionsItemSelected(mAdditionalBatteryInfoMenu);
assertThat(mFragment.mStartActivityCalled).isTrue();
assertThat(mFragment.mStartActivityIntent).isEqualTo(ADDITIONAL_BATTERY_INFO_INTENT);
} }
@Test @Test
public void testOnCreateOptionsMenu_additionalBatteryInfoDisabled() { public void testOptionsMenu_additionalBatteryInfoDisabled() {
when(mFeatureFactory.powerUsageFeatureProvider.isAdditionalBatteryInfoEnabled()) when(mFeatureFactory.powerUsageFeatureProvider.isAdditionalBatteryInfoEnabled())
.thenReturn(false); .thenReturn(false);
@@ -81,6 +99,8 @@ public class PowerUsageSummaryTest {
public static class TestFragment extends PowerUsageSummary { public static class TestFragment extends PowerUsageSummary {
private Context mContext; private Context mContext;
private boolean mStartActivityCalled;
private Intent mStartActivityIntent;
public TestFragment(Context context) { public TestFragment(Context context) {
mContext = context; mContext = context;
@@ -90,5 +110,11 @@ public class PowerUsageSummaryTest {
public Context getContext() { public Context getContext() {
return mContext; return mContext;
} }
@Override
public void startActivity(Intent intent) {
mStartActivityCalled = true;
mStartActivityIntent = intent;
}
} }
} }