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

Commit 9673300e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Remove the replaced activity checking to impact launching performance"...

Merge "Remove the replaced activity checking to impact launching performance" into sc-v2-dev am: 6dbc3835

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16426486

Change-Id: Iadc95c4f5961003d562982148f9e916cf2cf97c6
parents 22d79fab 6dbc3835
Loading
Loading
Loading
Loading
+0 −40
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.settings.fuelgauge;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
@@ -32,8 +31,6 @@ import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.utils.ThreadUtils;

import java.util.HashMap;

public class TopLevelBatteryPreferenceController extends BasePreferenceController implements
        LifecycleObserver, OnStart, OnStop, BatteryPreferenceController {

@@ -43,13 +40,9 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle
    Preference mPreference;
    private final BatteryBroadcastReceiver mBatteryBroadcastReceiver;
    private BatteryInfo mBatteryInfo;
    private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;
    private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
    private String mBatteryStatusLabel;

    @VisibleForTesting
    protected static HashMap<String, ComponentName> sReplacingActivityMap = new HashMap<>();

    public TopLevelBatteryPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext);
@@ -63,8 +56,6 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle
            }, true /* shortString */);
        });

        mBatterySettingsFeatureProvider = FeatureFactory.getFactory(context)
                .getBatterySettingsFeatureProvider(context);
        mBatteryStatusFeatureProvider = FeatureFactory.getFactory(context)
                .getBatteryStatusFeatureProvider(context);
    }
@@ -81,37 +72,6 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle
        mPreference = screen.findPreference(getPreferenceKey());
    }

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        String prefFrag = preference.getFragment();
        if (prefFrag == null || prefFrag.isEmpty()) {
            // Not a redirect, so use the default.
            return super.handlePreferenceTreeClick(preference);
        }

        ComponentName currentFragmentName = convertClassPathToComponentName(prefFrag);
        if (currentFragmentName == null) {
            return super.handlePreferenceTreeClick(preference);
        }

        ComponentName replacingActivity;
        if (sReplacingActivityMap.containsKey(prefFrag)) {
            replacingActivity = sReplacingActivityMap.get(prefFrag);
        } else {
            replacingActivity = mBatterySettingsFeatureProvider.getReplacingActivity(
                    currentFragmentName);
            sReplacingActivityMap.put(prefFrag, replacingActivity);
        }

        if (replacingActivity == null || currentFragmentName.compareTo(replacingActivity) == 0) {
            return super.handlePreferenceTreeClick(preference);
        }
        Intent intent = new Intent();
        intent.setComponent(currentFragmentName);
        mContext.startActivity(intent);
        return true;
    }

    @Override
    public void onStart() {
        mBatteryBroadcastReceiver.register();
+0 −64
Original line number Diff line number Diff line
@@ -21,11 +21,7 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

@@ -36,9 +32,7 @@ import android.content.Context;
import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -50,23 +44,13 @@ import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
public class TopLevelBatteryPreferenceControllerTest {
    private Context mContext;
    private FakeFeatureFactory mFeatureFactory;
    private TopLevelBatteryPreferenceController mController;
    private BatterySettingsFeatureProvider mBatterySettingsFeatureProvider;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mFeatureFactory = FakeFeatureFactory.setupForTest();
        mContext = spy(Robolectric.setupActivity(Activity.class));
        mController = new TopLevelBatteryPreferenceController(mContext, "test_key");
        mBatterySettingsFeatureProvider =
                mFeatureFactory.batterySettingsFeatureProvider;
    }

    @After
    public void cleanUp() {
        TopLevelBatteryPreferenceController.sReplacingActivityMap.clear();
    }

    @Test
@@ -80,54 +64,6 @@ public class TopLevelBatteryPreferenceControllerTest {
        assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
    }

    @Test
    public void handlePreferenceTreeClick_noFragment_noCustomActivityCalled() {
        Preference preference = new Preference(mContext);

        assertThat(mController.handlePreferenceTreeClick(preference)).isFalse();
    }

    @Test
    public void handlePreferenceTreeClick_sameActivityReturned_noCustomActivityCalled() {
        String fragmentPath = "my.fragment.ClassName";
        Preference preference = mock(Preference.class);
        when(preference.getFragment()).thenReturn(fragmentPath);
        ComponentName pathName = mController.convertClassPathToComponentName(fragmentPath);
        when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(pathName);

        assertThat(mController.handlePreferenceTreeClick(preference)).isFalse();
    }

    @Test
    public void handlePreferenceTreeClick_newActivityReturned_newActivityRedirected() {
        String fragmentPath = "my.fragment.ClassName";
        Preference preference = mock(Preference.class);
        when(preference.getFragment()).thenReturn(fragmentPath);
        String newFragmentPath = "my.fragment.NewClassName";
        ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath);
        when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(
                newPathName);
        doNothing().when(mContext).startActivity(any());

        assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
    }

    @Test
    public void handlePreferenceTreeClick_calledMultipleTimes_fetchedFromCache() {
        String fragmentPath = "my.fragment.ClassName";
        Preference preference = mock(Preference.class);
        when(preference.getFragment()).thenReturn(fragmentPath);
        String newFragmentPath = "my.fragment.NewClassName";
        ComponentName newPathName = mController.convertClassPathToComponentName(newFragmentPath);
        when(mBatterySettingsFeatureProvider.getReplacingActivity(any())).thenReturn(
                newPathName);
        doNothing().when(mContext).startActivity(any());

        assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
        assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
        verify(mBatterySettingsFeatureProvider, times(1)).getReplacingActivity(any());
    }

    @Test
    public void convertClassPathToComponentName_nullInput_returnsNull() {
        assertThat(mController.convertClassPathToComponentName(null)).isNull();