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

Commit 5572968c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Moving SettingsChangeLogger back to MainThreadInitializedObject" into main

parents 134bd121 3c873420
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.quickstep.dagger;
import com.android.launcher3.dagger.LauncherAppComponent;
import com.android.launcher3.dagger.LauncherBaseAppComponent;
import com.android.launcher3.model.WellbeingModel;
import com.android.quickstep.logging.SettingsChangeLogger;
import com.android.quickstep.util.AsyncClockEventDelegate;
import com.android.quickstep.util.ContextualSearchHapticManager;

@@ -32,7 +31,6 @@ import com.android.quickstep.util.ContextualSearchHapticManager;
 * See {@link LauncherAppComponent} for the one actually used.
 */
public interface QuickstepBaseAppComponent extends LauncherBaseAppComponent {
    SettingsChangeLogger getSettingsChangeLogger();

    WellbeingModel getWellbeingModel();

+14 −28
Original line number Diff line number Diff line
@@ -44,20 +44,16 @@ import androidx.annotation.VisibleForTesting;
import com.android.launcher3.LauncherPrefs;
import com.android.launcher3.R;
import com.android.launcher3.dagger.ApplicationContext;
import com.android.launcher3.dagger.LauncherAppSingleton;
import com.android.launcher3.logging.InstanceId;
import com.android.launcher3.logging.StatsLogManager;
import com.android.launcher3.logging.StatsLogManager.StatsLogger;
import com.android.launcher3.model.DeviceGridState;
import com.android.launcher3.util.DaggerSingletonObject;
import com.android.launcher3.util.DaggerSingletonTracker;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.DisplayController.Info;
import com.android.launcher3.util.ExecutorUtil;
import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.util.NavigationMode;
import com.android.launcher3.util.SafeCloseable;
import com.android.launcher3.util.SettingsCache;
import com.android.quickstep.dagger.QuickstepBaseAppComponent;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -65,12 +61,9 @@ import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.util.Optional;

import javax.inject.Inject;

/**
 * Utility class to log launcher settings changes
 */
@LauncherAppSingleton
public class SettingsChangeLogger implements
        DisplayController.DisplayInfoChangeListener, OnSharedPreferenceChangeListener,
        SafeCloseable {
@@ -78,8 +71,8 @@ public class SettingsChangeLogger implements
    /**
     * Singleton instance
     */
    public static DaggerSingletonObject<SettingsChangeLogger> INSTANCE =
            new DaggerSingletonObject<>(QuickstepBaseAppComponent::getSettingsChangeLogger);
    public static MainThreadInitializedObject<SettingsChangeLogger> INSTANCE =
            new MainThreadInitializedObject<>(SettingsChangeLogger::new);

    private static final String TAG = "SettingsChangeLogger";
    private static final String BOOLEAN_PREF = "SwitchPreference";
@@ -92,19 +85,16 @@ public class SettingsChangeLogger implements
    private StatsLogManager.LauncherEvent mNotificationDotsEvent;
    private StatsLogManager.LauncherEvent mHomeScreenSuggestionEvent;

    @Inject
    SettingsChangeLogger(@ApplicationContext Context context, DaggerSingletonTracker tracker) {
        this(context, StatsLogManager.newInstance(context), tracker);
    SettingsChangeLogger(@ApplicationContext Context context) {
        this(context, StatsLogManager.newInstance(context));
    }

    @VisibleForTesting
    SettingsChangeLogger(Context context, StatsLogManager statsLogManager,
            DaggerSingletonTracker tracker) {
    SettingsChangeLogger(Context context, StatsLogManager statsLogManager) {
        mContext = context;
        mStatsLogManager = statsLogManager;
        mLoggablePrefs = loadPrefKeys(context);

        ExecutorUtil.executeSyncOnMainOrFail(() -> {
        DisplayController.INSTANCE.get(context).addChangeListener(this);
        mNavMode = DisplayController.getNavigationMode(context);

@@ -115,8 +105,6 @@ public class SettingsChangeLogger implements
        settingsCache.register(NOTIFICATION_BADGING_URI,
                this::onNotificationDotsChanged);
        onNotificationDotsChanged(settingsCache.getValue(NOTIFICATION_BADGING_URI));
            tracker.addCloseable(this);
        });
    }

    private static ArrayMap<String, LoggablePref> loadPrefKeys(Context context) {
@@ -223,8 +211,6 @@ public class SettingsChangeLogger implements
    public void close() {
        getPrefs(mContext).unregisterOnSharedPreferenceChangeListener(this);
        getDevicePrefs(mContext).unregisterOnSharedPreferenceChangeListener(this);
        SettingsCache settingsCache = SettingsCache.INSTANCE.get(mContext);
        settingsCache.unregister(NOTIFICATION_BADGING_URI, this::onNotificationDotsChanged);
    }

    @VisibleForTesting
+3 −5
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVI
import com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NOTIFICATION_DOT_ENABLED
import com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_THEMED_ICON_DISABLED
import com.android.launcher3.states.RotationHelper.ALLOW_ROTATION_PREFERENCE_KEY
import com.android.launcher3.util.DaggerSingletonTracker
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Before
@@ -63,7 +62,6 @@ class SettingsChangeLoggerTest {
    @Mock private lateinit var mMockLogger: StatsLogManager.StatsLogger

    @Captor private lateinit var mEventCaptor: ArgumentCaptor<StatsLogManager.EventEnum>
    @Mock private lateinit var mTracker: DaggerSingletonTracker

    private var mDefaultThemedIcons = false
    private var mDefaultAllowRotation = false
@@ -81,7 +79,7 @@ class SettingsChangeLoggerTest {
        // To match the default value of ALLOW_ROTATION
        LauncherPrefs.get(mContext).put(item = ALLOW_ROTATION, value = false)

        mSystemUnderTest = SettingsChangeLogger(mContext, mStatsLogManager, mTracker)
        mSystemUnderTest = SettingsChangeLogger(mContext, mStatsLogManager)
    }

    @After
@@ -92,7 +90,7 @@ class SettingsChangeLoggerTest {

    @Test
    fun loggingPrefs_correctDefaultValue() {
        val systemUnderTest = SettingsChangeLogger(mContext, mStatsLogManager, mTracker)
        val systemUnderTest = SettingsChangeLogger(mContext, mStatsLogManager)

        assertThat(systemUnderTest.loggingPrefs[ALLOW_ROTATION_PREFERENCE_KEY]!!.defaultValue)
            .isFalse()
@@ -119,7 +117,7 @@ class SettingsChangeLoggerTest {
        LauncherPrefs.get(mContext).put(item = ALLOW_ROTATION, value = true)

        // This a new object so the values of mLoggablePrefs will be different
        SettingsChangeLogger(mContext, mStatsLogManager, mTracker).logSnapshot(mInstanceId)
        SettingsChangeLogger(mContext, mStatsLogManager).logSnapshot(mInstanceId)

        verify(mMockLogger, atLeastOnce()).log(mEventCaptor.capture())
        val capturedEvents = mEventCaptor.allValues