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

Commit 3a9707b8 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Only enable feedback dialog in debuggable build." into qt-dev

parents 3ec5e76c 21ffc13e
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);