Log search result click and its rank.

Bug: 34975477
Test: RunSettingsRoboTests
Change-Id: I86e72dbd27ac5daeafa4fb35ad55662de7b3eca9
This commit is contained in:
Fan Zhang
2017-02-15 17:12:12 -08:00
parent 42df1dcac0
commit 8fc4e819a2
7 changed files with 74 additions and 15 deletions

View File

@@ -15,28 +15,49 @@
*/
package com.android.settings.search2;
import android.content.ComponentName;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Pair;
import android.view.View;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.SettingsActivity;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.overlay.FeatureFactory;
/**
* ViewHolder for intent based search results.
* The DatabaseResultLoader is the primary use case for this ViewHolder.
*/
public class IntentSearchViewHolder extends SearchViewHolder {
private final MetricsFeatureProvider mMetricsFeatureProvider;
public IntentSearchViewHolder(View view) {
super(view);
mMetricsFeatureProvider = FeatureFactory.getFactory(view.getContext())
.getMetricsFeatureProvider();
}
@Override
public void onBind(final SearchFragment fragment, final SearchResult result) {
super.onBind(fragment, result);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fragment.onSearchResultClicked();
fragment.startActivity(((IntentPayload) result.payload).intent);
itemView.setOnClickListener(v -> {
fragment.onSearchResultClicked();
final Intent intent = ((IntentPayload) result.payload).intent;
final ComponentName cn = intent.getComponent();
final Pair<Integer, Object> rank = Pair.create(
MetricsEvent.FIELD_SETTINGS_SERACH_RESULT_RANK, getAdapterPosition());
String resultName = intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT);
if (TextUtils.isEmpty(resultName) && cn != null) {
resultName = cn.flattenToString();
}
mMetricsFeatureProvider.action(v.getContext(),
MetricsEvent.ACTION_CLICK_SETTINGS_SEARCH_RESULT,
resultName, rank);
fragment.startActivity(intent);
});
}
}