OSDN Git Service

Update the action for early warning tip.
authorLei Yu <jackqdyulei@google.com>
Wed, 11 Apr 2018 22:10:36 +0000 (15:10 -0700)
committerLei Yu <jackqdyulei@google.com>
Wed, 11 Apr 2018 22:49:04 +0000 (15:49 -0700)
Add action to open the battery saver page when it shows "battery saver
is on".

Change-Id: Ia0536e7ef73271aefbd95e938d6f91f359a116d2
Fixes: 77874407
Test: RunSettingsRoboTests

src/com/android/settings/fuelgauge/batterytip/BatteryTipUtils.java
src/com/android/settings/fuelgauge/batterytip/actions/OpenBatterySaverAction.java [new file with mode: 0644]
tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipUtilsTest.java

index 98ff244..1f79e7c 100644 (file)
@@ -30,6 +30,7 @@ import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.fuelgauge.batterytip.actions.BatterySaverAction;
 import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
+import com.android.settings.fuelgauge.batterytip.actions.OpenBatterySaverAction;
 import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
 import com.android.settings.fuelgauge.batterytip.actions.RestrictAppAction;
 import com.android.settings.fuelgauge.batterytip.actions.SmartBatteryAction;
@@ -93,7 +94,11 @@ public class BatteryTipUtils {
             case BatteryTip.TipType.SMART_BATTERY_MANAGER:
                 return new SmartBatteryAction(settingsActivity, fragment);
             case BatteryTip.TipType.BATTERY_SAVER:
-                return new BatterySaverAction(settingsActivity);
+                if (batteryTip.getState() == BatteryTip.StateType.HANDLED) {
+                    return new OpenBatterySaverAction(settingsActivity);
+                } else {
+                    return new BatterySaverAction(settingsActivity);
+                }
             case BatteryTip.TipType.APP_RESTRICTION:
                 if (batteryTip.getState() == BatteryTip.StateType.HANDLED) {
                     return new OpenRestrictAppFragmentAction(settingsActivity, fragment,
diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/OpenBatterySaverAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/OpenBatterySaverAction.java
new file mode 100644 (file)
index 0000000..9f9a99d
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * 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.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
+import com.android.settings.SettingsActivity;
+import com.android.settings.core.InstrumentedPreferenceFragment;
+import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.fuelgauge.BatteryUtils;
+import com.android.settings.fuelgauge.RestrictedAppDetails;
+import com.android.settings.fuelgauge.batterysaver.BatterySaverSettings;
+import com.android.settings.fuelgauge.batterytip.AppInfo;
+import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
+
+import java.util.List;
+
+/**
+ *
+ * Action to open the {@link com.android.settings.fuelgauge.batterysaver.BatterySaverSettings}
+ */
+public class OpenBatterySaverAction extends BatteryTipAction {
+
+    public OpenBatterySaverAction(Context context) {
+        super(context);
+    }
+
+    /**
+     * Handle the action when user clicks positive button
+     */
+    @Override
+    public void handlePositiveAction(int metricsKey) {
+        mMetricsFeatureProvider.action(mContext,
+                MetricsProto.MetricsEvent.ACTION_TIP_OPEN_BATTERY_SAVER_PAGE, metricsKey);
+        new SubSettingLauncher(mContext)
+                .setDestination(BatterySaverSettings.class.getName())
+                .setSourceMetricsCategory(metricsKey)
+                .launch();
+    }
+}
index c731a2e..7a25555 100644 (file)
@@ -23,9 +23,12 @@ import static org.mockito.Mockito.when;
 
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
+import com.android.settings.fuelgauge.batterytip.actions.BatterySaverAction;
+import com.android.settings.fuelgauge.batterytip.actions.OpenBatterySaverAction;
 import com.android.settings.fuelgauge.batterytip.actions.OpenRestrictAppFragmentAction;
 import com.android.settings.fuelgauge.batterytip.actions.RestrictAppAction;
 import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
+import com.android.settings.fuelgauge.batterytip.tips.EarlyWarningTip;
 import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
@@ -47,6 +50,7 @@ public class BatteryTipUtilsTest {
     @Mock
     private InstrumentedPreferenceFragment mFragment;
     private RestrictAppTip mRestrictAppTip;
+    private EarlyWarningTip mEarlyWarningTip;
 
     @Before
     public void setUp() {
@@ -55,6 +59,7 @@ public class BatteryTipUtilsTest {
         FakeFeatureFactory.setupForTest();
         doReturn(RuntimeEnvironment.application).when(mFragment).getContext();
         mRestrictAppTip = spy(new RestrictAppTip(BatteryTip.StateType.NEW, new ArrayList<>()));
+        mEarlyWarningTip = spy(new EarlyWarningTip(BatteryTip.StateType.NEW, true));
     }
 
     @Test
@@ -72,4 +77,20 @@ public class BatteryTipUtilsTest {
         assertThat(BatteryTipUtils.getActionForBatteryTip(mRestrictAppTip, mSettingsActivity,
                 mFragment)).isInstanceOf(OpenRestrictAppFragmentAction.class);
     }
+
+    @Test
+    public void testGetActionForBatteryTip_typeEarlyWarningStateNew_returnActionBatterySaver() {
+        when(mEarlyWarningTip.getState()).thenReturn(BatteryTip.StateType.NEW);
+
+        assertThat(BatteryTipUtils.getActionForBatteryTip(mEarlyWarningTip, mSettingsActivity,
+                mFragment)).isInstanceOf(BatterySaverAction.class);
+    }
+
+    @Test
+    public void testGetActionForBatteryTip_typeEarlyWarningStateHandled_returnActionOpen() {
+        when(mEarlyWarningTip.getState()).thenReturn(BatteryTip.StateType.HANDLED);
+
+        assertThat(BatteryTipUtils.getActionForBatteryTip(mEarlyWarningTip, mSettingsActivity,
+                mFragment)).isInstanceOf(OpenBatterySaverAction.class);
+    }
 }