Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2075e39c authored by Fengjiang Li's avatar Fengjiang Li
Browse files

[Dagger] Make AsyncClockEventDelegate provided by DaggerSingletonObject

Test: presubmit
Bug: 361850561
Flag: NONE - dagger
Change-Id: I53791218e0ff1e5d61cefee3f32a4c49882777cc
parent 4d819d9d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ 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;

/**
 * Launcher Quickstep base component for Dagger injection.
@@ -33,4 +34,6 @@ public interface QuickstepBaseAppComponent extends LauncherBaseAppComponent {
    SettingsChangeLogger getSettingsChangeLogger();

    WellbeingModel getWellbeingModel();

    AsyncClockEventDelegate getAsyncClockEventDelegate();
}
+15 −3
Original line number Diff line number Diff line
@@ -32,23 +32,33 @@ import android.widget.TextClock.ClockEventDelegate;

import androidx.annotation.WorkerThread;

import com.android.launcher3.dagger.ApplicationContext;
import com.android.launcher3.dagger.LauncherAppSingleton;
import com.android.launcher3.dagger.LauncherBaseAppComponent;
import com.android.launcher3.util.DaggerSingletonObject;
import com.android.launcher3.util.DaggerSingletonTracker;
import com.android.launcher3.util.ExecutorUtil;
import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.launcher3.util.SafeCloseable;
import com.android.launcher3.util.SettingsCache;
import com.android.launcher3.util.SettingsCache.OnChangeListener;
import com.android.launcher3.util.SimpleBroadcastReceiver;
import com.android.quickstep.dagger.QuickstepBaseAppComponent;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

/**
 * Extension of {@link ClockEventDelegate} to support async event registration
 */
@LauncherAppSingleton
public class AsyncClockEventDelegate extends ClockEventDelegate
        implements OnChangeListener, SafeCloseable {

    public static final MainThreadInitializedObject<AsyncClockEventDelegate> INSTANCE =
            new MainThreadInitializedObject<>(AsyncClockEventDelegate::new);
    public static final DaggerSingletonObject<AsyncClockEventDelegate> INSTANCE =
            new DaggerSingletonObject<>(QuickstepBaseAppComponent::getAsyncClockEventDelegate);

    private final Context mContext;
    private final SimpleBroadcastReceiver mReceiver =
@@ -61,10 +71,12 @@ public class AsyncClockEventDelegate extends ClockEventDelegate
    private boolean mFormatRegistered = false;
    private boolean mDestroyed = false;

    private AsyncClockEventDelegate(Context context) {
    @Inject
    AsyncClockEventDelegate(@ApplicationContext Context context, DaggerSingletonTracker tracker) {
        super(context);
        mContext = context;
        mReceiver.register(mContext, ACTION_TIME_CHANGED, ACTION_TIMEZONE_CHANGED);
        ExecutorUtil.executeSyncOnMainOrFail(() -> tracker.addCloseable(this));
    }

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ public class SettingsCache extends ContentObserver implements SafeCloseable {
            new DaggerSingletonObject<>(LauncherBaseAppComponent::getSettingsCache);

    @Inject
    SettingsCache(@ApplicationContext final Context context, DaggerSingletonTracker tracker) {
    SettingsCache(@ApplicationContext Context context, DaggerSingletonTracker tracker) {
        super(new Handler(Looper.getMainLooper()));
        mResolver = context.getContentResolver();
        ExecutorUtil.executeSyncOnMainOrFail(() -> tracker.addCloseable(this));