diff --git a/quickstep/dagger/com/android/launcher3/dagger/AppModule.kt b/quickstep/dagger/com/android/launcher3/dagger/AppModule.kt index d88fc94d5b..5521c06a5a 100644 --- a/quickstep/dagger/com/android/launcher3/dagger/AppModule.kt +++ b/quickstep/dagger/com/android/launcher3/dagger/AppModule.kt @@ -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 } diff --git a/quickstep/res/values/config.xml b/quickstep/res/values/config.xml index b442264d46..80e1ac7300 100644 --- a/quickstep/res/values/config.xml +++ b/quickstep/res/values/config.xml @@ -27,7 +27,6 @@ com.android.launcher3.taskbar.TaskbarModelCallbacksFactory com.android.launcher3.taskbar.TaskbarViewCallbacksFactory com.android.launcher3.taskbar.overlay.TaskbarOverlayContextFactory - com.android.quickstep.LauncherRestoreEventLoggerImpl com.android.launcher3.taskbar.TaskbarEduTooltipController diff --git a/quickstep/src/com/android/quickstep/LauncherRestoreEventLoggerImpl.kt b/quickstep/src/com/android/quickstep/LauncherRestoreEventLoggerImpl.kt index 7d22c527d1..a27c628208 100644 --- a/quickstep/src/com/android/quickstep/LauncherRestoreEventLoggerImpl.kt +++ b/quickstep/src/com/android/quickstep/LauncherRestoreEventLoggerImpl.kt @@ -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, ) } } diff --git a/res/values/config.xml b/res/values/config.xml index a012d353f5..b98d0c1c0a 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -68,7 +68,6 @@ - diff --git a/src/com/android/launcher3/backuprestore/LauncherRestoreEventLogger.kt b/src/com/android/launcher3/backuprestore/LauncherRestoreEventLogger.kt index 1502811099..df2e61fd04 100644 --- a/src/com/android/launcher3/backuprestore/LauncherRestoreEventLogger.kt +++ b/src/com/android/launcher3/backuprestore/LauncherRestoreEventLogger.kt @@ -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 } } diff --git a/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java b/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java index 45d339b474..ad59b54145 100644 --- a/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java +++ b/src/com/android/launcher3/dagger/LauncherBaseAppComponent.java @@ -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(); diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java index 27d242cc57..5067a8fbbe 100644 --- a/src/com/android/launcher3/model/LoaderTask.java +++ b/src/com/android/launcher3/model/LoaderTask.java @@ -171,6 +171,7 @@ public class LoaderTask implements Runnable { private boolean mItemsDeleted = false; private String mDbName; private final Provider mFolderNameProviderFactory; + private final Provider mRestoreEventLoggerProvider; @AssistedInject LoaderTask( @@ -187,7 +188,8 @@ public class LoaderTask implements Runnable { Provider folderNameProviderFactory, @Named("SAFE_MODE") boolean isSafeModeEnabled, @Assisted @NonNull BaseLauncherBinder launcherBinder, - @Assisted UserManagerState userManagerState) { + @Assisted UserManagerState userManagerState, + Provider 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 allShortcuts = new ArrayList<>();