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

Commit fe6f1681 authored by jasonwshsu's avatar jasonwshsu
Browse files

Update 'See more devices' to ButtonPreference

Bug: 406487785
Test: atest ViewAllBluetoothDevicesPreferenceControllerTest
Flag: EXEMPT bugfix
Change-Id: I224bde7af602c360c2eff9af6e50b46d92a1c154
parent 07505687
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -32,9 +32,11 @@
    <PreferenceCategory
        android:key="more_devices_category"
        android:title="@string/accessibility_found_all_devices">
        <com.android.settings.accessibility.ArrowPreference
        <com.android.settingslib.widget.ButtonPreference
            android:key="more_devices"
            android:title="@string/accessibility_list_all_devices_title"
            settings:buttonPreferenceSize="extra"
            settings:buttonPreferenceType="tonal"
            settings:searchable="false"
            settings:userRestriction="no_config_bluetooth"
            settings:useAdminDisabledSummary="true"
+16 −14
Original line number Diff line number Diff line
@@ -17,16 +17,17 @@
package com.android.settings.accessibility;

import android.content.Context;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.widget.ButtonPreference;

/** Preference controller for all bluetooth device preference. */
public class ViewAllBluetoothDevicesPreferenceController extends BasePreferenceController {
@@ -36,6 +37,19 @@ public class ViewAllBluetoothDevicesPreferenceController extends BasePreferenceC
        super(context, preferenceKey);
    }

    @Override
    public void displayPreference(@NonNull PreferenceScreen screen) {
        super.displayPreference(screen);
        ButtonPreference preference = screen.findPreference(getPreferenceKey());
        if (preference != null) {
            preference.setOnClickListener(view -> {
                FeatureFactory.getFeatureFactory().getMetricsFeatureProvider().clicked(
                        getMetricsCategory(), getPreferenceKey());
                launchConnectedDevicePage();
            });
        }
    }

    /**
     * Initializes objects in this controller. Needs to call this before using the controller.
     *
@@ -50,18 +64,6 @@ public class ViewAllBluetoothDevicesPreferenceController extends BasePreferenceC
        return AVAILABLE;
    }

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (TextUtils.equals(preference.getKey(), getPreferenceKey())) {
            FeatureFactory.getFeatureFactory().getMetricsFeatureProvider().clicked(
                    getMetricsCategory(), getPreferenceKey());
            launchConnectedDevicePage();
            return true;
        }

        return false;
    }

    @VisibleForTesting
    void launchConnectedDevicePage() {
        new SubSettingLauncher(mContext)
+12 −8
Original line number Diff line number Diff line
@@ -16,20 +16,21 @@

package com.android.settings.accessibility;

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

import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.view.View;

import androidx.fragment.app.FragmentActivity;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceViewHolder;
import androidx.test.core.app.ApplicationProvider;

import com.android.settingslib.widget.ButtonPreference;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -52,7 +53,6 @@ public class ViewAllBluetoothDevicesPreferenceControllerTest {
    @Rule
    public MockitoRule mocks = MockitoJUnit.rule();
    private final Context mContext = ApplicationProvider.getApplicationContext();
    private final Preference mPreference = new Preference(mContext);
    private final String TEST_KEY = "test_key";

    @Spy
@@ -61,12 +61,18 @@ public class ViewAllBluetoothDevicesPreferenceControllerTest {
    @Mock
    private PreferenceScreen mScreen;
    private ViewAllBluetoothDevicesPreferenceController mController;
    private ButtonPreference mPreference = new ButtonPreference(mContext);


    @Before
    public void setUp() {
        mActivity = Robolectric.setupActivity(FragmentActivity.class);
        when(mFragment.getContext()).thenReturn(mContext);
        when(mFragment.getActivity()).thenReturn(mActivity);
        View rootView = View.inflate(mContext, mPreference.getLayoutResource(), null);
        mPreference.setKey(TEST_KEY);
        mPreference.onBindViewHolder(PreferenceViewHolder.createInstanceForTests(rootView));
        when(mScreen.findPreference(TEST_KEY)).thenReturn(mPreference);

        mController = spy(new ViewAllBluetoothDevicesPreferenceController(mActivity, TEST_KEY));
        mController.init(mFragment);
@@ -74,13 +80,11 @@ public class ViewAllBluetoothDevicesPreferenceControllerTest {
    }

    @Test
    public void handlePreferenceTreeClick_expectedPreference_launchConnectedDevicePage() {
    public void buttonPreferenceOnClick_launchConnectedDevicePage() {
        doNothing().when(mController).launchConnectedDevicePage();
        mPreference.setKey(TEST_KEY);

        boolean status = mController.handlePreferenceTreeClick(mPreference);
        mPreference.getButton().callOnClick();

        verify(mController).launchConnectedDevicePage();
        assertThat(status).isTrue();
    }
}