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

Commit 49df2966 authored by Fengjiang Li's avatar Fengjiang Li
Browse files

[Dagger] Make ScreenOnTracker provided by DaggerSingletonObject

Test: presubmit
Bug: 361850561
Flag: NONE - dagger
Change-Id: I305ee47f2da92972e9b5effe3c3e02504cd5a3b0
parent 9a949ff4
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;

import com.android.launcher3.pm.InstallSessionHelper;
import com.android.launcher3.util.DaggerSingletonTracker;
import com.android.launcher3.util.ScreenOnTracker;

import dagger.BindsInstance;

@@ -34,6 +35,7 @@ import dagger.BindsInstance;
public interface LauncherBaseAppComponent {
    DaggerSingletonTracker getDaggerSingletonTracker();
    InstallSessionHelper getInstallSessionHelper();
    ScreenOnTracker getScreenOnTracker();

    /** Builder for LauncherBaseAppComponent. */
    interface Builder {
+17 −8
Original line number Diff line number Diff line
@@ -26,16 +26,22 @@ import android.content.Intent;

import androidx.annotation.VisibleForTesting;

import com.android.launcher3.dagger.ApplicationContext;
import com.android.launcher3.dagger.LauncherAppSingleton;
import com.android.launcher3.dagger.LauncherBaseAppComponent;

import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Consumer;

import javax.inject.Inject;

/**
 * Utility class for tracking if the screen is currently on or off
 */
@LauncherAppSingleton
public class ScreenOnTracker implements SafeCloseable {

    public static final MainThreadInitializedObject<ScreenOnTracker> INSTANCE =
            new MainThreadInitializedObject<>(ScreenOnTracker::new);
    public static final DaggerSingletonObject<ScreenOnTracker> INSTANCE =
            new DaggerSingletonObject<>(LauncherBaseAppComponent::getScreenOnTracker);

    private final SimpleBroadcastReceiver mReceiver;
    private final CopyOnWriteArrayList<ScreenOnListener> mListeners = new CopyOnWriteArrayList<>();
@@ -43,23 +49,26 @@ public class ScreenOnTracker implements SafeCloseable {
    private final Context mContext;
    private boolean mIsScreenOn;

    private ScreenOnTracker(Context context) {
    @Inject
    ScreenOnTracker(@ApplicationContext Context context, DaggerSingletonTracker tracker) {
        // Assume that the screen is on to begin with
        mContext = context;
        mReceiver = new SimpleBroadcastReceiver(UI_HELPER_EXECUTOR, this::onReceive);
        init();
        init(tracker);
    }

    @VisibleForTesting
    ScreenOnTracker(Context context, SimpleBroadcastReceiver receiver) {
    ScreenOnTracker(@ApplicationContext Context context, SimpleBroadcastReceiver receiver,
            DaggerSingletonTracker tracker) {
        mContext = context;
        mReceiver = receiver;
        init();
        init(tracker);
    }

    private void init() {
    private void init(DaggerSingletonTracker tracker) {
        mIsScreenOn = true;
        mReceiver.register(mContext, ACTION_SCREEN_ON, ACTION_SCREEN_OFF, ACTION_USER_PRESENT);
        ExecutorUtil.executeSyncOnMainOrFail(() -> tracker.addCloseable(this));
    }

    @Override
+2 −1
Original line number Diff line number Diff line
@@ -39,13 +39,14 @@ class ScreenOnTrackerTest {
    @Mock private lateinit var receiver: SimpleBroadcastReceiver
    @Mock private lateinit var context: Context
    @Mock private lateinit var listener: ScreenOnTracker.ScreenOnListener
    @Mock private lateinit var tracker: DaggerSingletonTracker

    private lateinit var underTest: ScreenOnTracker

    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)
        underTest = ScreenOnTracker(context, receiver)
        underTest = ScreenOnTracker(context, receiver, tracker)
    }

    @Test