Loading src/com/android/settings/core/InstrumentedFragment.java +4 −0 Original line number Diff line number Diff line Loading @@ -49,4 +49,8 @@ public abstract class InstrumentedFragment extends ObservableFragment implements mVisibilityLoggerMixin.setSourceMetricsCategory(getActivity()); super.onResume(); } protected final VisibilityLoggerMixin getVisibilityLogger() { return mVisibilityLoggerMixin; } } src/com/android/settings/search/SearchFragment.java +2 −12 Original line number Diff line number Diff line Loading @@ -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_SHOWING_SAVED_QUERY = "state_showing_saved_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 { // Search Query IDs Loading @@ -96,17 +95,12 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O @VisibleForTesting AtomicInteger mUnfinishedLoadersCount = new AtomicInteger(NUM_QUERY_LOADERS); // Logging @VisibleForTesting static final String RESULT_CLICK_COUNT = "settings_search_result_click_count"; @VisibleForTesting String mQuery; private boolean mNeverEnteredQuery = true; @VisibleForTesting boolean mShowingSavedQuery; private int mResultClickCount; private MetricsFeatureProvider mMetricsFeatureProvider; @VisibleForTesting SavedQueryController mSavedQueryController; Loading Loading @@ -161,7 +155,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O if (savedInstanceState != null) { mQuery = savedInstanceState.getString(STATE_QUERY); mNeverEnteredQuery = savedInstanceState.getBoolean(STATE_NEVER_ENTERED_QUERY); mResultClickCount = savedInstanceState.getInt(STATE_RESULT_CLICK_COUNT); mShowingSavedQuery = savedInstanceState.getBoolean(STATE_SHOWING_SAVED_QUERY); } else { mShowingSavedQuery = true; Loading Loading @@ -244,7 +237,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O super.onStop(); final Activity activity = getActivity(); if (activity != null && activity.isFinishing()) { mMetricsFeatureProvider.histogram(activity, RESULT_CLICK_COUNT, mResultClickCount); if (mNeverEnteredQuery) { mMetricsFeatureProvider.action(activity, MetricsEvent.ACTION_LEAVE_SEARCH_RESULT_WITHOUT_QUERY); Loading @@ -258,7 +250,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O outState.putString(STATE_QUERY, mQuery); outState.putBoolean(STATE_NEVER_ENTERED_QUERY, mNeverEnteredQuery); outState.putBoolean(STATE_SHOWING_SAVED_QUERY, mShowingSavedQuery); outState.putInt(STATE_RESULT_CLICK_COUNT, mResultClickCount); } @Override Loading @@ -276,7 +267,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O mNoResultsView.setVisibility(View.GONE); } mResultClickCount = 0; mNeverEnteredQuery = false; mQuery = query; Loading Loading @@ -335,7 +325,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O if (mUnfinishedLoadersCount.decrementAndGet() != 0) { return; } mSearchAdapter.notifyResultsLoaded(); } Loading Loading @@ -372,7 +361,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O logSearchResultClicked(resultViewHolder, result, logTaggedData); mSearchFeatureProvider.searchResultClicked(getContext(), mQuery, result); mSavedQueryController.saveQuery(mQuery); mResultClickCount++; } public void onSearchResultsDisplayed(int resultCount) { Loading @@ -384,6 +372,8 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O mNoResultsView.setVisibility(View.GONE); mResultsRecyclerView.scrollToPosition(0); } mMetricsFeatureProvider.action( getVisibilityLogger(), MetricsEvent.ACTION_SEARCH_RESULTS, 1); mSearchFeatureProvider.showFeedbackButton(this, getView()); } Loading tests/robotests/src/com/android/settings/search/SearchFragmentTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.TestConfig; import com.android.settings.core.instrumentation.VisibilityLoggerMixin; import com.android.settings.testutils.DatabaseTestUtils; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; Loading Loading @@ -207,8 +208,6 @@ public class SearchFragmentTest { verify(mFeatureFactory.metricsFeatureProvider, never()).action( any(Context.class), 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) .getDatabaseSearchLoader(any(Context.class), anyString()); verify(mFeatureFactory.searchFeatureProvider) Loading @@ -231,6 +230,10 @@ public class SearchFragmentTest { any(Context.class), anyInt(), eq(MetricsProto.MetricsEvent.SETTINGS_SEARCH_NO_RESULT)); verify(mFeatureFactory.metricsFeatureProvider).action( any(VisibilityLoggerMixin.class), eq(MetricsProto.MetricsEvent.ACTION_SEARCH_RESULTS), eq(1)); } @Test Loading Loading
src/com/android/settings/core/InstrumentedFragment.java +4 −0 Original line number Diff line number Diff line Loading @@ -49,4 +49,8 @@ public abstract class InstrumentedFragment extends ObservableFragment implements mVisibilityLoggerMixin.setSourceMetricsCategory(getActivity()); super.onResume(); } protected final VisibilityLoggerMixin getVisibilityLogger() { return mVisibilityLoggerMixin; } }
src/com/android/settings/search/SearchFragment.java +2 −12 Original line number Diff line number Diff line Loading @@ -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_SHOWING_SAVED_QUERY = "state_showing_saved_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 { // Search Query IDs Loading @@ -96,17 +95,12 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O @VisibleForTesting AtomicInteger mUnfinishedLoadersCount = new AtomicInteger(NUM_QUERY_LOADERS); // Logging @VisibleForTesting static final String RESULT_CLICK_COUNT = "settings_search_result_click_count"; @VisibleForTesting String mQuery; private boolean mNeverEnteredQuery = true; @VisibleForTesting boolean mShowingSavedQuery; private int mResultClickCount; private MetricsFeatureProvider mMetricsFeatureProvider; @VisibleForTesting SavedQueryController mSavedQueryController; Loading Loading @@ -161,7 +155,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O if (savedInstanceState != null) { mQuery = savedInstanceState.getString(STATE_QUERY); mNeverEnteredQuery = savedInstanceState.getBoolean(STATE_NEVER_ENTERED_QUERY); mResultClickCount = savedInstanceState.getInt(STATE_RESULT_CLICK_COUNT); mShowingSavedQuery = savedInstanceState.getBoolean(STATE_SHOWING_SAVED_QUERY); } else { mShowingSavedQuery = true; Loading Loading @@ -244,7 +237,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O super.onStop(); final Activity activity = getActivity(); if (activity != null && activity.isFinishing()) { mMetricsFeatureProvider.histogram(activity, RESULT_CLICK_COUNT, mResultClickCount); if (mNeverEnteredQuery) { mMetricsFeatureProvider.action(activity, MetricsEvent.ACTION_LEAVE_SEARCH_RESULT_WITHOUT_QUERY); Loading @@ -258,7 +250,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O outState.putString(STATE_QUERY, mQuery); outState.putBoolean(STATE_NEVER_ENTERED_QUERY, mNeverEnteredQuery); outState.putBoolean(STATE_SHOWING_SAVED_QUERY, mShowingSavedQuery); outState.putInt(STATE_RESULT_CLICK_COUNT, mResultClickCount); } @Override Loading @@ -276,7 +267,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O mNoResultsView.setVisibility(View.GONE); } mResultClickCount = 0; mNeverEnteredQuery = false; mQuery = query; Loading Loading @@ -335,7 +325,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O if (mUnfinishedLoadersCount.decrementAndGet() != 0) { return; } mSearchAdapter.notifyResultsLoaded(); } Loading Loading @@ -372,7 +361,6 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O logSearchResultClicked(resultViewHolder, result, logTaggedData); mSearchFeatureProvider.searchResultClicked(getContext(), mQuery, result); mSavedQueryController.saveQuery(mQuery); mResultClickCount++; } public void onSearchResultsDisplayed(int resultCount) { Loading @@ -384,6 +372,8 @@ public class SearchFragment extends InstrumentedFragment implements SearchView.O mNoResultsView.setVisibility(View.GONE); mResultsRecyclerView.scrollToPosition(0); } mMetricsFeatureProvider.action( getVisibilityLogger(), MetricsEvent.ACTION_SEARCH_RESULTS, 1); mSearchFeatureProvider.showFeedbackButton(this, getView()); } Loading
tests/robotests/src/com/android/settings/search/SearchFragmentTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.TestConfig; import com.android.settings.core.instrumentation.VisibilityLoggerMixin; import com.android.settings.testutils.DatabaseTestUtils; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; Loading Loading @@ -207,8 +208,6 @@ public class SearchFragmentTest { verify(mFeatureFactory.metricsFeatureProvider, never()).action( any(Context.class), 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) .getDatabaseSearchLoader(any(Context.class), anyString()); verify(mFeatureFactory.searchFeatureProvider) Loading @@ -231,6 +230,10 @@ public class SearchFragmentTest { any(Context.class), anyInt(), eq(MetricsProto.MetricsEvent.SETTINGS_SEARCH_NO_RESULT)); verify(mFeatureFactory.metricsFeatureProvider).action( any(VisibilityLoggerMixin.class), eq(MetricsProto.MetricsEvent.ACTION_SEARCH_RESULTS), eq(1)); } @Test Loading