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

Commit 8ed02e1b authored by Fan Zhang's avatar Fan Zhang
Browse files

EXTRA_SOURCE_METRICS_CATEGORY -> MetricsFeatureProvider

And add a getAttribution() method - this will be used by StatsLogWriter
to figure out attribution in the future.

Bug: 117860032
Test: robotests
Change-Id: I7ec09409a573a624a1d3120f50d2b5f3800c7bf3
parent ed50a5ac
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */
package com.android.settingslib.core.instrumentation;

import android.app.Activity;
import android.app.settings.SettingsEnums;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -30,6 +32,11 @@ import java.util.List;
 * FeatureProvider for metrics.
 */
public class MetricsFeatureProvider {
    /**
     * The metrics category constant for logging source when a setting fragment is opened.
     */
    public static final String EXTRA_SOURCE_METRICS_CATEGORY = ":settings:source_metrics";

    protected List<LogWriter> mLoggerWriters;

    public MetricsFeatureProvider() {
@@ -41,6 +48,25 @@ public class MetricsFeatureProvider {
        mLoggerWriters.add(new EventLogWriter());
    }

    /**
     * Returns the attribution id for specified activity. If no attribution is set, returns {@link
     * SettingsEnums#PAGE_UNKNOWN}.
     *
     * <p/> Attribution is a {@link SettingsEnums} page id that indicates where the specified
     * activity is launched from.
     */
    public int getAttribution(Activity activity) {
        if (activity == null) {
            return SettingsEnums.PAGE_UNKNOWN;
        }
        final Intent intent = activity.getIntent();
        if (intent == null) {
            return SettingsEnums.PAGE_UNKNOWN;
        }
        return intent.getIntExtra(EXTRA_SOURCE_METRICS_CATEGORY,
                SettingsEnums.PAGE_UNKNOWN);
    }

    public void visible(Context context, int source, int category) {
        for (LogWriter writer : mLoggerWriters) {
            writer.visible(context, source, category);
+2 −6
Original line number Diff line number Diff line
@@ -41,11 +41,6 @@ public class VisibilityLoggerMixin implements LifecycleObserver {
    private int mSourceMetricsCategory = MetricsProto.MetricsEvent.VIEW_UNKNOWN;
    private long mVisibleTimestamp;

    /**
     * The metrics category constant for logging source when a setting fragment is opened.
     */
    public static final String EXTRA_SOURCE_METRICS_CATEGORY = ":settings:source_metrics";

    private VisibilityLoggerMixin() {
        mMetricsCategory = METRICS_CATEGORY_UNKNOWN;
    }
@@ -82,7 +77,8 @@ public class VisibilityLoggerMixin implements LifecycleObserver {
        if (intent == null) {
            return;
        }
        mSourceMetricsCategory = intent.getIntExtra(EXTRA_SOURCE_METRICS_CATEGORY,
        mSourceMetricsCategory = intent.getIntExtra(
                MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY,
                MetricsProto.MetricsEvent.VIEW_UNKNOWN);
    }

+1 −1
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ public class VisibilityLoggerMixinTest {
    @Test
    public void shouldLogVisibleWithSource() {
        final Intent sourceIntent = new Intent()
                .putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY,
                .putExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY,
                        MetricsProto.MetricsEvent.SETTINGS_GESTURES);
        final Activity activity = mock(Activity.class);
        when(activity.getIntent()).thenReturn(sourceIntent);