diff --git a/quickstep/src/com/android/quickstep/dagger/QuickstepBaseAppComponent.java b/quickstep/src/com/android/quickstep/dagger/QuickstepBaseAppComponent.java index 335161b24c..e82d9fcd1b 100644 --- a/quickstep/src/com/android/quickstep/dagger/QuickstepBaseAppComponent.java +++ b/quickstep/src/com/android/quickstep/dagger/QuickstepBaseAppComponent.java @@ -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(); diff --git a/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java b/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java index 995635fa6c..dd721e16f6 100644 --- a/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java +++ b/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java @@ -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 INSTANCE = - new DaggerSingletonObject<>(QuickstepBaseAppComponent::getSettingsChangeLogger); + public static MainThreadInitializedObject INSTANCE = + new MainThreadInitializedObject<>(SettingsChangeLogger::new); private static final String TAG = "SettingsChangeLogger"; private static final String BOOLEAN_PREF = "SwitchPreference"; @@ -92,31 +85,26 @@ 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); + DisplayController.INSTANCE.get(context).addChangeListener(this); + mNavMode = DisplayController.getNavigationMode(context); - getPrefs(context).registerOnSharedPreferenceChangeListener(this); - getDevicePrefs(context).registerOnSharedPreferenceChangeListener(this); + getPrefs(context).registerOnSharedPreferenceChangeListener(this); + getDevicePrefs(context).registerOnSharedPreferenceChangeListener(this); - SettingsCache settingsCache = SettingsCache.INSTANCE.get(context); - settingsCache.register(NOTIFICATION_BADGING_URI, - this::onNotificationDotsChanged); - onNotificationDotsChanged(settingsCache.getValue(NOTIFICATION_BADGING_URI)); - tracker.addCloseable(this); - }); + SettingsCache settingsCache = SettingsCache.INSTANCE.get(context); + settingsCache.register(NOTIFICATION_BADGING_URI, + this::onNotificationDotsChanged); + onNotificationDotsChanged(settingsCache.getValue(NOTIFICATION_BADGING_URI)); } private static ArrayMap 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 diff --git a/quickstep/tests/multivalentTests/src/com/android/quickstep/logging/SettingsChangeLoggerTest.kt b/quickstep/tests/multivalentTests/src/com/android/quickstep/logging/SettingsChangeLoggerTest.kt index 0a607744d0..7c48ea489c 100644 --- a/quickstep/tests/multivalentTests/src/com/android/quickstep/logging/SettingsChangeLoggerTest.kt +++ b/quickstep/tests/multivalentTests/src/com/android/quickstep/logging/SettingsChangeLoggerTest.kt @@ -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 - @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