Move LauncherRestoreEventLogger to dagger

Helps us to delete ResourceBasedOverride class.
Delete "launcher_restore_event_logger_class" resource from config.

Bug: 361850561
Test: Presubmit
Flag: EXEMPT dagger
Change-Id: Ia11162979f016513bd09e06796346d29699b2efd
This commit is contained in:
Anushree Ganjam
2025-04-24 00:49:00 +00:00
parent b92b8847d0
commit 06bc3f5301
7 changed files with 29 additions and 18 deletions

View File

@@ -16,8 +16,10 @@
package com.android.launcher3.dagger
import com.android.launcher3.backuprestore.LauncherRestoreEventLogger
import com.android.launcher3.model.ModelDelegate
import com.android.launcher3.model.QuickstepModelDelegate
import com.android.quickstep.LauncherRestoreEventLoggerImpl
import dagger.Binds
import dagger.Module
@@ -29,4 +31,9 @@ import dagger.Module
abstract class AppModule {
@Binds abstract fun bindModelDelegate(impl: QuickstepModelDelegate): ModelDelegate
@Binds
abstract fun bindRestoreEventLogger(
impl: LauncherRestoreEventLoggerImpl
): LauncherRestoreEventLogger
}

View File

@@ -27,7 +27,6 @@
<string name="taskbar_model_callbacks_factory_class" translatable="false">com.android.launcher3.taskbar.TaskbarModelCallbacksFactory</string>
<string name="taskbar_view_callbacks_factory_class" translatable="false">com.android.launcher3.taskbar.TaskbarViewCallbacksFactory</string>
<string name="taskbar_overlay_context_factory_class" translatable="false">com.android.launcher3.taskbar.overlay.TaskbarOverlayContextFactory</string>
<string name="launcher_restore_event_logger_class" translatable="false">com.android.quickstep.LauncherRestoreEventLoggerImpl</string>
<string name="taskbar_edu_tooltip_controller_class" translatable="false">com.android.launcher3.taskbar.TaskbarEduTooltipController</string>
<string name="nav_handle_long_press_handler_class" translatable="false"></string>

View File

@@ -9,13 +9,17 @@ import androidx.annotation.VisibleForTesting
import com.android.launcher3.Flags.enableLauncherBrMetricsFixed
import com.android.launcher3.LauncherSettings.Favorites
import com.android.launcher3.backuprestore.LauncherRestoreEventLogger
import com.android.launcher3.dagger.ApplicationContext
import javax.inject.Inject
/**
* Concrete implementation for wrapper to log Restore event metrics for both success and failure to
* restore Launcher workspace from a backup. This implementation accesses SystemApis so is only
* available to QuickStep/NexusLauncher.
*/
class LauncherRestoreEventLoggerImpl(val context: Context) : LauncherRestoreEventLogger() {
class LauncherRestoreEventLoggerImpl
@Inject
constructor(@ApplicationContext private val context: Context) : LauncherRestoreEventLogger() {
companion object {
const val TAG = "LauncherRestoreEventLoggerImpl"
@@ -43,7 +47,7 @@ class LauncherRestoreEventLoggerImpl(val context: Context) : LauncherRestoreEven
override fun logLauncherItemsRestoreFailed(
@BackupRestoreDataType dataType: String,
count: Int,
@BackupRestoreError error: String?
@BackupRestoreError error: String?,
) {
if (enableLauncherBrMetricsFixed()) {
restoreEventLogger.logItemsRestoreFailed(dataType, count, error)
@@ -93,7 +97,7 @@ class LauncherRestoreEventLoggerImpl(val context: Context) : LauncherRestoreEven
*/
override fun logSingleFavoritesItemRestoreFailed(
favoritesId: Int,
@BackupRestoreError error: String?
@BackupRestoreError error: String?,
) {
if (enableLauncherBrMetricsFixed()) {
restoreEventLogger.logItemsRestoreFailed(favoritesIdToDataType(favoritesId), 1, error)
@@ -110,13 +114,13 @@ class LauncherRestoreEventLoggerImpl(val context: Context) : LauncherRestoreEven
override fun logFavoritesItemsRestoreFailed(
favoritesId: Int,
count: Int,
@BackupRestoreError error: String?
@BackupRestoreError error: String?,
) {
if (enableLauncherBrMetricsFixed()) {
restoreEventLogger.logItemsRestoreFailed(
favoritesIdToDataType(favoritesId),
count,
error
error,
)
}
}

View File

@@ -68,7 +68,6 @@
<string name="taskbar_model_callbacks_factory_class" translatable="false"></string>
<string name="taskbar_view_callbacks_factory_class" translatable="false"></string>
<string name="taskbar_overlay_context_factory_class" translatable="false"></string>
<string name="launcher_restore_event_logger_class" translatable="false"></string>
<string name="taskbar_edu_tooltip_controller_class" translatable="false"></string>
<!-- Default packages -->

View File

@@ -3,14 +3,14 @@ package com.android.launcher3.backuprestore
import android.content.Context
import androidx.annotation.StringDef
import com.android.launcher3.LauncherSettings.Favorites
import com.android.launcher3.R
import com.android.launcher3.util.ResourceBasedOverride
import com.android.launcher3.dagger.LauncherComponentProvider
import javax.inject.Inject
/**
* Wrapper for logging Restore event metrics for both success and failure to restore the Launcher
* workspace from a backup.
*/
open class LauncherRestoreEventLogger : ResourceBasedOverride {
open class LauncherRestoreEventLogger @Inject constructor() {
/** Enumeration of potential errors returned to calls of pause/resume app updates. */
@Retention(AnnotationRetention.SOURCE)
@@ -68,12 +68,8 @@ open class LauncherRestoreEventLogger : ResourceBasedOverride {
companion object {
const val TAG = "LauncherRestoreEventLogger"
fun newInstance(context: Context?): LauncherRestoreEventLogger {
return ResourceBasedOverride.Overrides.getObject(
LauncherRestoreEventLogger::class.java,
context,
R.string.launcher_restore_event_logger_class,
)
fun newInstance(context: Context): LauncherRestoreEventLogger {
return LauncherComponentProvider.get(context).launcherRestoreEventLogger
}
}

View File

@@ -24,6 +24,7 @@ import com.android.launcher3.InvariantDeviceProfile;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherPrefs;
import com.android.launcher3.RemoveAnimationSettingsTracker;
import com.android.launcher3.backuprestore.LauncherRestoreEventLogger;
import com.android.launcher3.folder.FolderNameSuggestionLoader;
import com.android.launcher3.graphics.GridCustomizationsProxy;
import com.android.launcher3.graphics.ThemeManager;
@@ -89,6 +90,8 @@ public interface LauncherBaseAppComponent {
IconPool getIconPool();
RemoveAnimationSettingsTracker getRemoveAnimationSettingsTracker();
LauncherAppState getLauncherAppState();
LauncherRestoreEventLogger getLauncherRestoreEventLogger();
GridCustomizationsProxy getGridCustomizationsProxy();
FolderNameSuggestionLoader getFolderNameSuggestionLoader();
LoaderCursorFactory getLoaderCursorFactory();

View File

@@ -171,6 +171,7 @@ public class LoaderTask implements Runnable {
private boolean mItemsDeleted = false;
private String mDbName;
private final Provider<FolderNameProvider> mFolderNameProviderFactory;
private final Provider<LauncherRestoreEventLogger> mRestoreEventLoggerProvider;
@AssistedInject
LoaderTask(
@@ -187,7 +188,8 @@ public class LoaderTask implements Runnable {
Provider<FolderNameProvider> folderNameProviderFactory,
@Named("SAFE_MODE") boolean isSafeModeEnabled,
@Assisted @NonNull BaseLauncherBinder launcherBinder,
@Assisted UserManagerState userManagerState) {
@Assisted UserManagerState userManagerState,
Provider<LauncherRestoreEventLogger> restoreEventLoggerFactory) {
mContext = context;
mIDP = idp;
mModel = model;
@@ -206,6 +208,7 @@ public class LoaderTask implements Runnable {
mUserManagerState = userManagerState;
mInstallingPkgsCached = null;
mFolderNameProviderFactory = folderNameProviderFactory;
mRestoreEventLoggerProvider = restoreEventLoggerFactory;
}
protected synchronized void waitForIdle() {
@@ -272,7 +275,7 @@ public class LoaderTask implements Runnable {
LauncherPrefs.get(mContext).get(IS_FIRST_LOAD_AFTER_RESTORE);
LauncherRestoreEventLogger restoreEventLogger = null;
if (enableLauncherBrMetricsFixed()) {
restoreEventLogger = LauncherRestoreEventLogger.Companion.newInstance(mContext);
restoreEventLogger = mRestoreEventLoggerProvider.get();
}
try (LauncherModel.LoaderTransaction transaction = mModel.beginLoader(this)) {
List<CacheableShortcutInfo> allShortcuts = new ArrayList<>();