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

Commit 25f99902 authored by Caitlin Shkuratov's avatar Caitlin Shkuratov
Browse files

[CS] 2/2: Define interface for NavigationBarController.

As we replace CentralSurfaces references with NavigationBarController
references instead, we need to allow other variants (specifically Arc)
to be able to provide an empty NavigationBarController instance (since
those variants do not have a CentralSurfaces instance.)

Bug: 277764509
Test: smoke test of nav bar
Change-Id: Ieb0f3f554bef7fb72523381285e0a373ccf13559
parent a4cad0b9
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.navigationbar.NavigationBarControllerImpl;
import com.android.systemui.navigationbar.NavigationBarController;
import com.android.systemui.navigationbar.NavigationBarView;
import com.android.systemui.settings.DisplayTracker;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -65,7 +65,7 @@ public class KeyguardDisplayManager {
    private MediaRouter mMediaRouter = null;
    private final DisplayManager mDisplayService;
    private final DisplayTracker mDisplayTracker;
    private final Lazy<NavigationBarControllerImpl> mNavigationBarControllerLazy;
    private final Lazy<NavigationBarController> mNavigationBarControllerLazy;
    private final KeyguardStatusViewComponent.Factory mKeyguardStatusViewComponentFactory;
    private final ConnectedDisplayKeyguardPresentation.Factory
            mConnectedDisplayKeyguardPresentationFactory;
@@ -105,7 +105,7 @@ public class KeyguardDisplayManager {

    @Inject
    public KeyguardDisplayManager(Context context,
            Lazy<NavigationBarControllerImpl> navigationBarControllerLazy,
            Lazy<NavigationBarController> navigationBarControllerLazy,
            KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory,
            DisplayTracker displayTracker,
            @Main Executor mainExecutor,
+3 −3
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.media.dialog.MediaOutputDialogFactory;
import com.android.systemui.model.SysUiState;
import com.android.systemui.navigationbar.NavigationBarControllerImpl;
import com.android.systemui.navigationbar.NavigationBarController;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
import com.android.systemui.plugins.ActivityStarter;
@@ -294,7 +294,7 @@ public class Dependency {
    @Inject Lazy<ShadeController> mShadeController;
    @Inject Lazy<NotificationRemoteInputManager.Callback> mNotificationRemoteInputManagerCallback;
    @Inject Lazy<AppOpsController> mAppOpsController;
    @Inject Lazy<NavigationBarControllerImpl> mNavigationBarController;
    @Inject Lazy<NavigationBarController> mNavigationBarController;
    @Inject Lazy<AccessibilityFloatingMenuController> mAccessibilityFloatingMenuController;
    @Inject Lazy<StatusBarStateController> mStatusBarStateController;
    @Inject Lazy<NotificationLockscreenUserManager> mNotificationLockscreenUserManager;
@@ -489,7 +489,7 @@ public class Dependency {

        mProviders.put(AppOpsController.class, mAppOpsController::get);

        mProviders.put(NavigationBarControllerImpl.class, mNavigationBarController::get);
        mProviders.put(NavigationBarController.class, mNavigationBarController::get);

        mProviders.put(AccessibilityFloatingMenuController.class,
                mAccessibilityFloatingMenuController::get);
+3 −3
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ import android.view.View;
import com.android.settingslib.Utils;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.navigationbar.NavigationBarControllerImpl;
import com.android.systemui.navigationbar.NavigationBarController;
import com.android.systemui.navigationbar.NavigationBar;
import com.android.systemui.navigationbar.NavigationBarTransitions;

@@ -279,7 +279,7 @@ public class InvocationLightsView extends View

    private void attemptRegisterNavBarListener() {
        if (!mRegistered) {
            NavigationBarControllerImpl controller = Dependency.get(NavigationBarControllerImpl.class);
            NavigationBarController controller = Dependency.get(NavigationBarController.class);
            if (controller == null) {
                return;
            }
@@ -296,7 +296,7 @@ public class InvocationLightsView extends View

    private void attemptUnregisterNavBarListener() {
        if (mRegistered) {
            NavigationBarControllerImpl controller = Dependency.get(NavigationBarControllerImpl.class);
            NavigationBarController controller = Dependency.get(NavigationBarController.class);
            if (controller == null) {
                return;
            }
+2 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManagerImpl;
import com.android.systemui.doze.DozeHost;
import com.android.systemui.media.dagger.MediaModule;
import com.android.systemui.navigationbar.NavigationBarControllerModule;
import com.android.systemui.navigationbar.gestural.GestureModule;
import com.android.systemui.plugins.qs.QSFactory;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -101,6 +102,7 @@ import javax.inject.Named;
        GestureModule.class,
        MediaModule.class,
        MultiUserUtilsModule.class,
        NavigationBarControllerModule.class,
        PowerModule.class,
        QSModule.class,
        ReferenceScreenshotModule.class,
+73 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.navigationbar;

import androidx.annotation.Nullable;

import com.android.internal.statusbar.RegisterStatusBarResult;
import com.android.systemui.statusbar.phone.BarTransitions;

/** A controller to handle navigation bars. */
public interface NavigationBarController {
    /**
     * Creates navigation bars when car/status bar initializes.
     * <p>
     * TODO(b/117478341): I use {@code includeDefaultDisplay} to make this method compatible to
     * CarStatusBar because they have their own nav bar. Think about a better way for it.
     *
     * @param includeDefaultDisplay {@code true} to create navigation bar on default display.
     */
    void createNavigationBars(
            boolean includeDefaultDisplay,
            RegisterStatusBarResult result);

    /** Removes the navigation bar for the given display ID. */
    void removeNavigationBar(int displayId);

    /** @see NavigationBar#checkNavBarModes() */
    void checkNavBarModes(int displayId);

    /** @see NavigationBar#finishBarAnimations() */
    void finishBarAnimations(int displayId);

    /** @see NavigationBar#touchAutoDim() */
    void touchAutoDim(int displayId);

    /** @see NavigationBar#transitionTo(int, boolean) */
    void transitionTo(int displayId, @BarTransitions.TransitionMode int barMode, boolean animate);

    /** @see NavigationBar#disableAnimationsDuringHide(long) */
    void disableAnimationsDuringHide(int displayId, long delay);

    /** @return {@link NavigationBarView} on the default display. */
    @Nullable
    NavigationBarView getDefaultNavigationBarView();

    /**
     * @param displayId the ID of display which Navigation bar is on
     * @return {@link NavigationBarView} on the display with {@code displayId}.
     *         {@code null} if no navigation bar on that display.
     */
    @Nullable
    NavigationBarView getNavigationBarView(int displayId);

    boolean isOverviewEnabled(int displayId);

    /** @return {@link NavigationBar} on the default display. */
    @Nullable
    NavigationBar getDefaultNavigationBar();
}
Loading