Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b14d4208 authored by Doris Ling's avatar Doris Ling
Browse files

Log settings suggestions events only once.

The show/hide settings suggestions events are logged every time Settings
is shown. Save the logged events into the state bundle so that when the
fragment is resumed, it does not re-log the suggestions events.

Also move the logging for the show suggestion event to when the suggestion
is loaded, as the suggestions can be empty when the fragment starts.

Change-Id: I644ea0012bad309e59fed0d48171915c955779cc
Fixes: 30108142
parent 02fcbdea
Loading
Loading
Loading
Loading
+35 −11
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.SettingsDrawerActivity;
import com.android.settingslib.drawer.Tile;

import java.util.HashSet;
import java.util.List;

public class DashboardSummary extends InstrumentedFragment
@@ -63,6 +64,8 @@ public class DashboardSummary extends InstrumentedFragment
    private static final String SUGGESTIONS = "suggestions";

    private static final String EXTRA_SCROLL_POSITION = "scroll_position";
    private static final String EXTRA_SUGGESTION_SHOWN_LOGGED = "suggestions_shown_logged";
    private static final String EXTRA_SUGGESTION_HIDDEN_LOGGED = "suggestions_hidden_logged";

    private FocusRecyclerView mDashboard;
    private DashboardAdapter mAdapter;
@@ -71,6 +74,8 @@ public class DashboardSummary extends InstrumentedFragment
    private SuggestionParser mSuggestionParser;
    private LinearLayoutManager mLayoutManager;
    private SuggestionsChecks mSuggestionsChecks;
    private HashSet<String> mSuggestionsShownLogged;
    private HashSet<String> mSuggestionsHiddenLogged;

    @Override
    protected int getMetricsCategory() {
@@ -90,6 +95,15 @@ public class DashboardSummary extends InstrumentedFragment
        mSuggestionParser = new SuggestionParser(context,
                context.getSharedPreferences(SUGGESTIONS, 0), R.xml.suggestion_ordering);
        mSuggestionsChecks = new SuggestionsChecks(getContext());
        if (savedInstanceState == null) {
            mSuggestionsShownLogged = new HashSet();
            mSuggestionsHiddenLogged = new HashSet();
        } else {
            mSuggestionsShownLogged =
                    (HashSet) savedInstanceState.getSerializable(EXTRA_SUGGESTION_SHOWN_LOGGED);
            mSuggestionsHiddenLogged =
                    (HashSet) savedInstanceState.getSerializable(EXTRA_SUGGESTION_HIDDEN_LOGGED);
        }
        if (DEBUG_TIMING) Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime)
                + " ms");
    }
@@ -112,12 +126,6 @@ public class DashboardSummary extends InstrumentedFragment
                MetricsLogger.visible(getContext(), c.getMetricsConstant());
            }
        }
        if (mAdapter.getSuggestions() != null) {
            for (Tile suggestion : mAdapter.getSuggestions()) {
                MetricsLogger.action(getContext(), MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION,
                        DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion));
            }
        }
        if (DEBUG_TIMING) Log.d(TAG, "onResume took " + (System.currentTimeMillis() - startTime)
                + " ms");
    }
@@ -136,9 +144,15 @@ public class DashboardSummary extends InstrumentedFragment
        if (mAdapter.getSuggestions() == null) {
            return;
        }
        if (!getActivity().isChangingConfigurations()) {
            for (Tile suggestion : mAdapter.getSuggestions()) {
            MetricsLogger.action(getContext(), MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION,
                    DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion));
                String id = DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion);
                if (!mSuggestionsHiddenLogged.contains(id)) {
                    mSuggestionsHiddenLogged.add(id);
                    MetricsLogger.action(getContext(),
                            MetricsEvent.ACTION_HIDE_SETTINGS_SUGGESTION, id);
                }
            }
        }
    }

@@ -169,6 +183,8 @@ public class DashboardSummary extends InstrumentedFragment
        if (mAdapter != null) {
            mAdapter.onSaveInstanceState(outState);
        }
        outState.putSerializable(EXTRA_SUGGESTION_HIDDEN_LOGGED, mSuggestionsHiddenLogged);
        outState.putSerializable(EXTRA_SUGGESTION_SHOWN_LOGGED, mSuggestionsShownLogged);
    }

    @Override
@@ -222,9 +238,17 @@ public class DashboardSummary extends InstrumentedFragment
        protected List<Tile> doInBackground(Void... params) {
            List<Tile> suggestions = mSuggestionParser.getSuggestions();
            for (int i = 0; i < suggestions.size(); i++) {
                if (mSuggestionsChecks.isSuggestionComplete(suggestions.get(i))) {
                    mAdapter.disableSuggestion(suggestions.get(i));
                Tile suggestion = suggestions.get(i);
                if (mSuggestionsChecks.isSuggestionComplete(suggestion)) {
                    mAdapter.disableSuggestion(suggestion);
                    suggestions.remove(i--);
                } else {
                    String id = DashboardAdapter.getSuggestionIdentifier(getContext(), suggestion);
                    if (!mSuggestionsShownLogged.contains(id)) {
                        mSuggestionsShownLogged.add(id);
                        MetricsLogger.action(getContext(),
                                MetricsEvent.ACTION_SHOW_SETTINGS_SUGGESTION, id);
                    }
                }
            }
            return suggestions;