Misc logging improvements
- Log ACTION_SEARCH_RESULTS whenever a search query is performed. eg, type "qu" will result 2 such logging events. - Remove historam logging to search result click count (already logged as ACTION_CLICK_SETTINGS_SEARCH_RESULT) Change-Id: Ia207b34702e0f24a7885e47d093f6cce1314ebc4 Fixes: 67743512 Fixes: 64939544 Test: robotests
This commit is contained in:
@@ -49,4 +49,8 @@ public abstract class InstrumentedFragment extends ObservableFragment implements
|
|||||||
mVisibilityLoggerMixin.setSourceMetricsCategory(getActivity());
|
mVisibilityLoggerMixin.setSourceMetricsCategory(getActivity());
|
||||||
super.onResume();
|
super.onResume();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected final VisibilityLoggerMixin getVisibilityLogger() {
|
||||||
|
return mVisibilityLoggerMixin;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -75,7 +75,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
|||||||
private static final String STATE_QUERY = "state_query";
|
private static final String STATE_QUERY = "state_query";
|
||||||
private static final String STATE_SHOWING_SAVED_QUERY = "state_showing_saved_query";
|
private static final String STATE_SHOWING_SAVED_QUERY = "state_showing_saved_query";
|
||||||
private static final String STATE_NEVER_ENTERED_QUERY = "state_never_entered_query";
|
private static final String STATE_NEVER_ENTERED_QUERY = "state_never_entered_query";
|
||||||
private static final String STATE_RESULT_CLICK_COUNT = "state_result_click_count";
|
|
||||||
|
|
||||||
static final class SearchLoaderId {
|
static final class SearchLoaderId {
|
||||||
// Search Query IDs
|
// Search Query IDs
|
||||||
@@ -96,17 +95,12 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
AtomicInteger mUnfinishedLoadersCount = new AtomicInteger(NUM_QUERY_LOADERS);
|
AtomicInteger mUnfinishedLoadersCount = new AtomicInteger(NUM_QUERY_LOADERS);
|
||||||
|
|
||||||
// Logging
|
|
||||||
@VisibleForTesting
|
|
||||||
static final String RESULT_CLICK_COUNT = "settings_search_result_click_count";
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
String mQuery;
|
String mQuery;
|
||||||
|
|
||||||
private boolean mNeverEnteredQuery = true;
|
private boolean mNeverEnteredQuery = true;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
boolean mShowingSavedQuery;
|
boolean mShowingSavedQuery;
|
||||||
private int mResultClickCount;
|
|
||||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
SavedQueryController mSavedQueryController;
|
SavedQueryController mSavedQueryController;
|
||||||
@@ -161,7 +155,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
|||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mQuery = savedInstanceState.getString(STATE_QUERY);
|
mQuery = savedInstanceState.getString(STATE_QUERY);
|
||||||
mNeverEnteredQuery = savedInstanceState.getBoolean(STATE_NEVER_ENTERED_QUERY);
|
mNeverEnteredQuery = savedInstanceState.getBoolean(STATE_NEVER_ENTERED_QUERY);
|
||||||
mResultClickCount = savedInstanceState.getInt(STATE_RESULT_CLICK_COUNT);
|
|
||||||
mShowingSavedQuery = savedInstanceState.getBoolean(STATE_SHOWING_SAVED_QUERY);
|
mShowingSavedQuery = savedInstanceState.getBoolean(STATE_SHOWING_SAVED_QUERY);
|
||||||
} else {
|
} else {
|
||||||
mShowingSavedQuery = true;
|
mShowingSavedQuery = true;
|
||||||
@@ -244,7 +237,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
|||||||
super.onStop();
|
super.onStop();
|
||||||
final Activity activity = getActivity();
|
final Activity activity = getActivity();
|
||||||
if (activity != null && activity.isFinishing()) {
|
if (activity != null && activity.isFinishing()) {
|
||||||
mMetricsFeatureProvider.histogram(activity, RESULT_CLICK_COUNT, mResultClickCount);
|
|
||||||
if (mNeverEnteredQuery) {
|
if (mNeverEnteredQuery) {
|
||||||
mMetricsFeatureProvider.action(activity,
|
mMetricsFeatureProvider.action(activity,
|
||||||
MetricsEvent.ACTION_LEAVE_SEARCH_RESULT_WITHOUT_QUERY);
|
MetricsEvent.ACTION_LEAVE_SEARCH_RESULT_WITHOUT_QUERY);
|
||||||
@@ -258,7 +250,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
|||||||
outState.putString(STATE_QUERY, mQuery);
|
outState.putString(STATE_QUERY, mQuery);
|
||||||
outState.putBoolean(STATE_NEVER_ENTERED_QUERY, mNeverEnteredQuery);
|
outState.putBoolean(STATE_NEVER_ENTERED_QUERY, mNeverEnteredQuery);
|
||||||
outState.putBoolean(STATE_SHOWING_SAVED_QUERY, mShowingSavedQuery);
|
outState.putBoolean(STATE_SHOWING_SAVED_QUERY, mShowingSavedQuery);
|
||||||
outState.putInt(STATE_RESULT_CLICK_COUNT, mResultClickCount);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -276,7 +267,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
|||||||
mNoResultsView.setVisibility(View.GONE);
|
mNoResultsView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
mResultClickCount = 0;
|
|
||||||
mNeverEnteredQuery = false;
|
mNeverEnteredQuery = false;
|
||||||
mQuery = query;
|
mQuery = query;
|
||||||
|
|
||||||
@@ -335,7 +325,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
|||||||
if (mUnfinishedLoadersCount.decrementAndGet() != 0) {
|
if (mUnfinishedLoadersCount.decrementAndGet() != 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mSearchAdapter.notifyResultsLoaded();
|
mSearchAdapter.notifyResultsLoaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -372,7 +361,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
|||||||
logSearchResultClicked(resultViewHolder, result, logTaggedData);
|
logSearchResultClicked(resultViewHolder, result, logTaggedData);
|
||||||
mSearchFeatureProvider.searchResultClicked(getContext(), mQuery, result);
|
mSearchFeatureProvider.searchResultClicked(getContext(), mQuery, result);
|
||||||
mSavedQueryController.saveQuery(mQuery);
|
mSavedQueryController.saveQuery(mQuery);
|
||||||
mResultClickCount++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onSearchResultsDisplayed(int resultCount) {
|
public void onSearchResultsDisplayed(int resultCount) {
|
||||||
@@ -384,6 +372,8 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O
|
|||||||
mNoResultsView.setVisibility(View.GONE);
|
mNoResultsView.setVisibility(View.GONE);
|
||||||
mResultsRecyclerView.scrollToPosition(0);
|
mResultsRecyclerView.scrollToPosition(0);
|
||||||
}
|
}
|
||||||
|
mMetricsFeatureProvider.action(
|
||||||
|
getVisibilityLogger(), MetricsEvent.ACTION_SEARCH_RESULTS, 1);
|
||||||
mSearchFeatureProvider.showFeedbackButton(this, getView());
|
mSearchFeatureProvider.showFeedbackButton(this, getView());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -43,6 +43,7 @@ import com.android.internal.logging.nano.MetricsProto;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
||||||
import com.android.settings.testutils.DatabaseTestUtils;
|
import com.android.settings.testutils.DatabaseTestUtils;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
@@ -207,8 +208,6 @@ public class SearchFragmentTest {
|
|||||||
verify(mFeatureFactory.metricsFeatureProvider, never()).action(
|
verify(mFeatureFactory.metricsFeatureProvider, never()).action(
|
||||||
any(Context.class),
|
any(Context.class),
|
||||||
eq(MetricsProto.MetricsEvent.ACTION_LEAVE_SEARCH_RESULT_WITHOUT_QUERY));
|
eq(MetricsProto.MetricsEvent.ACTION_LEAVE_SEARCH_RESULT_WITHOUT_QUERY));
|
||||||
verify(mFeatureFactory.metricsFeatureProvider).histogram(
|
|
||||||
any(Context.class), eq(SearchFragment.RESULT_CLICK_COUNT), eq(0));
|
|
||||||
verify(mFeatureFactory.searchFeatureProvider)
|
verify(mFeatureFactory.searchFeatureProvider)
|
||||||
.getDatabaseSearchLoader(any(Context.class), anyString());
|
.getDatabaseSearchLoader(any(Context.class), anyString());
|
||||||
verify(mFeatureFactory.searchFeatureProvider)
|
verify(mFeatureFactory.searchFeatureProvider)
|
||||||
@@ -231,6 +230,10 @@ public class SearchFragmentTest {
|
|||||||
any(Context.class),
|
any(Context.class),
|
||||||
anyInt(),
|
anyInt(),
|
||||||
eq(MetricsProto.MetricsEvent.SETTINGS_SEARCH_NO_RESULT));
|
eq(MetricsProto.MetricsEvent.SETTINGS_SEARCH_NO_RESULT));
|
||||||
|
verify(mFeatureFactory.metricsFeatureProvider).action(
|
||||||
|
any(VisibilityLoggerMixin.class),
|
||||||
|
eq(MetricsProto.MetricsEvent.ACTION_SEARCH_RESULTS),
|
||||||
|
eq(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user