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

Commit 776f978f authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Prevent dagger from hanging onto DozeService

Evidently, dagger hangs on to classes marked with @Reusable. This is
not desirable for DozeService. Instead, institute a better fix
which is binding an interface implementation into its subcomponent,
which is the part that needs DozeService to exist.

We can't bind DozeService directly as Dagger complains that you can't
bind classes that already exist in a parent scope. Binding an interface
implementation, however, works well.

Fixes: 165208002
Test: manual
Change-Id: Iae061d636b6e4bdc8bc6a03e9c7daf900610d19f
parent e9fffe1c
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -33,9 +33,6 @@ import java.io.PrintWriter;

import javax.inject.Inject;

import dagger.Reusable;

@Reusable  // Don't create multiple DozeServices.
public class DozeService extends DreamService
        implements DozeMachine.Service, RequestDoze, PluginListener<DozeServicePlugin> {
    private static final String TAG = "DozeService";
@@ -60,7 +57,7 @@ public class DozeService extends DreamService
        setWindowless(true);

        mPluginManager.addPluginListener(this, DozeServicePlugin.class, false /* allowMultiple */);
        DozeComponent dozeComponent = mDozeComponentBuilder.build();
        DozeComponent dozeComponent = mDozeComponentBuilder.build(this);
        mDozeMachine = dozeComponent.getDozeMachine();
    }

+2 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.doze.dagger;
import com.android.systemui.doze.DozeMachine;
import com.android.systemui.doze.DozeService;

import dagger.BindsInstance;
import dagger.Subcomponent;

/**
@@ -30,7 +31,7 @@ public interface DozeComponent {
    /** Simple Builder for {@link DozeComponent}. */
    @Subcomponent.Factory
    interface Builder {
        DozeComponent build();
        DozeComponent build(@BindsInstance DozeMachine.Service dozeMachineService);
    }

    /** Supply a {@link DozeMachine}. */
+3 −4
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import com.android.systemui.doze.DozeScreenBrightness;
import com.android.systemui.doze.DozeScreenState;
import com.android.systemui.doze.DozeScreenStatePreventingAdapter;
import com.android.systemui.doze.DozeSensors;
import com.android.systemui.doze.DozeService;
import com.android.systemui.doze.DozeSuspendScreenStatePreventingAdapter;
import com.android.systemui.doze.DozeTriggers;
import com.android.systemui.doze.DozeUi;
@@ -52,9 +51,9 @@ public abstract class DozeModule {
    @Provides
    @DozeScope
    @WrappedService
    static DozeMachine.Service providesWrappedService(DozeService dozeService, DozeHost dozeHost,
            DozeParameters dozeParameters) {
        DozeMachine.Service wrappedService = dozeService;
    static DozeMachine.Service providesWrappedService(DozeMachine.Service dozeMachineService,
            DozeHost dozeHost, DozeParameters dozeParameters) {
        DozeMachine.Service wrappedService = dozeMachineService;
        wrappedService = new DozeBrightnessHostForwarder(wrappedService, dozeHost);
        wrappedService = DozeScreenStatePreventingAdapter.wrapIfNeeded(
                wrappedService, dozeParameters);