Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 06fa2442 authored by mxyyiyi's avatar mxyyiyi
Browse files

Update action log metircs of app optimize mode.

Bug: 317329360
Test: manual
Change-Id: Id4cd610a5bcc7988ecbd4545f5ef77a5253aac33
parent a5799128
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -489,9 +489,9 @@ public class AdvancedPowerUsageDetail extends DashboardFragment
                    FeatureFactory.getFeatureFactory()
                            .getMetricsFeatureProvider()
                            .action(
                                    /* attribution */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
                                    /* attribution */ SettingsEnums.LEAVE_APP_BATTERY_USAGE,
                                    /* action */ finalMetricCategory,
                                    /* pageId */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
                                    /* pageId */ SettingsEnums.FUELGAUGE_POWER_USAGE_DETAIL,
                                    packageName,
                                    getArguments().getInt(EXTRA_POWER_USAGE_AMOUNT));
                });
+5 −3
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ public class PowerBackgroundUsageDetail extends DashboardFragment
                            .getMetricsFeatureProvider()
                            .action(
                                    getContext(),
                                    SettingsEnums.OPEN_APP_BATTERY_USAGE,
                                    SettingsEnums.OPEN_POWER_USAGE_MANAGE_BACKGROUND,
                                    packageName);
                });
        mLogStringBuilder = new StringBuilder("onResume mode = ").append(mOptimizationMode);
@@ -338,9 +338,11 @@ public class PowerBackgroundUsageDetail extends DashboardFragment
                    FeatureFactory.getFeatureFactory()
                            .getMetricsFeatureProvider()
                            .action(
                                    /* attribution */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
                                    /* attribution */ SettingsEnums
                                            .LEAVE_POWER_USAGE_MANAGE_BACKGROUND,
                                    /* action */ finalMetricCategory,
                                    /* pageId */ SettingsEnums.OPEN_APP_BATTERY_USAGE,
                                    /* pageId */ SettingsEnums
                                            .FUELGAUGE_POWER_USAGE_MANAGE_BACKGROUND,
                                    packageName,
                                    getArguments().getInt(EXTRA_POWER_USAGE_AMOUNT));
                });
+2 −2
Original line number Diff line number Diff line
@@ -413,9 +413,9 @@ public class AdvancedPowerUsageDetailTest {
        TimeUnit.SECONDS.sleep(1);
        verify(mMetricsFeatureProvider)
                .action(
                        SettingsEnums.OPEN_APP_BATTERY_USAGE,
                        SettingsEnums.LEAVE_APP_BATTERY_USAGE,
                        SettingsEnums.ACTION_APP_BATTERY_USAGE_ALLOW_BACKGROUND,
                        SettingsEnums.OPEN_APP_BATTERY_USAGE,
                        SettingsEnums.FUELGAUGE_POWER_USAGE_DETAIL,
                        packageName,
                        /* consumed battery */ 0);
    }
+62 −1
Original line number Diff line number Diff line
@@ -22,19 +22,23 @@ import static com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.A
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;

import android.app.AppOpsManager;
import android.app.backup.BackupManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.InstallSourceInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -46,12 +50,14 @@ import androidx.loader.app.LoaderManager;

import com.android.settings.SettingsActivity;
import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.instantapps.InstantAppDataProvider;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.widget.MainSwitchPreference;
@@ -71,6 +77,8 @@ import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;

import java.util.concurrent.TimeUnit;

@RunWith(RobolectricTestRunner.class)
@Config(
        shadows = {
@@ -91,6 +99,7 @@ public class PowerBackgroundUsageDetailTest {
    private PowerBackgroundUsageDetail mFragment;
    private FooterPreference mFooterPreference;
    private MainSwitchPreference mMainSwitchPreference;
    private MetricsFeatureProvider mMetricsFeatureProvider;
    private SelectorWithWidgetPreference mOptimizePreference;
    private SelectorWithWidgetPreference mUnrestrictedPreference;
    private SettingsActivity mTestActivity;
@@ -110,15 +119,22 @@ public class PowerBackgroundUsageDetailTest {
    @Mock private PackageManager mPackageManager;
    @Mock private AppOpsManager mAppOpsManager;
    @Mock private CompoundButton mMockSwitch;
    @Mock private InstallSourceInfo mInstallSourceInfo;

    @Before
    public void setUp() {
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);

        mContext = spy(RuntimeEnvironment.application);
        when(mContext.getPackageName()).thenReturn("foo");
        when(mContext.getPackageManager()).thenReturn(mPackageManager);
        when(mPackageManager.getInstallSourceInfo(anyString())).thenReturn(mInstallSourceInfo);

        final FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest();
        mMetricsFeatureProvider = fakeFeatureFactory.metricsFeatureProvider;

        mFragment = spy(new PowerBackgroundUsageDetail());
        mFragment.mLogStringBuilder = new StringBuilder();
        doReturn(mContext).when(mFragment).getContext();
        doReturn(mActivity).when(mFragment).getActivity();
        doReturn(SUMMARY).when(mFragment).getString(anyInt());
@@ -285,4 +301,49 @@ public class PowerBackgroundUsageDetailTest {
        assertThat(mFragment.getSelectedPreference()).isEqualTo(optimizedMode);
        verify(mBatteryOptimizeUtils).setAppUsageState(optimizedMode, Action.APPLY);
    }

    @Test
    public void onPause_optimizationModeChanged_logPreference() throws Exception {
        final String packageName = "testPackageName";
        final int restrictedMode = BatteryOptimizeUtils.MODE_RESTRICTED;
        final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
        mFragment.mOptimizationMode = restrictedMode;
        when(mBatteryOptimizeUtils.getPackageName()).thenReturn(packageName);
        when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn("com.android.vending");

        mFragment.onCheckedChanged(mMockSwitch, /* isChecked= */ true);
        verify(mBatteryOptimizeUtils).setAppUsageState(optimizedMode, Action.APPLY);
        when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(optimizedMode);
        mFragment.onPause();

        TimeUnit.SECONDS.sleep(1);
        verify(mMetricsFeatureProvider)
                .action(
                        SettingsEnums.LEAVE_POWER_USAGE_MANAGE_BACKGROUND,
                        SettingsEnums.ACTION_APP_BATTERY_USAGE_OPTIMIZED,
                        SettingsEnums.FUELGAUGE_POWER_USAGE_MANAGE_BACKGROUND,
                        packageName,
                        /* consumed battery */ 0);
    }

    @Test
    public void onPause_optimizationModeIsNotChanged_notInvokeLogging() throws Exception {
        final String packageName = "testPackageName";
        final int restrictedMode = BatteryOptimizeUtils.MODE_RESTRICTED;
        final int optimizedMode = BatteryOptimizeUtils.MODE_OPTIMIZED;
        mFragment.mOptimizationMode = restrictedMode;
        when(mBatteryOptimizeUtils.getPackageName()).thenReturn(packageName);
        when(mInstallSourceInfo.getInitiatingPackageName()).thenReturn("com.android.vending");

        mFragment.onCheckedChanged(mMockSwitch, /* isChecked= */ true);
        verify(mBatteryOptimizeUtils).setAppUsageState(optimizedMode, Action.APPLY);
        when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(optimizedMode);
        mFragment.onCheckedChanged(mMockSwitch, /* isChecked= */ false);
        verify(mBatteryOptimizeUtils).setAppUsageState(restrictedMode, Action.APPLY);
        when(mBatteryOptimizeUtils.getAppOptimizationMode()).thenReturn(restrictedMode);
        mFragment.onPause();

        TimeUnit.SECONDS.sleep(1);
        verifyNoInteractions(mMetricsFeatureProvider);
    }
}