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

Commit 7a98912c authored by Fan Zhang's avatar Fan Zhang
Browse files

Update logPackageName() to use new MetricsLogger API

Bug: 38258793
Test: make RunSettingsRoboTests
Change-Id: Id08e5655bdaaf0cabd952b07278cd0daf7b59a3b
parent a0d327a5
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
@@ -145,12 +146,11 @@ public class SharedPreferencesLogger implements SharedPreferences {
        }
    }

    private void logPackageName(String key, String value) {
    @VisibleForTesting
    void logPackageName(String key, String value) {
        final String prefKey = mTag + "/" + key;
        mMetricsFeature.action(mContext, MetricsEvent.ACTION_SETTINGS_PREFERENCE_CHANGE,
        mMetricsFeature.action(mContext, MetricsEvent.ACTION_SETTINGS_PREFERENCE_CHANGE, value,
                Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME, prefKey));
        mMetricsFeature.action(mContext, MetricsEvent.ACTION_GENERIC_PACKAGE,
                prefKey + "|" + value);
    }

    private void safeLogValue(String key, String value) {
+25 −15
Original line number Diff line number Diff line
@@ -15,19 +15,6 @@
 */
package com.android.settings.core.instrumentation;

import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
        .FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
        .FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
        .FIELD_SETTINGS_PREFERENCE_CHANGE_NAME;

import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.argThat;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import android.content.Context;
import android.content.SharedPreferences;
import android.util.Pair;
@@ -47,6 +34,21 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;

import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
        .ACTION_SETTINGS_PREFERENCE_CHANGE;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
        .FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
        .FIELD_SETTINGS_PREFERENCE_CHANGE_LONG_VALUE;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent
        .FIELD_SETTINGS_PREFERENCE_CHANGE_NAME;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.argThat;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class SharedPreferenceLoggerTest {
@@ -135,13 +137,21 @@ public class SharedPreferenceLoggerTest {
                argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE, Float.class)));
    }

    @Test
    public void logPackage_shouldUseLogPackageApi() {
        mSharedPrefLogger.logPackageName("key", "com.android.settings");
        verify(mMetricsFeature).action(any(Context.class),
                eq(ACTION_SETTINGS_PREFERENCE_CHANGE),
                eq("com.android.settings"),
                any(Pair.class));
    }

    private ArgumentMatcher<Pair<Integer, Object>> pairMatches(int tag, Class clazz) {
        return pair -> pair.first == tag && Platform.isInstanceOfType(pair.second, clazz);
    }

    private ArgumentMatcher<Pair<Integer, Object>> pairMatches(int tag, boolean bool) {
        return pair ->
                pair.first == tag
        return pair -> pair.first == tag
                && Platform.isInstanceOfType(pair.second, Long.class)
                && pair.second.equals((bool ? 1L : 0L));
    }