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

Commit 09f62d72 authored by Chelsea Hao's avatar Chelsea Hao Committed by Android (Google) Code Review
Browse files

Merge changes Id0882547,I427e08a3 into main

* changes:
  [Audiosharing] Change text color.
  [Audiosharing] When user enters a bad code, apply error color on summary.
parents d26c804a cd6f77d4
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -26,7 +26,8 @@
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="48dp"
        android:textAlignment="viewStart"/>
        android:textAlignment="viewStart"
        android:textColor="?android:attr/textColorPrimary"/>
    <EditText
        android:id="@+id/broadcast_edit_text"
        android:layout_width="match_parent"
@@ -34,11 +35,4 @@
        android:maxLength="16"
        android:minHeight="48dp"
        android:textAlignment="viewStart"/>
    <TextView
        android:id="@+id/broadcast_error_message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        style="@style/TextAppearance.ErrorText"
        android:visibility="invisible"/>
</LinearLayout>
 No newline at end of file
+4 −15
Original line number Diff line number Diff line
@@ -43,24 +43,13 @@ class AudioStreamPreference extends TwoTargetPreference {
     * Update preference UI based on connection status
     *
     * @param isConnected Is this stream connected
     * @param summary Summary text
     * @param onPreferenceClickListener Click listener for the preference
     */
    void setIsConnected(
            boolean isConnected,
            String summary,
            @Nullable OnPreferenceClickListener onPreferenceClickListener) {
        if (mIsConnected == isConnected
                && getSummary() == summary
                && getOnPreferenceClickListener() == onPreferenceClickListener) {
            // Nothing to update.
            return;
        }
    void setIsConnected(boolean isConnected) {
        if (mIsConnected != isConnected) {
            mIsConnected = isConnected;
        setSummary(summary);
        setOnPreferenceClickListener(onPreferenceClickListener);
            notifyChanged();
        }
    }

    @VisibleForTesting
    AudioStreamPreference(Context context, @Nullable AttributeSet attrs) {
+30 −9
Original line number Diff line number Diff line
@@ -16,8 +16,12 @@

package com.android.settings.connecteddevice.audiosharing.audiostreams;

import static android.text.Spanned.SPAN_EXCLUSIVE_INCLUSIVE;

import android.os.Handler;
import android.os.Looper;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.util.Log;

import androidx.annotation.Nullable;
@@ -26,6 +30,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;

import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.Utils;
import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.utils.ThreadUtils;
@@ -68,15 +73,31 @@ class AudioStreamStateHandler {

        // Update UI
        ThreadUtils.postOnMainThread(
                () ->
                () -> {
                    String summary =
                            getSummary() != EMPTY_STRING_RES
                                    ? preference.getContext().getString(getSummary())
                                    : "";
                    if (newState
                            == AudioStreamsProgressCategoryController.AudioStreamState
                                    .ADD_SOURCE_BAD_CODE) {
                        SpannableString summarySpan = new SpannableString(summary);
                        int colorError = Utils.getColorErrorDefaultColor(preference.getContext());
                        summarySpan.setSpan(
                                new ForegroundColorSpan(colorError),
                                0,
                                summary.length(),
                                SPAN_EXCLUSIVE_INCLUSIVE);
                        preference.setSummary(summarySpan);
                    } else {
                        preference.setSummary(summary);
                    }
                    preference.setIsConnected(
                            newState
                                    == AudioStreamsProgressCategoryController.AudioStreamState
                                                .SOURCE_ADDED,
                                getSummary() != EMPTY_STRING_RES
                                        ? preference.getContext().getString(getSummary())
                                        : "",
                                getOnClickListener(controller)));
                                            .SOURCE_ADDED);
                    preference.setOnPreferenceClickListener(getOnClickListener(controller));
                });
    }

    /**
+1 −13
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;

import androidx.preference.Preference.OnPreferenceClickListener;
import androidx.preference.PreferenceViewHolder;
import androidx.test.core.app.ApplicationProvider;

@@ -93,17 +92,6 @@ public class AudioStreamPreferenceTest {
        assertThat(divider.getVisibility()).isEqualTo(View.GONE);
    }

    @Test
    public void setConnected_shouldUpdatePreferenceUI() {
        String summary = "Connected";
        OnPreferenceClickListener listener = mock(OnPreferenceClickListener.class);
        mPreference.setIsConnected(true, summary, listener);

        assertThat(mPreference.getSummary()).isNotNull();
        assertThat(mPreference.getSummary().toString()).isEqualTo(summary);
        assertThat(mPreference.getOnPreferenceClickListener()).isEqualTo(listener);
    }

    @Test
    public void setAudioStreamMetadata_shouldUpdateMetadata() {
        AudioStreamPreference p =
@@ -147,7 +135,7 @@ public class AudioStreamPreferenceTest {

    @Test
    public void shouldHideSecondTarget_connected() {
        mPreference.setIsConnected(true, "", null);
        mPreference.setIsConnected(true);
        assertThat(mPreference.shouldHideSecondTarget()).isTrue();
    }

+15 −4
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
@@ -31,6 +30,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.text.SpannableString;

import androidx.preference.Preference;
import androidx.test.core.app.ApplicationProvider;
@@ -39,6 +39,7 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
@@ -75,7 +76,9 @@ public class AudioStreamStateHandlerTest {

        verify(mPreference, never()).setAudioStreamState(any());
        verify(mHandler, never()).performAction(any(), any(), any());
        verify(mPreference, never()).setIsConnected(anyBoolean(), anyString(), any());
        verify(mPreference, never()).setIsConnected(anyBoolean());
        verify(mPreference, never()).setSummary(any());
        verify(mPreference, never()).setOnPreferenceClickListener(any());
    }

    @Test
@@ -93,7 +96,9 @@ public class AudioStreamStateHandlerTest {
                .setAudioStreamState(
                        AudioStreamsProgressCategoryController.AudioStreamState.SOURCE_ADDED);
        verify(mHandler).performAction(any(), any(), any());
        verify(mPreference).setIsConnected(eq(true), eq(""), eq(null));
        verify(mPreference).setIsConnected(eq(true));
        verify(mPreference).setSummary(eq(""));
        verify(mPreference).setOnPreferenceClickListener(eq(null));
    }

    @Test
@@ -119,7 +124,13 @@ public class AudioStreamStateHandlerTest {
                        AudioStreamsProgressCategoryController.AudioStreamState
                                .ADD_SOURCE_BAD_CODE);
        verify(mHandler).performAction(any(), any(), any());
        verify(mPreference).setIsConnected(eq(false), eq(SUMMARY), eq(listener));
        verify(mPreference).setIsConnected(eq(false));
        ArgumentCaptor<SpannableString> argumentCaptor =
                ArgumentCaptor.forClass(SpannableString.class);
        verify(mPreference).setSummary(argumentCaptor.capture());
        assertThat(argumentCaptor.getValue()).isNotNull();
        assertThat(argumentCaptor.getValue().toString()).isEqualTo(SUMMARY);
        verify(mPreference).setOnPreferenceClickListener(eq(listener));
    }

    @Test