Only enable feedback dialog in debuggable build.

Bug: 129881534
Test: robotests
Change-Id: I0dbd8c06f650cc7b3c32697f0c3af055912fab59
This commit is contained in:
Yi-Ling Chuang
2019-04-09 17:23:06 +08:00
parent 73f539d296
commit 21ffc13e5a
2 changed files with 50 additions and 4 deletions

View File

@@ -18,6 +18,7 @@ package com.android.settings.homepage.contextualcards.slices;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
@@ -82,7 +83,7 @@ public class SliceContextualCardController implements ContextualCardController {
@VisibleForTesting @VisibleForTesting
void showFeedbackDialog(ContextualCard card) { void showFeedbackDialog(ContextualCard card) {
final String email = mContext.getString(R.string.config_contextual_card_feedback_email); final String email = mContext.getString(R.string.config_contextual_card_feedback_email);
if (TextUtils.isEmpty(email)) { if (!isFeedbackEnabled(email)) {
return; return;
} }
final Intent feedbackIntent = new Intent(mContext, ContextualCardFeedbackDialog.class); final Intent feedbackIntent = new Intent(mContext, ContextualCardFeedbackDialog.class);
@@ -93,6 +94,11 @@ public class SliceContextualCardController implements ContextualCardController {
mContext.startActivity(feedbackIntent); mContext.startActivity(feedbackIntent);
} }
@VisibleForTesting
boolean isFeedbackEnabled(String email) {
return !TextUtils.isEmpty(email) && Build.IS_DEBUGGABLE;
}
private String getSimpleCardName(ContextualCard card) { private String getSimpleCardName(ContextualCard card) {
final String[] split = card.getName().split("/"); final String[] split = card.getName().split("/");
return split[split.length - 1]; return split[split.length - 1];

View File

@@ -18,8 +18,10 @@ package com.android.settings.homepage.contextualcards.slices;
import static com.google.common.truth.Truth.assertThat; 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.any;
import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -28,7 +30,9 @@ import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; 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.CardContentProvider;
import com.android.settings.homepage.contextualcards.CardDatabaseHelper; import com.android.settings.homepage.contextualcards.CardDatabaseHelper;
import com.android.settings.homepage.contextualcards.ContextualCard; 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.ShadowActivity;
import org.robolectric.shadows.ShadowContentResolver; import org.robolectric.shadows.ShadowContentResolver;
import org.robolectric.shadows.androidx.fragment.FragmentController; import org.robolectric.shadows.androidx.fragment.FragmentController;
import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class SliceContextualCardControllerTest { public class SliceContextualCardControllerTest {
@@ -95,11 +100,12 @@ public class SliceContextualCardControllerTest {
} }
@Test @Test
public void onDismissed_noFeedbackEmail_shouldNotShowFeedbackDialog() { public void onDismissed_feedbackDisabled_shouldNotShowFeedbackDialog() {
mResolver.insert(CardContentProvider.REFRESH_CARD_URI, generateOneRow()); mResolver.insert(CardContentProvider.REFRESH_CARD_URI, generateOneRow());
final ContextualCardsFragment fragment = final ContextualCardsFragment fragment =
FragmentController.of(new ContextualCardsFragment()).create().get(); FragmentController.of(new ContextualCardsFragment()).create().get();
final ShadowActivity shadowActivity = Shadows.shadowOf(fragment.getActivity()); final ShadowActivity shadowActivity = Shadows.shadowOf(fragment.getActivity());
doReturn(false).when(mController).isFeedbackEnabled(anyString());
mController.onDismissed(getTestSliceCard()); mController.onDismissed(getTestSliceCard());
@@ -107,12 +113,12 @@ public class SliceContextualCardControllerTest {
} }
@Test @Test
@Config(qualifiers = "mcc999") public void onDismissed_feedbackEnabled_shouldShowFeedbackDialog() {
public void onDismissed_hasFeedbackEmail_shouldShowFeedbackDialog() {
mResolver.insert(CardContentProvider.REFRESH_CARD_URI, generateOneRow()); mResolver.insert(CardContentProvider.REFRESH_CARD_URI, generateOneRow());
final ContextualCardsFragment fragment = final ContextualCardsFragment fragment =
FragmentController.of(new ContextualCardsFragment()).create().get(); FragmentController.of(new ContextualCardsFragment()).create().get();
final ShadowActivity shadowActivity = Shadows.shadowOf(fragment.getActivity()); final ShadowActivity shadowActivity = Shadows.shadowOf(fragment.getActivity());
doReturn(true).when(mController).isFeedbackEnabled(anyString());
mController.onDismissed(getTestSliceCard()); mController.onDismissed(getTestSliceCard());
@@ -120,6 +126,40 @@ public class SliceContextualCardControllerTest {
.isEqualTo(ContextualCardFeedbackDialog.class.getName()); .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() { private ContentValues generateOneRow() {
final ContentValues values = new ContentValues(); final ContentValues values = new ContentValues();
values.put(CardDatabaseHelper.CardColumns.NAME, TEST_CARD_NAME); values.put(CardDatabaseHelper.CardColumns.NAME, TEST_CARD_NAME);