Merge "Record all contextual card log to MetricsFeatureProvider" into qt-dev

am: dc4f7ce282

Change-Id: Ib4122ef0cb900ba5afff73e25e1f0ffe6bcb50c1
This commit is contained in:
Fan Zhang
2019-04-09 18:41:50 -07:00
committed by android-build-merger
9 changed files with 428 additions and 25 deletions

View File

@@ -22,12 +22,15 @@ import static com.android.settings.homepage.contextualcards.ContextualCardLoader
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.net.Uri;
@@ -182,8 +185,10 @@ public class ContextualCardLoaderTest {
mContextualCardLoader.getDisplayableCards(new ArrayList<>());
verify(mFakeFeatureFactory.mContextualCardFeatureProvider).logContextualCardDisplay(
anyList(), anyList());
verify(mFakeFeatureFactory.metricsFeatureProvider).action(any(),
eq(SettingsEnums.ACTION_CONTEXTUAL_CARD_SHOW), any(String.class));
verify(mFakeFeatureFactory.metricsFeatureProvider).action(any(),
eq(SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW), any(String.class));
}
@Test

View File

@@ -0,0 +1,100 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.homepage.contextualcards.logging;
import static com.google.common.truth.Truth.assertThat;
import android.net.Uri;
import com.android.settings.homepage.contextualcards.ContextualCard;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
public class ContextualCardLogUtilsTest {
private static final String TEST_URI = "content://test/test2";
private static final double TEST_SCORE = 0.12345f;
private static final ContextualCard TEST_CARD =
new ContextualCard.Builder()
.setSliceUri(Uri.parse(TEST_URI))
.setRankingScore(TEST_SCORE)
.build();
@Test
public void parseCardDismissLog_notValid_returnNull() {
assertThat(ContextualCardLogUtils.parseCardDismissLog(TEST_URI + "|" + TEST_URI)).isNull();
}
@Test
public void parseCardDismissLog_isValid_returnCorrectData() {
final String log = ContextualCardLogUtils.buildCardDismissLog(TEST_CARD);
final ContextualCardLogUtils.CardLog cardLog = ContextualCardLogUtils.parseCardDismissLog(
log);
assertThat(cardLog.getSliceUri()).isEqualTo(TEST_URI);
assertThat(cardLog.getRankingScore()).isEqualTo(TEST_SCORE);
}
@Test
public void parseCardClickLog_isValid_returnCorrectData() {
final int row = 1;
final int target = 2;
final int position = 3;
final String log = ContextualCardLogUtils.buildCardClickLog(TEST_CARD, row, target,
position);
final ContextualCardLogUtils.CardClickLog cardClickLog =
ContextualCardLogUtils.parseCardClickLog(log);
assertThat(cardClickLog.getSliceUri()).isEqualTo(TEST_URI);
assertThat(cardClickLog.getRankingScore()).isEqualTo(TEST_SCORE);
assertThat(cardClickLog.getSliceRow()).isEqualTo(row);
assertThat(cardClickLog.getSliceTapTarget()).isEqualTo(
ContextualCardLogUtils.actionTypeToTapTarget(target));
assertThat(cardClickLog.getUiPosition()).isEqualTo(position);
}
@Test
public void parseCardClickList_isValid_returnCorrectData() {
final ContextualCard testcard =
new ContextualCard.Builder()
.setSliceUri(Uri.parse("testtest"))
.setRankingScore(-1d)
.build();
final List<ContextualCard> cardList = new ArrayList<>();
cardList.add(TEST_CARD);
cardList.add(testcard);
final String log = ContextualCardLogUtils.buildCardListLog(cardList);
final List<ContextualCardLogUtils.CardLog> cardClickLogList =
ContextualCardLogUtils.parseCardListLog(log);
assertThat(cardClickLogList.size()).isEqualTo(2);
assertThat(cardClickLogList.get(0).getSliceUri()).isEqualTo(TEST_URI);
assertThat(cardClickLogList.get(0).getRankingScore()).isEqualTo(TEST_SCORE);
assertThat(cardClickLogList.get(1).getSliceUri()).isEqualTo("testtest");
assertThat(cardClickLogList.get(1).getRankingScore()).isEqualTo(-1d);
}
}

View File

@@ -18,13 +18,15 @@ package com.android.settings.homepage.contextualcards.slices;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.app.settings.SettingsEnums;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
@@ -96,7 +98,8 @@ public class SliceContextualCardControllerTest {
cr.close();
assertThat(qryDismissed).isEqualTo(1);
verify(mFeatureFactory.mContextualCardFeatureProvider).logContextualCardDismiss(card);
verify(mFeatureFactory.metricsFeatureProvider).action(any(),
eq(SettingsEnums.ACTION_CONTEXTUAL_CARD_DISMISS), any(String.class));
}
@Test