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

Commit 4edb83b2 authored by Jason Chiu's avatar Jason Chiu Committed by Android (Google) Code Review
Browse files

Merge "Refine metrics log in infrastructure" into rvc-dev

parents dfa6cf0d 819abf7f
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.settings.applications;

import android.app.Application;
import android.app.settings.SettingsEnums;
import android.app.usage.UsageStats;
import android.content.Context;
import android.icu.text.RelativeDateTimeFormatter;
@@ -98,12 +97,12 @@ public class RecentAppsPreferenceController extends BasePreferenceController
                .setHeaderTitleRes(R.string.recent_app_category_title)
                .setHeaderDetailsClickListener((View v) -> {
                    mMetricsFeatureProvider.logClickedPreference(mRecentAppsPreference,
                            SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY);
                            getMetricsCategory());
                    new SubSettingLauncher(mContext)
                            .setDestination(ManageApplications.class.getName())
                            .setArguments(null /* arguments */)
                            .setTitleRes(R.string.application_info_label)
                            .setSourceMetricsCategory(SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY)
                            .setSourceMetricsCategory(getMetricsCategory())
                            .launch();
                });
    }
@@ -166,11 +165,10 @@ public class RecentAppsPreferenceController extends BasePreferenceController
                        RelativeDateTimeFormatter.Style.SHORT))
                .setOnClickListener(v -> {
                    mMetricsFeatureProvider.logClickedPreference(mRecentAppsPreference,
                            SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY);
                            getMetricsCategory());
                    AppInfoBase.startAppInfoFragment(AppInfoDashboardFragment.class,
                            R.string.application_info_label, pkgName, appEntry.info.uid,
                            mHost, 1001 /*RequestCode*/,
                            SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY);
                            mHost, 1001 /*RequestCode*/, getMetricsCategory());
                })
                .build();
    }
+1 −3
Original line number Diff line number Diff line
@@ -46,7 +46,6 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -202,8 +201,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
        pref.setSummary(item.getDescription());
        pref.setEnabled(item.isEnabled());
        pref.setOnPreferenceClickListener(preference -> {
            mMetricsFeatureProvider.logClickedPreference(preference,
                    preference.getExtras().getInt(DashboardFragment.CATEGORY));
            mMetricsFeatureProvider.logClickedPreference(preference, getMetricsCategory());
            final UserHandle user = item.getUser();
            mContext.startActivityAsUser(item.getLaunchIntent(mContext), user);
            return true;
+18 −1
Original line number Diff line number Diff line
@@ -124,6 +124,7 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl
    private boolean mIsForWork;
    @Nullable
    private UserHandle mWorkProfileUser;
    private int mMetricsCategory;

    /**
     * Instantiate a controller as specified controller type and user-defined key.
@@ -398,11 +399,27 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl
     * This won't block UI thread however has similar side effect. Please use it if you
     * want to avoid janky animation(i.e. new preference is added in the middle of page).
     *
     * This music be used in {@link BasePreferenceController}
     * This must be used in {@link BasePreferenceController}
     */
    public interface UiBlocker {
    }

    /**
     * Set the metrics category of the parent fragment.
     *
     * Called by DashboardFragment#onAttach
     */
    public void setMetricsCategory(int metricsCategory) {
        mMetricsCategory = metricsCategory;
    }

    /**
     * @return the metrics category of the parent fragment.
     */
    protected int getMetricsCategory() {
        return mMetricsCategory;
    }

    /**
     * @return Non-{@code null} {@link UserHandle} when a work profile is enabled.
     * Otherwise {@code null}.
+10 −0
Original line number Diff line number Diff line
@@ -18,8 +18,10 @@ import android.content.Context;
import androidx.preference.Preference;
import androidx.preference.TwoStatePreference;

import com.android.settings.overlay.FeatureFactory;
import com.android.settings.slices.SliceData;
import com.android.settings.widget.MasterSwitchPreference;
import com.android.settings.widget.TwoStateButtonPreference;

/**
 * Abstract class that consolidates logic for updating toggle controllers.
@@ -54,6 +56,8 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle
            ((TwoStatePreference) preference).setChecked(isChecked());
        } else if (preference instanceof MasterSwitchPreference) {
            ((MasterSwitchPreference) preference).setChecked(isChecked());
        } else if (preference instanceof TwoStateButtonPreference) {
            ((TwoStateButtonPreference) preference).setChecked(isChecked());
        } else {
            refreshSummary(preference);
        }
@@ -61,6 +65,12 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle

    @Override
    public final boolean onPreferenceChange(Preference preference, Object newValue) {
        // TwoStatePreference is a regular preference and can be handled by DashboardFragment
        if (preference instanceof MasterSwitchPreference
                || preference instanceof TwoStateButtonPreference) {
            FeatureFactory.getFactory(mContext).getMetricsFeatureProvider()
                    .logClickedPreference(preference, getMetricsCategory());
        }
        return setChecked((boolean) newValue);
    }

+8 −0
Original line number Diff line number Diff line
@@ -113,6 +113,14 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
            }
        });

        // Set metrics category for BasePreferenceController.
        final int metricCategory = getMetricsCategory();
        mControllers.forEach(controller -> {
            if (controller instanceof BasePreferenceController) {
                ((BasePreferenceController) controller).setMetricsCategory(metricCategory);
            }
        });

        mPlaceholderPreferenceController =
                new DashboardTilePlaceholderPreferenceController(context);
        mControllers.add(mPlaceholderPreferenceController);
Loading