Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21ffc13e authored by Yi-Ling Chuang's avatar Yi-Ling Chuang
Browse files

Only enable feedback dialog in debuggable build.

Bug: 129881534
Test: robotests
Change-Id: I0dbd8c06f650cc7b3c32697f0c3af055912fab59
parent 73f539d2
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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];
+43 −3
Original line number Diff line number Diff line
@@ -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);