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

Commit 43a9420d authored by Liana Kazanova's avatar Liana Kazanova Committed by Android (Google) Code Review
Browse files

Merge "Revert "Change CoreStartable @Dependencies to Injected Map"" into main

parents 4ddd8c1d e152ceab
Loading
Loading
Loading
Loading
+2 −13
Original line number Diff line number Diff line
@@ -33,23 +33,12 @@ import java.io.PrintWriter;
 *  abstract fun bind(impl: FoobarStartable): CoreStartable
 *  </pre>
 *
 * If your CoreStartable depends on different CoreStartables starting before it, you can specify
 * another map binding listing out its dependencies:
 *  <pre>
 *  &#64;Provides
 *  &#64;IntoMap
 *  &#64;Dependencies  // Important! com.android.systemui.startable.Dependencies.
 *  &#64;ClassKey(FoobarStartable::class)
 *  fun providesDeps(): Set&lt;Class&lt;out CoreStartable&gt;&gt; {
 *      return setOf(OtherStartable::class.java)
 *  }
 *  </pre>
 *
 * If your CoreStartable depends on different CoreStartables starting before it, use a
 * {@link com.android.systemui.startable.Dependencies} annotation to list out those dependencies.
 *
 * @see SystemUIApplication#startSystemUserServicesIfNeeded()
 */
public interface CoreStartable extends Dumpable {
    String STARTABLE_DEPENDENCIES = "startable_dependencies";

    /** Main entry point for implementations. Called shortly after SysUI startup. */
    void start();
+10 −9
Original line number Diff line number Diff line
@@ -44,15 +44,16 @@ import com.android.systemui.dagger.SysUIComponent;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.process.ProcessWrapper;
import com.android.systemui.res.R;
import com.android.systemui.startable.Dependencies;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.util.NotificationChannels;

import java.lang.reflect.InvocationTargetException;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.StringJoiner;
import java.util.TreeMap;

@@ -306,9 +307,9 @@ public class SystemUIApplication extends Application implements
                Map.Entry<Class<?>, Provider<CoreStartable>> entry = queue.removeFirst();

                Class<?> cls = entry.getKey();
                Set<Class<? extends CoreStartable>> deps =
                        mSysUIComponent.getStartableDependencies().get(cls);
                if (deps == null || startedStartables.containsAll(deps)) {
                Dependencies dep = cls.getAnnotation(Dependencies.class);
                Class<?>[] deps = (dep == null ? null : dep.value());
                if (deps == null || startedStartables.containsAll(Arrays.asList(deps))) {
                    String clsName = cls.getName();
                    int i = serviceIndex;  // Copied to make lambda happy.
                    timeInitialization(
@@ -330,12 +331,12 @@ public class SystemUIApplication extends Application implements
            while (!nextQueue.isEmpty()) {
                Map.Entry<Class<?>, Provider<CoreStartable>> entry = nextQueue.removeFirst();
                Class<?> cls = entry.getKey();
                Set<Class<? extends CoreStartable>> deps =
                        mSysUIComponent.getStartableDependencies().get(cls);
                Dependencies dep = cls.getAnnotation(Dependencies.class);
                Class<?>[] deps = (dep == null ? null : dep.value());
                StringJoiner stringJoiner = new StringJoiner(", ");
                for (Class<? extends CoreStartable> c : deps) {
                    if (!startedStartables.contains(c)) {
                        stringJoiner.add(c.getName());
                for (int i = 0; deps != null && i < deps.length; i++) {
                    if (!startedStartables.contains(deps[i])) {
                        stringJoiner.add(deps[i].getName());
                    }
                }
                Log.e(TAG, "Failed to start " + cls.getName()
+0 −7
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import com.android.systemui.dagger.qualifiers.PerUser;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardSliceProvider;
import com.android.systemui.people.PeopleProvider;
import com.android.systemui.startable.Dependencies;
import com.android.systemui.statusbar.NotificationInsetsModule;
import com.android.systemui.statusbar.QsFrameTranslateModule;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -48,7 +47,6 @@ import dagger.Subcomponent;

import java.util.Map;
import java.util.Optional;
import java.util.Set;

import javax.inject.Provider;

@@ -161,11 +159,6 @@ public interface SysUIComponent {
     */
    @PerUser Map<Class<?>, Provider<CoreStartable>> getPerUserStartables();

    /**
     * Returns {@link CoreStartable} dependencies if there are any.
     */
    @Dependencies Map<Class<?>, Set<Class<? extends CoreStartable>>> getStartableDependencies();

    /**
     * Member injection into the supplied argument.
     */
+5 −3
Original line number Diff line number Diff line
@@ -16,8 +16,7 @@
package com.android.systemui.startable

import com.android.systemui.CoreStartable
import java.lang.annotation.Documented
import javax.inject.Qualifier
import kotlin.reflect.KClass

/**
 * Allows a [CoreStartable] to declare that it must be started after its dependencies.
@@ -25,4 +24,7 @@ import javax.inject.Qualifier
 * This creates a partial, topological ordering. See [com.android.systemui.SystemUIApplication] for
 * how this ordering is enforced at runtime.
 */
@Qualifier @Documented @Retention(AnnotationRetention.RUNTIME) annotation class Dependencies()
@MustBeDocumented
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class Dependencies(vararg val value: KClass<*> = [])
+2 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.view.View;

import com.android.systemui.CoreStartable;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.startable.Dependencies;
import com.android.systemui.statusbar.phone.CentralSurfaces;

import java.lang.annotation.Retention;
@@ -30,6 +31,7 @@ import java.lang.annotation.Retention;
/**
 * Sends updates to {@link StateListener}s about changes to the status bar state and dozing state
 */
@Dependencies(CentralSurfaces.class)
public interface SysuiStatusBarStateController extends StatusBarStateController, CoreStartable {

    // TODO: b/115739177 (remove this explicit ordering if we can)
Loading