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<>();