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

Commit 1a5de694 authored by Fan Zhang's avatar Fan Zhang Committed by Android (Google) Code Review
Browse files

Merge "Fix a NPE when rotating dialog created by DialogCreatable."

parents 32fd735a 4fe7c085
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import android.widget.Button;

import com.android.settings.applications.LayoutPreference;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.core.instrumentation.Instrumentable;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.HelpUtils;

@@ -626,6 +627,9 @@ public abstract class SettingsPreferenceFragment extends InstrumentedFragment

        @Override
        public int getMetricsCategory() {
            if (mDialogCreatable == null) {
                return Instrumentable.METRICS_CATEGORY_UNKNOWN;
            }
            final int metricsCategory = mDialogCreatable.getDialogMetricsCategory(mDialogId);
            if (metricsCategory <= 0) {
                throw new IllegalStateException("Dialog must provide a metrics category");
+2 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.settings.core.instrumentation;

public interface Instrumentable {

    int METRICS_CATEGORY_UNKNOWN = 0;

    /**
     * Instrumented name for a view as defined in
     * {@link com.android.internal.logging.MetricsProto.MetricsEvent}.
+4 −2
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import com.android.settings.core.lifecycle.events.OnPause;
import com.android.settings.core.lifecycle.events.OnResume;
import com.android.settings.overlay.FeatureFactory;

import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;

/**
 * Logs visibility change of a fragment.
 */
@@ -50,14 +52,14 @@ public class VisibilityLoggerMixin implements LifecycleObserver, OnResume, OnPau

    @Override
    public void onResume() {
        if (mMetricsFeature != null) {
        if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
            mMetricsFeature.visible(null /* context */, mMetricsCategory);
        }
    }

    @Override
    public void onPause() {
        if (mMetricsFeature != null) {
        if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
            mMetricsFeature.hidden(null /* context */, mMetricsCategory);
        }
    }
+12 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;

import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.eq;
@@ -76,6 +77,17 @@ public class VisibilityLoggerMixinTest {
                .hidden(any(Context.class), anyInt());
    }

    @Test
    public void shouldNotLogIfMetricsCategoryIsUnknown() {
        mMixin = new VisibilityLoggerMixin(METRICS_CATEGORY_UNKNOWN, mMetricsFeature);

        mMixin.onResume();
        mMixin.onPause();

        verify(mMetricsFeature, never())
                .hidden(any(Context.class), anyInt());
    }

    private final class TestInstrumentable implements Instrumentable {

        public static final int TEST_METRIC = 12345;