OSDN Git Service

Only enable feedback dialog in debuggable build.
authorYi-Ling Chuang <emilychuang@google.com>
Tue, 9 Apr 2019 09:23:06 +0000 (17:23 +0800)
committerYi-Ling Chuang <emilychuang@google.com>
Tue, 9 Apr 2019 10:07:50 +0000 (18:07 +0800)
Bug: 129881534
Test: robotests
Change-Id: I0dbd8c06f650cc7b3c32697f0c3af055912fab59

src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardController.java
tests/robotests/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardControllerTest.java

index eb062e8..07e23de 100644 (file)
@@ -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];
index e97e01e..94fbb97 100644 (file)
@@ -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);