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

Commit ad61a28f authored by Jerry Chang's avatar Jerry Chang
Browse files

Migrate splitscreen to WM shell lib (2/n)

Removes Divider from SystemUI component list since it is no longer
needed after the split screen feature migrated to WM shell library.

Provides optional controller of split screen for sysui components to
use. Different varients of SystemUI could leverage dagger module to
decide whether to load the controller or not.

Implements WMShell component in SysUISingleton scope to help delegating
sysui specific events to WM shell controllers.

Detached DisplayImeController's initialization step from split screen
feature with the reason that some of SystemUI varients might not have
split screen feature.

Bug: 161116823
Test: atest SystemUITests
Test: atest SystemUIGoogleTests
Test: atest CarSystemUITests
Test: manual verified spliscreen behavior
Change-Id: I4220b5ce53bc7b793b95cfca34100e808b9f052c
parent 612be42e
Loading
Loading
Loading
Loading
+3 −27
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
    private final SparseArray<PerDisplay> mImePerDisplay = new SparseArray<>();
    private final ArrayList<ImePositionProcessor> mPositionProcessors = new ArrayList<>();

    protected DisplayImeController(IWindowManager wmService, DisplayController displayController,
    public DisplayImeController(IWindowManager wmService, DisplayController displayController,
            Handler mainHandler, TransactionPool transactionPool) {
        mHandler = mainHandler;
        mWmService = wmService;
@@ -76,7 +76,8 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
        mDisplayController = displayController;
    }

    protected void startMonitorDisplays() {
    /** Starts monitor displays changes and set insets controller for each displays. */
    public void startMonitorDisplays() {
        mDisplayController.addDisplayWindowListener(this);
    }

@@ -493,29 +494,4 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged
        return IInputMethodManager.Stub.asInterface(
                ServiceManager.getService(Context.INPUT_METHOD_SERVICE));
    }

    /** Builds {@link DisplayImeController} instance. */
    public static class Builder {
        private IWindowManager mWmService;
        private DisplayController mDisplayController;
        private Handler mHandler;
        private TransactionPool mTransactionPool;

        public Builder(IWindowManager wmService, DisplayController displayController,
                Handler handler, TransactionPool transactionPool) {
            mWmService = wmService;
            mDisplayController = displayController;
            mHandler = handler;
            mTransactionPool = transactionPool;
        }

        /** Builds and initializes {@link DisplayImeController} instance. */
        public DisplayImeController build() {
            DisplayImeController displayImeController = new DisplayImeController(mWmService,
                    mDisplayController, mHandler, mTransactionPool);
            // Separates startMonitorDisplays from constructor to prevent circular init issue.
            displayImeController.startMonitorDisplays();
            return displayImeController;
        }
    }
}
+0 −1
Original line number Diff line number Diff line
@@ -121,7 +121,6 @@
    <string-array name="config_systemUIServiceComponentsExclude" translatable="false">
        <item>com.android.systemui.recents.Recents</item>
        <item>com.android.systemui.volume.VolumeUI</item>
        <item>com.android.systemui.stackdivider.Divider</item>
        <item>com.android.systemui.statusbar.phone.StatusBar</item>
        <item>com.android.systemui.keyboard.KeyboardUI</item>
        <item>com.android.systemui.pip.PipUI</item>
+7 −7
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import com.android.systemui.power.PowerUI;
import com.android.systemui.recents.Recents;
import com.android.systemui.recents.RecentsModule;
import com.android.systemui.shortcut.ShortcutKeyDispatcher;
import com.android.systemui.stackdivider.Divider;
import com.android.systemui.statusbar.dagger.StatusBarModule;
import com.android.systemui.statusbar.notification.InstantAppNotifier;
import com.android.systemui.statusbar.notification.dagger.NotificationsModule;
@@ -42,6 +41,7 @@ import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.theme.ThemeOverlayController;
import com.android.systemui.toast.ToastUI;
import com.android.systemui.util.leak.GarbageMonitor;
import com.android.systemui.wmshell.WMShell;

import dagger.Binds;
import dagger.Module;
@@ -59,12 +59,6 @@ public abstract class CarSystemUIBinder {
    @ClassKey(AuthController.class)
    public abstract SystemUI bindAuthController(AuthController sysui);

    /** Inject into Divider. */
    @Binds
    @IntoMap
    @ClassKey(Divider.class)
    public abstract SystemUI bindDivider(Divider sysui);

    /** Inject Car Navigation Bar. */
    @Binds
    @IntoMap
@@ -192,4 +186,10 @@ public abstract class CarSystemUIBinder {
    @IntoMap
    @ClassKey(SideLoadedAppController.class)
    public abstract SystemUI bindSideLoadedAppController(SideLoadedAppController sysui);

    /** Inject into WMShell. */
    @Binds
    @IntoMap
    @ClassKey(WMShell.class)
    public abstract SystemUI bindWMShell(WMShell sysui);
}
+0 −2
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ import com.android.systemui.qs.dagger.QSModule;
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.recents.Recents;
import com.android.systemui.recents.RecentsImplementation;
import com.android.systemui.stackdivider.DividerModule;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
@@ -75,7 +74,6 @@ import dagger.Provides;

@Module(
        includes = {
                DividerModule.class,
                QSModule.class,
                CarWMShellModule.class
        })
+1 −30
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ public class DisplaySystemBarsController extends DisplayImeController {
    private final Context mContext;
    private SparseArray<PerDisplay> mPerDisplaySparseArray;

    private DisplaySystemBarsController(
    public DisplaySystemBarsController(
            Context context,
            IWindowManager wmService,
            DisplayController displayController,
@@ -167,33 +167,4 @@ public class DisplaySystemBarsController extends DisplayImeController {
            }
        }
    }

    /** Builds {@link DisplaySystemBarsController} instance. */
    public static class Builder {
        private Context mContext;
        private IWindowManager mWmService;
        private DisplayController mDisplayController;
        private Handler mHandler;
        private TransactionPool mTransactionPool;

        public Builder(Context context, IWindowManager wmService,
                DisplayController displayController, Handler handler,
                TransactionPool transactionPool) {
            mContext = context;
            mWmService = wmService;
            mDisplayController = displayController;
            mHandler = handler;
            mTransactionPool = transactionPool;
        }

        /** Builds and initializes {@link DisplaySystemBarsController} instance. */
        public DisplaySystemBarsController build() {
            DisplaySystemBarsController displaySystemBarsController =
                    new DisplaySystemBarsController(
                            mContext, mWmService, mDisplayController, mHandler, mTransactionPool);
            // Separates startMonitorDisplays from constructor to prevent circular init issue.
            displaySystemBarsController.startMonitorDisplays();
            return displaySystemBarsController;
        }
    }
}
Loading