Merge "Move StatsLogManager to Dagger" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
77f22bf9cf
@@ -21,9 +21,7 @@
|
||||
<item>com.android.launcher3/com.android.quickstep.interaction.GestureSandboxActivity</item>
|
||||
</string-array>
|
||||
|
||||
<string name="stats_log_manager_class" translatable="false">com.android.quickstep.logging.StatsLogCompatManager</string>
|
||||
<string name="test_information_handler_class" translatable="false">com.android.quickstep.QuickstepTestInformationHandler</string>
|
||||
<string name="app_launch_tracker_class" translatable="false">com.android.launcher3.appprediction.PredictionAppTracker</string>
|
||||
<string name="main_process_initializer_class" translatable="false">com.android.quickstep.QuickstepProcessInitializer</string>
|
||||
<string name="secondary_display_quickstep_delegate_class" translatable="false">com.android.launcher3.secondarydisplay.SecondaryDisplayQuickstepDelegateImpl</string>
|
||||
<string name="taskbar_model_callbacks_factory_class" translatable="false">com.android.launcher3.taskbar.TaskbarModelCallbacksFactory</string>
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.android.launcher3.dagger
|
||||
|
||||
import com.android.launcher3.icons.LauncherIconProvider
|
||||
import com.android.launcher3.icons.LauncherIconProviderImpl
|
||||
import com.android.launcher3.logging.StatsLogManager.StatsLogManagerFactory
|
||||
import com.android.launcher3.uioverrides.QuickstepWidgetHolder.QuickstepWidgetHolderFactory
|
||||
import com.android.launcher3.uioverrides.SystemApiWrapper
|
||||
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapperImpl
|
||||
@@ -28,6 +29,7 @@ import com.android.launcher3.util.window.RefreshRateTracker
|
||||
import com.android.launcher3.util.window.WindowManagerProxy
|
||||
import com.android.launcher3.widget.LauncherWidgetHolder.WidgetHolderFactory
|
||||
import com.android.quickstep.InstantAppResolverImpl
|
||||
import com.android.quickstep.logging.StatsLogCompatManager.StatsLogCompatManagerFactory
|
||||
import com.android.quickstep.util.ChoreographerFrameRateTracker
|
||||
import com.android.quickstep.util.GestureExclusionManager
|
||||
import com.android.quickstep.util.SystemWindowManagerProxy
|
||||
@@ -44,6 +46,11 @@ abstract class WindowManagerProxyModule {
|
||||
|
||||
@Module
|
||||
abstract class ApiWrapperModule {
|
||||
@Binds
|
||||
abstract fun bindStatsLogManagerFactory(
|
||||
impl: StatsLogCompatManagerFactory
|
||||
): StatsLogManagerFactory
|
||||
|
||||
@Binds abstract fun bindApiWrapper(systemApiWrapper: SystemApiWrapper): ApiWrapper
|
||||
|
||||
@Binds
|
||||
|
||||
@@ -107,19 +107,10 @@ public class SettingsChangeLogger implements
|
||||
SettingsChangeLogger(@ApplicationContext Context context,
|
||||
DaggerSingletonTracker tracker,
|
||||
DisplayController displayController,
|
||||
SettingsCache settingsCache) {
|
||||
this(context, StatsLogManager.newInstance(context), tracker, displayController,
|
||||
settingsCache);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
SettingsChangeLogger(@ApplicationContext Context context,
|
||||
StatsLogManager statsLogManager,
|
||||
DaggerSingletonTracker tracker,
|
||||
DisplayController displayController,
|
||||
SettingsCache settingsCache) {
|
||||
SettingsCache settingsCache,
|
||||
StatsLogManager.StatsLogManagerFactory factory) {
|
||||
mContext = context;
|
||||
mStatsLogManager = statsLogManager;
|
||||
mStatsLogManager = factory.create(context);
|
||||
mLoggablePrefs = loadPrefKeys(context);
|
||||
|
||||
displayController.addChangeListener(this);
|
||||
|
||||
@@ -82,6 +82,8 @@ import java.util.Optional;
|
||||
import java.util.OptionalInt;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* This class calls StatsLog compile time generated methods.
|
||||
*
|
||||
@@ -121,10 +123,27 @@ public class StatsLogCompatManager extends StatsLogManager {
|
||||
public static final CopyOnWriteArrayList<StatsLogConsumer> LOGS_CONSUMER =
|
||||
new CopyOnWriteArrayList<>();
|
||||
|
||||
public StatsLogCompatManager(Context context) {
|
||||
private StatsLogCompatManager(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* This class is purely used to support dagger bindings to be overridden in launcher variants.
|
||||
* Very similar to {@link dagger.assisted.AssistedFactory}. But
|
||||
* {@link dagger.assisted.AssistedFactory} cannot be overridden and this makes dagger binding
|
||||
* difficult.
|
||||
*/
|
||||
public static class StatsLogCompatManagerFactory extends StatsLogManagerFactory {
|
||||
@Inject
|
||||
StatsLogCompatManagerFactory() {
|
||||
super();
|
||||
}
|
||||
|
||||
public StatsLogManager create(Context context) {
|
||||
return new StatsLogCompatManager(context);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected StatsLogger createLogger() {
|
||||
return new StatsCompatLogger(mContext, mActivityContext);
|
||||
|
||||
+6
-4
@@ -60,6 +60,8 @@ class SettingsChangeLoggerTest {
|
||||
|
||||
private lateinit var mSystemUnderTest: SettingsChangeLogger
|
||||
|
||||
@Mock private lateinit var mStatsLogFactory: StatsLogManager.StatsLogManagerFactory
|
||||
|
||||
@Mock private lateinit var mStatsLogManager: StatsLogManager
|
||||
|
||||
@Mock private lateinit var mMockLogger: StatsLogManager.StatsLogger
|
||||
@@ -78,7 +80,7 @@ class SettingsChangeLoggerTest {
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
|
||||
whenever(mStatsLogFactory.create(mContext)).doReturn(mStatsLogManager)
|
||||
whenever(mStatsLogManager.logger()).doReturn(mMockLogger)
|
||||
whenever(mStatsLogManager.logger().withInstanceId(any())).doReturn(mMockLogger)
|
||||
mDefaultThemedIcons = themeManager.isMonoThemeEnabled
|
||||
@@ -91,10 +93,10 @@ class SettingsChangeLoggerTest {
|
||||
mSystemUnderTest =
|
||||
SettingsChangeLogger(
|
||||
mContext,
|
||||
mStatsLogManager,
|
||||
mTracker,
|
||||
displayController,
|
||||
settingsCache,
|
||||
mStatsLogFactory,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -109,10 +111,10 @@ class SettingsChangeLoggerTest {
|
||||
val systemUnderTest =
|
||||
SettingsChangeLogger(
|
||||
mContext,
|
||||
mStatsLogManager,
|
||||
mTracker,
|
||||
displayController,
|
||||
settingsCache,
|
||||
mStatsLogFactory,
|
||||
)
|
||||
|
||||
assertThat(systemUnderTest.loggingPrefs[ALLOW_ROTATION_PREFERENCE_KEY]!!.defaultValue)
|
||||
@@ -139,7 +141,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, displayController, settingsCache)
|
||||
SettingsChangeLogger(mContext, mTracker, displayController, settingsCache, mStatsLogFactory)
|
||||
.logSnapshot(mInstanceId)
|
||||
|
||||
verify(mMockLogger, atLeastOnce()).log(mEventCaptor.capture())
|
||||
|
||||
@@ -62,9 +62,7 @@
|
||||
|
||||
<!-- Various classes overriden by projects/build flavors. -->
|
||||
<string name="folder_name_provider_class" translatable="false"></string>
|
||||
<string name="stats_log_manager_class" translatable="false"></string>
|
||||
<string name="main_process_initializer_class" translatable="false"></string>
|
||||
<string name="app_launch_tracker_class" translatable="false"></string>
|
||||
<string name="test_information_handler_class" translatable="false"></string>
|
||||
<string name="secondary_display_quickstep_delegate_class" translatable="false"></string>
|
||||
<string name="taskbar_search_session_controller_class" translatable="false"></string>
|
||||
|
||||
@@ -27,6 +27,8 @@ import com.android.launcher3.RemoveAnimationSettingsTracker;
|
||||
import com.android.launcher3.graphics.GridCustomizationsProxy;
|
||||
import com.android.launcher3.graphics.ThemeManager;
|
||||
import com.android.launcher3.icons.LauncherIcons.IconPool;
|
||||
import com.android.launcher3.logging.DumpManager;
|
||||
import com.android.launcher3.logging.StatsLogManager;
|
||||
import com.android.launcher3.model.ItemInstallQueue;
|
||||
import com.android.launcher3.model.LoaderCursor.LoaderCursorFactory;
|
||||
import com.android.launcher3.pm.InstallSessionHelper;
|
||||
@@ -34,7 +36,6 @@ import com.android.launcher3.pm.UserCache;
|
||||
import com.android.launcher3.util.ApiWrapper;
|
||||
import com.android.launcher3.util.DaggerSingletonTracker;
|
||||
import com.android.launcher3.util.DisplayController;
|
||||
import com.android.launcher3.logging.DumpManager;
|
||||
import com.android.launcher3.util.DynamicResource;
|
||||
import com.android.launcher3.util.InstantAppResolver;
|
||||
import com.android.launcher3.util.LockedUserState;
|
||||
@@ -93,8 +94,8 @@ public interface LauncherBaseAppComponent {
|
||||
WidgetHolderFactory getWidgetHolderFactory();
|
||||
RefreshRateTracker getFrameRateProvider();
|
||||
InstantAppResolver getInstantAppResolver();
|
||||
|
||||
DumpManager getDumpManager();
|
||||
StatsLogManager.StatsLogManagerFactory getStatsLogManagerFactory();
|
||||
|
||||
/** Builder for LauncherBaseAppComponent. */
|
||||
interface Builder {
|
||||
|
||||
@@ -28,14 +28,16 @@ import androidx.annotation.Nullable;
|
||||
import androidx.slice.SliceItem;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.dagger.LauncherComponentProvider;
|
||||
import com.android.launcher3.logger.LauncherAtom;
|
||||
import com.android.launcher3.logger.LauncherAtom.ContainerInfo;
|
||||
import com.android.launcher3.logger.LauncherAtom.FromState;
|
||||
import com.android.launcher3.logger.LauncherAtom.ToState;
|
||||
import com.android.launcher3.model.data.ItemInfo;
|
||||
import com.android.launcher3.util.ResourceBasedOverride;
|
||||
import com.android.launcher3.views.ActivityContext;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* Handles the user event logging in R+.
|
||||
*
|
||||
@@ -45,7 +47,7 @@ import com.android.launcher3.views.ActivityContext;
|
||||
* Actual call happens only for Launcher variant that implements QuickStep.
|
||||
* </pre>
|
||||
*/
|
||||
public class StatsLogManager implements ResourceBasedOverride {
|
||||
public class StatsLogManager {
|
||||
|
||||
public static final int LAUNCHER_STATE_UNSPECIFIED = 0;
|
||||
public static final int LAUNCHER_STATE_BACKGROUND = 1;
|
||||
@@ -62,11 +64,28 @@ public class StatsLogManager implements ResourceBasedOverride {
|
||||
private KeyboardStateManager mKeyboardStateManager;
|
||||
private InstanceId mInstanceId;
|
||||
|
||||
public StatsLogManager(@NonNull Context context) {
|
||||
|
||||
protected StatsLogManager(@NonNull Context context) {
|
||||
mContext = context;
|
||||
mActivityContext = ActivityContext.lookupContextNoThrow(context);
|
||||
}
|
||||
|
||||
/**
|
||||
* This class is purely used to support dagger bindings to be overridden in launcher variants.
|
||||
* Very similar to {@link dagger.assisted.AssistedFactory}. But
|
||||
* {@link dagger.assisted.AssistedFactory} cannot be overridden and this makes dagger binding
|
||||
* difficult.
|
||||
*/
|
||||
public static class StatsLogManagerFactory {
|
||||
@Inject
|
||||
public StatsLogManagerFactory() {
|
||||
}
|
||||
|
||||
public StatsLogManager create(Context context) {
|
||||
return new StatsLogManager(context);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns event enum based on the two state transition information when swipe
|
||||
* gesture happens(to be removed during UserEventDispatcher cleanup).
|
||||
@@ -1356,7 +1375,6 @@ public class StatsLogManager implements ResourceBasedOverride {
|
||||
* Creates a new instance of {@link StatsLogManager} based on provided context.
|
||||
*/
|
||||
public static StatsLogManager newInstance(Context context) {
|
||||
return Overrides.getObject(
|
||||
StatsLogManager.class, context, R.string.stats_log_manager_class);
|
||||
return LauncherComponentProvider.get(context).getStatsLogManagerFactory().create(context);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user