Merge "Remove old format contextual card log" into qt-dev

This commit is contained in:
Raff Tsai
2019-04-10 23:42:48 +00:00
committed by Android (Google) Code Review
6 changed files with 2 additions and 273 deletions

View File

@@ -20,17 +20,4 @@ import java.util.List;
/** Feature provider for the contextual card feature. */
public interface ContextualCardFeatureProvider {
/** Homepage displays. */
void logHomepageDisplay(long latency);
/** When user clicks dismiss in contextual card */
void logContextualCardDismiss(ContextualCard card);
/** After ContextualCardManager decides which cards will be displayed/hidden */
void logContextualCardDisplay(List<ContextualCard> showedCards,
List<ContextualCard> hiddenCards);
/** When user clicks toggle/title area of a contextual card. */
void logContextualCardClick(ContextualCard card, int sliceRow, int tapTarget, int uiPosition);
}

View File

@@ -16,161 +16,12 @@
package com.android.settings.homepage.contextualcards;
import android.annotation.NonNull;
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import androidx.slice.widget.EventInfo;
import com.android.settings.R;
import com.android.settings.intelligence.ContextualCardProto.ContextualCardList;
import java.util.List;
public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureProvider {
private static final String TAG = "ContextualCardFeature";
// Contextual card interaction logs
// Settings Homepage shows
private static final int CONTEXTUAL_HOME_SHOW = 38;
// Contextual card shows, log card name and rank
private static final int CONTEXTUAL_CARD_SHOW = 39;
// Contextual card is dismissed, log card name
private static final int CONTEXTUAL_CARD_DISMISS = 41;
// Contextual card is clicked , log card name, score, tap area
private static final int CONTEXTUAL_CARD_CLICK = 42;
// SettingsLogBroadcastReceiver contracts
// contextual card name
private static final String EXTRA_CONTEXTUALCARD_NAME = "name";
// contextual card uri
private static final String EXTRA_CONTEXTUALCARD_URI = "uri";
// contextual card score
private static final String EXTRA_CONTEXTUALCARD_SCORE = "score";
// contextual card clicked row
private static final String EXTRA_CONTEXTUALCARD_ROW = "row";
// contextual card tap target
private static final String EXTRA_CONTEXTUALCARD_TAP_TARGET = "target";
// contextual card ui position
private static final String EXTRA_CONTEXTUALCARD_UI_POSTITION = "ui_position";
// contextual homepage display latency
private static final String EXTRA_LATENCY = "latency";
// log type
private static final String EXTRA_CONTEXTUALCARD_ACTION_TYPE = "type";
// displayed contextual cards
private static final String EXTRA_CONTEXTUALCARD_VISIBLE = "visible";
// hidden contextual cards
private static final String EXTRA_CONTEXTUALCARD_HIDDEN = "hidden";
// Contextual card tap target
private static final int TARGET_DEFAULT = 0;
// Click title area
private static final int TARGET_TITLE = 1;
// Click toggle
private static final int TARGET_TOGGLE = 2;
// Click slider
private static final int TARGET_SLIDER = 3;
private final Context mContext;
public ContextualCardFeatureProviderImpl(Context context) {
mContext = context;
}
@Override
public void logHomepageDisplay(long latency) {
sendBroadcast(new Intent()
.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_HOME_SHOW)
.putExtra(EXTRA_LATENCY, latency));
}
@Override
public void logContextualCardDismiss(ContextualCard card) {
final Intent intent = new Intent();
intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_DISMISS);
intent.putExtra(EXTRA_CONTEXTUALCARD_NAME, card.getName());
intent.putExtra(EXTRA_CONTEXTUALCARD_URI, card.getSliceUri().toString());
intent.putExtra(EXTRA_CONTEXTUALCARD_SCORE, card.getRankingScore());
sendBroadcast(intent);
}
@Override
public void logContextualCardDisplay(List<ContextualCard> visibleCards,
List<ContextualCard> hiddenCards) {
final Intent intent = new Intent();
intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_SHOW);
intent.putExtra(EXTRA_CONTEXTUALCARD_VISIBLE, serialize(visibleCards));
intent.putExtra(EXTRA_CONTEXTUALCARD_HIDDEN, serialize(hiddenCards));
sendBroadcast(intent);
}
@Override
public void logContextualCardClick(ContextualCard card, int row,
int actionType, int uiPosition) {
final Intent intent = new Intent();
intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_CARD_CLICK);
intent.putExtra(EXTRA_CONTEXTUALCARD_NAME, card.getName());
intent.putExtra(EXTRA_CONTEXTUALCARD_URI, card.getSliceUri().toString());
intent.putExtra(EXTRA_CONTEXTUALCARD_SCORE, card.getRankingScore());
intent.putExtra(EXTRA_CONTEXTUALCARD_ROW, row);
intent.putExtra(EXTRA_CONTEXTUALCARD_TAP_TARGET, actionTypeToTapTarget(actionType));
intent.putExtra(EXTRA_CONTEXTUALCARD_UI_POSTITION, uiPosition);
sendBroadcast(intent);
}
@VisibleForTesting
void sendBroadcast(final Intent intent) {
intent.setPackage(mContext.getString(R.string.config_settingsintelligence_package_name));
final String action = mContext.getString(R.string.config_settingsintelligence_log_action);
if (!TextUtils.isEmpty(action)) {
intent.setAction(action);
mContext.sendBroadcastAsUser(intent, UserHandle.CURRENT);
}
}
private int actionTypeToTapTarget(int actionType) {
switch (actionType) {
case EventInfo.ACTION_TYPE_CONTENT:
return TARGET_TITLE;
case EventInfo.ACTION_TYPE_TOGGLE:
return TARGET_TOGGLE;
case EventInfo.ACTION_TYPE_SLIDER:
return TARGET_SLIDER;
default:
Log.w(TAG, "unknown type " + actionType);
return TARGET_DEFAULT;
}
}
@VisibleForTesting
@NonNull
byte[] serialize(List<ContextualCard> cards) {
final ContextualCardList.Builder builder = ContextualCardList.newBuilder();
cards.stream().forEach(card -> builder.addCard(
com.android.settings.intelligence.ContextualCardProto.ContextualCard.newBuilder()
.setSliceUri(card.getSliceUri().toString())
.setCardName(card.getName())
.setCardScore(card.getRankingScore())
.build()));
return builder.build().toByteArray();
}
}

View File

@@ -228,8 +228,6 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
}
//only log homepage display upon a fresh launch
final long totalTime = System.currentTimeMillis() - mStartTime;
FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider(mContext)
.logHomepageDisplay(totalTime);
metricsFeatureProvider.action(mContext,
SettingsEnums.ACTION_CONTEXTUAL_HOME_SHOW, (int) totalTime);