From 21ffc13e5aa1fc36cd8ad8da1aa5207d50937329 Mon Sep 17 00:00:00 2001 From: Yi-Ling Chuang Date: Tue, 9 Apr 2019 17:23:06 +0800 Subject: [PATCH] Only enable feedback dialog in debuggable build. Bug: 129881534 Test: robotests Change-Id: I0dbd8c06f650cc7b3c32697f0c3af055912fab59 --- .../slices/SliceContextualCardController.java | 8 +++- .../slices/SliceContextualCardControllerTest.java | 46 ++++++++++++++++++++-- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardController.java b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardController.java index eb062e8629..07e23de5cb 100644 --- a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardController.java +++ b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardController.java @@ -18,6 +18,7 @@ package com.android.settings.homepage.contextualcards.slices; import android.content.Context; import android.content.Intent; +import android.os.Build; import android.text.TextUtils; import androidx.annotation.VisibleForTesting; @@ -82,7 +83,7 @@ public class SliceContextualCardController implements ContextualCardController { @VisibleForTesting void showFeedbackDialog(ContextualCard card) { final String email = mContext.getString(R.string.config_contextual_card_feedback_email); - if (TextUtils.isEmpty(email)) { + if (!isFeedbackEnabled(email)) { return; } final Intent feedbackIntent = new Intent(mContext, ContextualCardFeedbackDialog.class); @@ -93,6 +94,11 @@ public class SliceContextualCardController implements ContextualCardController { mContext.startActivity(feedbackIntent); } + @VisibleForTesting + boolean isFeedbackEnabled(String email) { + return !TextUtils.isEmpty(email) && Build.IS_DEBUGGABLE; + } + private String getSimpleCardName(ContextualCard card) { final String[] split = card.getName().split("/"); return split[split.length - 1]; diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardControllerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardControllerTest.java index e97e01e970..94fbb97876 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardControllerTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardControllerTest.java @@ -18,8 +18,10 @@ package com.android.settings.homepage.contextualcards.slices; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.any; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -28,7 +30,9 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.net.Uri; +import android.os.Build; +import com.android.settings.R; import com.android.settings.homepage.contextualcards.CardContentProvider; import com.android.settings.homepage.contextualcards.CardDatabaseHelper; import com.android.settings.homepage.contextualcards.ContextualCard; @@ -48,6 +52,7 @@ import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; import org.robolectric.shadows.ShadowContentResolver; import org.robolectric.shadows.androidx.fragment.FragmentController; +import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) public class SliceContextualCardControllerTest { @@ -95,11 +100,12 @@ public class SliceContextualCardControllerTest { } @Test - public void onDismissed_noFeedbackEmail_shouldNotShowFeedbackDialog() { + public void onDismissed_feedbackDisabled_shouldNotShowFeedbackDialog() { mResolver.insert(CardContentProvider.REFRESH_CARD_URI, generateOneRow()); final ContextualCardsFragment fragment = FragmentController.of(new ContextualCardsFragment()).create().get(); final ShadowActivity shadowActivity = Shadows.shadowOf(fragment.getActivity()); + doReturn(false).when(mController).isFeedbackEnabled(anyString()); mController.onDismissed(getTestSliceCard()); @@ -107,12 +113,12 @@ public class SliceContextualCardControllerTest { } @Test - @Config(qualifiers = "mcc999") - public void onDismissed_hasFeedbackEmail_shouldShowFeedbackDialog() { + public void onDismissed_feedbackEnabled_shouldShowFeedbackDialog() { mResolver.insert(CardContentProvider.REFRESH_CARD_URI, generateOneRow()); final ContextualCardsFragment fragment = FragmentController.of(new ContextualCardsFragment()).create().get(); final ShadowActivity shadowActivity = Shadows.shadowOf(fragment.getActivity()); + doReturn(true).when(mController).isFeedbackEnabled(anyString()); mController.onDismissed(getTestSliceCard()); @@ -120,6 +126,40 @@ public class SliceContextualCardControllerTest { .isEqualTo(ContextualCardFeedbackDialog.class.getName()); } + @Test + @Config(qualifiers = "mcc999") + public void isFeedbackEnabled_hasFeedbackEmail_debug_returnTrue() { + ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", true); + final String email = mContext.getString(R.string.config_contextual_card_feedback_email); + + assertThat(mController.isFeedbackEnabled(email)).isTrue(); + } + + @Test + @Config(qualifiers = "mcc999") + public void isFeedbackEnabled_hasFeedbackEmail_user_returnFalse() { + ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false); + final String email = mContext.getString(R.string.config_contextual_card_feedback_email); + + assertThat(mController.isFeedbackEnabled(email)).isFalse(); + } + + @Test + public void isFeedbackEnabled_noFeedbackEmail_debug_returnFalse() { + ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", true); + final String email = mContext.getString(R.string.config_contextual_card_feedback_email); + + assertThat(mController.isFeedbackEnabled(email)).isFalse(); + } + + @Test + public void isFeedbackEnabled_noFeedbackEmail_user_returnFalse() { + ReflectionHelpers.setStaticField(Build.class, "IS_DEBUGGABLE", false); + final String email = mContext.getString(R.string.config_contextual_card_feedback_email); + + assertThat(mController.isFeedbackEnabled(email)).isFalse(); + } + private ContentValues generateOneRow() { final ContentValues values = new ContentValues(); values.put(CardDatabaseHelper.CardColumns.NAME, TEST_CARD_NAME); -- 2.11.0