Merge "Moving SettingsChangeLogger back to MainThreadInitializedObject" into main

This commit is contained in:
Treehugger Robot
2024-10-17 18:33:04 +00:00
committed by Android (Google) Code Review
3 changed files with 17 additions and 35 deletions
@@ -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();
@@ -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,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<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
@@ -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