Only enable feedback dialog in debuggable build.
Bug: 129881534 Test: robotests Change-Id: I0dbd8c06f650cc7b3c32697f0c3af055912fab59
This commit is contained in:
@@ -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];
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user