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

Commit 7f2312f6 authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "Migrate PrimarySwitchPreference to SwitchCompat" into main

parents 06a65f64 bfb248f8
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -21,12 +21,13 @@ import android.util.AttributeSet;
import android.view.View;

import androidx.preference.PreferenceViewHolder;
import androidx.preference.SwitchPreference;
import androidx.preference.SwitchPreferenceCompat;

import com.android.settingslib.widget.preference.app.R;
/**
 * The SwitchPreference for the pages need to show apps icon.
 */
public class AppSwitchPreference extends SwitchPreference {
public class AppSwitchPreference extends SwitchPreferenceCompat {

    public AppSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr,
            int defStyleRes) {
@@ -52,7 +53,7 @@ public class AppSwitchPreference extends SwitchPreference {
    @Override
    public void onBindViewHolder(PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        final View switchView = holder.findViewById(android.R.id.switch_widget);
        final View switchView = holder.findViewById(androidx.preference.R.id.switchWidget);
        if (switchView != null) {
            final View rootView = switchView.getRootView();
            rootView.setFilterTouchesWhenObscured(true);
+9 −2
Original line number Diff line number Diff line
@@ -18,8 +18,11 @@ package com.android.settingslib;

import android.content.Context;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.LinearLayout;

import androidx.annotation.Keep;
import androidx.annotation.Nullable;
@@ -59,13 +62,17 @@ public class PrimarySwitchPreference extends RestrictedPreference {

    @Override
    protected int getSecondTargetResId() {
        return R.layout.preference_widget_primary_switch;
        return androidx.preference.R.layout.preference_widget_switch_compat;
    }

    @Override
    public void onBindViewHolder(PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        mSwitch = (CompoundButton) holder.findViewById(R.id.switchWidget);
        final View widgetFrame = holder.findViewById(android.R.id.widget_frame);
        if (widgetFrame instanceof LinearLayout linearLayout) {
            linearLayout.setGravity(Gravity.END | Gravity.CENTER_VERTICAL);
        }
        mSwitch = (CompoundButton) holder.findViewById(androidx.preference.R.id.switchWidget);
        if (mSwitch != null) {
            mSwitch.setOnClickListener(v -> {
                if (mSwitch != null && !mSwitch.isEnabled()) {
+20 −10
Original line number Diff line number Diff line
@@ -57,12 +57,14 @@ public class PrimarySwitchPreferenceTest {
                com.android.settingslib.widget.preference.twotarget.R.layout.preference_two_target,
                null));
        mWidgetView = mHolder.itemView.findViewById(android.R.id.widget_frame);
        inflater.inflate(R.layout.preference_widget_primary_switch, mWidgetView, true);
        inflater.inflate(androidx.preference.R.layout.preference_widget_switch_compat, mWidgetView,
                true);
    }

    @Test
    public void setChecked_shouldUpdateButtonCheckedState() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        mPreference.onBindViewHolder(mHolder);

        mPreference.setChecked(true);
@@ -74,7 +76,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void setSwitchEnabled_shouldUpdateButtonEnabledState() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        mPreference.onBindViewHolder(mHolder);

        mPreference.setSwitchEnabled(true);
@@ -86,7 +89,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void setSwitchEnabled_shouldUpdateButtonEnabledState_beforeViewBound() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);

        mPreference.setSwitchEnabled(false);
        mPreference.onBindViewHolder(mHolder);
@@ -97,7 +101,8 @@ public class PrimarySwitchPreferenceTest {
    public void clickWidgetView_shouldToggleButton() {
        assertThat(mWidgetView).isNotNull();

        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        mPreference.onBindViewHolder(mHolder);

        toggle.performClick();
@@ -111,7 +116,8 @@ public class PrimarySwitchPreferenceTest {
    public void clickWidgetView_shouldNotToggleButtonIfDisabled() {
        assertThat(mWidgetView).isNotNull();

        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        mPreference.onBindViewHolder(mHolder);
        toggle.setEnabled(false);

@@ -122,7 +128,8 @@ public class PrimarySwitchPreferenceTest {
    @Test
    public void clickWidgetView_shouldNotifyPreferenceChanged() {

        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);

        final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
        mPreference.setOnPreferenceChangeListener(listener);
@@ -139,7 +146,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void setDisabledByAdmin_hasEnforcedAdmin_shouldDisableButton() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        toggle.setEnabled(true);
        mPreference.onBindViewHolder(mHolder);

@@ -149,7 +157,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void setDisabledByAdmin_noEnforcedAdmin_shouldEnableButton() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        toggle.setEnabled(false);
        mPreference.onBindViewHolder(mHolder);

@@ -159,7 +168,8 @@ public class PrimarySwitchPreferenceTest {

    @Test
    public void onBindViewHolder_toggleButtonShouldHaveContentDescription() {
        final CompoundButton toggle = (CompoundButton) mHolder.findViewById(R.id.switchWidget);
        final CompoundButton toggle =
                (CompoundButton) mHolder.findViewById(androidx.preference.R.id.switchWidget);
        final String label = "TestButton";
        mPreference.setTitle(label);