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

Commit c96b5551 authored by yqian's avatar yqian
Browse files

Log connected devices entrypoint for analytics

Test: locally tested
Bug: N/A
Flag: EXEMPT loggings only
Change-Id: I5158a026fecdd19245f7427431563dd754dff2eb
parent 33936788
Loading
Loading
Loading
Loading
+57 −13
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.settings.connecteddevice;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
@@ -34,18 +35,25 @@ import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.slices.SlicePreferenceController;
import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.HearingAidStatsLogUtils;

import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.search.SearchIndexable;

@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class ConnectedDeviceDashboardFragment extends DashboardFragment {

    private static final String TAG = "ConnectedDeviceFrag";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private static final String SLICE_ACTION = "com.android.settings.SEARCH_RESULT_TRAMPOLINE";

    private static final String SETTINGS_SEARCH_ACTION =
            "com.android.settings.SEARCH_RESULT_TRAMPOLINE";
    @VisibleForTesting static final String KEY_CONNECTED_DEVICES = "connected_device_list";
    @VisibleForTesting static final String KEY_AVAILABLE_DEVICES = "available_device_list";

    private static final String ENTRYPOINT_SYSUI = "bt_settings_entrypoint_sysui";
    private static final String ENTRYPOINT_SETTINGS = "bt_settings_entrypoint_settings_click";
    private static final String ENTRYPOINT_SETTINGS_SEARCH =
            "bt_settings_entrypoint_settings_search";
    private static final String ENTRYPOINT_OTHER = "bt_settings_entrypoint_other";

    @Override
    public int getMetricsCategory() {
        return SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY;
@@ -71,15 +79,16 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
        super.onAttach(context);
        String callingAppPackageName =
                ((SettingsActivity) getActivity()).getInitialCallingPackage();
        String action = getIntent() != null ? getIntent().getAction() : "";
        if (DEBUG) {
        Intent intent = getIntent();
        String action = intent != null ? intent.getAction() : "";

        Log.d(
                TAG,
                "onAttach() calling package name is : "
                        + callingAppPackageName
                        + ", action : "
                        + action);
        }

        if (BluetoothUtils.isAudioSharingUIAvailable(context)) {
            use(AudioSharingDevicePreferenceController.class).init(this);
        }
@@ -100,16 +109,51 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
                provider.sendActivityIfAvailable(category);
            }
        }

        logPageEntrypoint(context, callingAppPackageName, intent);
    }

    @VisibleForTesting
    boolean isAlwaysDiscoverable(String callingAppPackageName, String action) {
        return TextUtils.equals(SLICE_ACTION, action)
        return TextUtils.equals(SETTINGS_SEARCH_ACTION, action)
                ? false
                : TextUtils.equals(Utils.SETTINGS_PACKAGE_NAME, callingAppPackageName)
                        || TextUtils.equals(Utils.SYSTEMUI_PACKAGE_NAME, callingAppPackageName);
    }

    private void logPageEntrypoint(Context context, String callingAppPackageName, Intent intent) {
        String action = intent != null ? intent.getAction() : "";
        if (TextUtils.equals(Utils.SYSTEMUI_PACKAGE_NAME, callingAppPackageName)) {
            mMetricsFeatureProvider.action(
                    context, SettingsEnums.SETTINGS_CONNECTED_DEVICES_ENTRYPOINT, ENTRYPOINT_SYSUI);
        } else if (TextUtils.equals(Utils.SETTINGS_PACKAGE_NAME, callingAppPackageName)
                && TextUtils.equals(Intent.ACTION_MAIN, action)) {
            String sourceCategory =
                    intent != null
                            ? Integer.toString(
                                    getIntent()
                                            .getIntExtra(
                                                    MetricsFeatureProvider
                                                            .EXTRA_SOURCE_METRICS_CATEGORY,
                                                    SettingsEnums.PAGE_UNKNOWN))
                            : "";
            mMetricsFeatureProvider.action(
                    context,
                    SettingsEnums.SETTINGS_CONNECTED_DEVICES_ENTRYPOINT,
                    ENTRYPOINT_SETTINGS + "_" + sourceCategory);
        } else if (TextUtils.equals(Utils.SETTINGS_PACKAGE_NAME, callingAppPackageName)
                && TextUtils.equals(SETTINGS_SEARCH_ACTION, action)) {
            mMetricsFeatureProvider.action(
                    context,
                    SettingsEnums.SETTINGS_CONNECTED_DEVICES_ENTRYPOINT,
                    ENTRYPOINT_SETTINGS_SEARCH);

        } else {
            mMetricsFeatureProvider.action(
                    context, SettingsEnums.SETTINGS_CONNECTED_DEVICES_ENTRYPOINT, ENTRYPOINT_OTHER);
        }
    }

    /** For Search. */
    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.connected_devices);