Loading src/com/android/settings/notification/modes/ZenModeEditDonePreferenceController.java +14 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ package com.android.settings.notification.modes; import android.content.Context; import android.view.View; import android.widget.Button; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; Loading @@ -32,6 +34,7 @@ class ZenModeEditDonePreferenceController extends AbstractZenModePreferenceContr private final Runnable mConfirmSave; @Nullable private Button mButton; private boolean mHasValidName; ZenModeEditDonePreferenceController(@NonNull Context context, @NonNull String key, Runnable confirmSave) { Loading @@ -46,15 +49,22 @@ class ZenModeEditDonePreferenceController extends AbstractZenModePreferenceContr if (pref != null) { mButton = pref.findViewById(R.id.done); if (mButton != null) { mButton.setOnClickListener(v -> mConfirmSave.run()); mButton.setOnClickListener(this::onButtonClick); } } } private void onButtonClick(View view) { if (mHasValidName) { mConfirmSave.run(); } else { Toast.makeText(mContext, R.string.zen_mode_edit_name_empty_error, Toast.LENGTH_SHORT) .show(); } } @Override void updateState(Preference preference, @NonNull ZenMode zenMode) { if (mButton != null) { mButton.setEnabled(!zenMode.getName().isBlank()); } mHasValidName = !zenMode.getName().isBlank(); } } tests/robotests/src/com/android/settings/notification/modes/ZenModeEditDonePreferenceControllerTest.java +7 −12 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadows.ShadowToast; @RunWith(RobolectricTestRunner.class) @EnableFlags(Flags.FLAG_MODES_UI) Loading Loading @@ -74,29 +75,23 @@ public class ZenModeEditDonePreferenceControllerTest { } @Test public void updateState_nameNonEmpty_buttonEnabled() { public void buttonClick_nameNonEmpty_buttonSaves() { ZenMode mode = new TestModeBuilder().setName("Such a nice name").build(); mController.updateState(mPreference, mode); mButton.performClick(); assertThat(mButton.isEnabled()).isTrue(); verifyNoMoreInteractions(mConfirmSave); verify(mConfirmSave).run(); } @Test public void updateState_nameEmpty_buttonDisabled() { public void buttonClick_nameEmpty_buttonErrors() { ZenMode aModeHasNoName = new TestModeBuilder().setName("").build(); mController.updateState(mPreference, aModeHasNoName); assertThat(mButton.isEnabled()).isFalse(); verifyNoMoreInteractions(mConfirmSave); } @Test public void onButtonClick_callsConfirmSave() { mButton.performClick(); verify(mConfirmSave).run(); verifyNoMoreInteractions(mConfirmSave); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo("Mode name cannot be empty"); } } Loading
src/com/android/settings/notification/modes/ZenModeEditDonePreferenceController.java +14 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,9 @@ package com.android.settings.notification.modes; import android.content.Context; import android.view.View; import android.widget.Button; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; Loading @@ -32,6 +34,7 @@ class ZenModeEditDonePreferenceController extends AbstractZenModePreferenceContr private final Runnable mConfirmSave; @Nullable private Button mButton; private boolean mHasValidName; ZenModeEditDonePreferenceController(@NonNull Context context, @NonNull String key, Runnable confirmSave) { Loading @@ -46,15 +49,22 @@ class ZenModeEditDonePreferenceController extends AbstractZenModePreferenceContr if (pref != null) { mButton = pref.findViewById(R.id.done); if (mButton != null) { mButton.setOnClickListener(v -> mConfirmSave.run()); mButton.setOnClickListener(this::onButtonClick); } } } private void onButtonClick(View view) { if (mHasValidName) { mConfirmSave.run(); } else { Toast.makeText(mContext, R.string.zen_mode_edit_name_empty_error, Toast.LENGTH_SHORT) .show(); } } @Override void updateState(Preference preference, @NonNull ZenMode zenMode) { if (mButton != null) { mButton.setEnabled(!zenMode.getName().isBlank()); } mHasValidName = !zenMode.getName().isBlank(); } }
tests/robotests/src/com/android/settings/notification/modes/ZenModeEditDonePreferenceControllerTest.java +7 −12 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.shadows.ShadowToast; @RunWith(RobolectricTestRunner.class) @EnableFlags(Flags.FLAG_MODES_UI) Loading Loading @@ -74,29 +75,23 @@ public class ZenModeEditDonePreferenceControllerTest { } @Test public void updateState_nameNonEmpty_buttonEnabled() { public void buttonClick_nameNonEmpty_buttonSaves() { ZenMode mode = new TestModeBuilder().setName("Such a nice name").build(); mController.updateState(mPreference, mode); mButton.performClick(); assertThat(mButton.isEnabled()).isTrue(); verifyNoMoreInteractions(mConfirmSave); verify(mConfirmSave).run(); } @Test public void updateState_nameEmpty_buttonDisabled() { public void buttonClick_nameEmpty_buttonErrors() { ZenMode aModeHasNoName = new TestModeBuilder().setName("").build(); mController.updateState(mPreference, aModeHasNoName); assertThat(mButton.isEnabled()).isFalse(); verifyNoMoreInteractions(mConfirmSave); } @Test public void onButtonClick_callsConfirmSave() { mButton.performClick(); verify(mConfirmSave).run(); verifyNoMoreInteractions(mConfirmSave); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo("Mode name cannot be empty"); } }