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

Commit d9c138c4 authored by Jason Hsu's avatar Jason Hsu Committed by Android (Google) Code Review
Browse files

Merge "Update 'See more devices' to ButtonPreference" into main

parents 1919d601 fe6f1681
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();
    }
}