Loading res/layout/bluetooth_find_broadcast_password_dialog.xml +2 −8 Original line number Diff line number Diff line Loading @@ -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" Loading @@ -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 src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreference.java +4 −15 Original line number Diff line number Diff line Loading @@ -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) { Loading src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java +30 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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)); }); } /** Loading tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreferenceTest.java +1 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading Loading @@ -147,7 +135,7 @@ public class AudioStreamPreferenceTest { @Test public void shouldHideSecondTarget_connected() { mPreference.setIsConnected(true, "", null); mPreference.setIsConnected(true); assertThat(mPreference.shouldHideSecondTarget()).isTrue(); } Loading tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandlerTest.java +15 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading Loading
res/layout/bluetooth_find_broadcast_password_dialog.xml +2 −8 Original line number Diff line number Diff line Loading @@ -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" Loading @@ -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
src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreference.java +4 −15 Original line number Diff line number Diff line Loading @@ -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) { Loading
src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandler.java +30 −9 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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)); }); } /** Loading
tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamPreferenceTest.java +1 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading Loading @@ -147,7 +135,7 @@ public class AudioStreamPreferenceTest { @Test public void shouldHideSecondTarget_connected() { mPreference.setIsConnected(true, "", null); mPreference.setIsConnected(true); assertThat(mPreference.shouldHideSecondTarget()).isTrue(); } Loading
tests/robotests/src/com/android/settings/connecteddevice/audiosharing/audiostreams/AudioStreamStateHandlerTest.java +15 −4 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading