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

Commit 5379eb76 authored by Evan Laird's avatar Evan Laird Committed by Android (Google) Code Review
Browse files

Merge "Move status bar initialization into its own class"

parents 674b3acf 534e7fe6
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -108,7 +108,18 @@ public class FragmentHostManager {
        return p;
    }

    public FragmentHostManager addTagListener(String tag, FragmentListener listener) {
    /**
     * Add a {@link FragmentListener} for a given tag
     *
     * @param tag string identifier for the fragment
     * @param listener the listener to register
     *
     * @return this
     */
    public FragmentHostManager addTagListener(
            @NonNull String tag,
            @NonNull FragmentListener listener
    ) {
        ArrayList<FragmentListener> listeners = mListeners.get(tag);
        if (listeners == null) {
            listeners = new ArrayList<>();
+78 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 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.statusbar.core

import android.app.Fragment
import com.android.systemui.R
import com.android.systemui.fragments.FragmentHostManager
import com.android.systemui.statusbar.phone.PhoneStatusBarView
import com.android.systemui.statusbar.phone.PhoneStatusBarViewController
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent.StatusBarScope
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment
import com.android.systemui.statusbar.window.StatusBarWindowController
import java.lang.IllegalStateException
import javax.inject.Inject

/**
 * Responsible for creating the StatusBar window and initializing the root components of that window
 * (see [CollapsedStatusBarFragment])
 */
@StatusBarScope
class StatusBarInitializer @Inject constructor(
    private val windowController: StatusBarWindowController
) {

    var statusBarViewUpdatedListener: OnStatusBarViewUpdatedListener? = null

    /**
     * Creates the status bar window and root views, and initializes the component
     */
    fun initializeStatusBar(
        sbComponent: StatusBarComponent
    ) {
        windowController.fragmentHostManager.addTagListener(
                CollapsedStatusBarFragment.TAG,
                object : FragmentHostManager.FragmentListener {
                    override fun onFragmentViewCreated(tag: String, fragment: Fragment) {
                        val statusBarFragmentComponent = (fragment as CollapsedStatusBarFragment)
                                .statusBarFragmentComponent ?: throw IllegalStateException()
                        val statusBarView = statusBarFragmentComponent.phoneStatusBarView
                        val sbViewController =
                                statusBarFragmentComponent.phoneStatusBarViewController

                        statusBarViewUpdatedListener
                                ?.onStatusBarViewUpdated(statusBarView, sbViewController)
                    }

                    override fun onFragmentViewDestroyed(tag: String?, fragment: Fragment?) {
                        // nop
                    }
                }).fragmentManager
                .beginTransaction()
                .replace(R.id.status_bar_container,
                        sbComponent.createCollapsedStatusBarFragment(),
                        CollapsedStatusBarFragment.TAG)
                .commit()
    }

    interface OnStatusBarViewUpdatedListener {
        fun onStatusBarViewUpdated(
            statusBarView: PhoneStatusBarView,
            statusBarViewController: PhoneStatusBarViewController
        )
    }
}
+6 −5
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.statusbar.phone;

import android.graphics.Point;
import android.graphics.Rect;
import android.view.View;

@@ -59,9 +58,7 @@ public class HeadsUpAppearanceController extends ViewController<HeadsUpStatusBar
    private final NotificationIconAreaController mNotificationIconAreaController;
    private final HeadsUpManagerPhone mHeadsUpManager;
    private final NotificationStackScrollLayoutController mStackScrollerController;
    private final View mCenteredIconView;
    private final View mClockView;
    private final View mOperatorNameView;

    private final DarkIconDispatcher mDarkIconDispatcher;
    private final NotificationPanelViewController mNotificationPanelViewController;
    private final Consumer<ExpandableNotificationRow>
@@ -71,6 +68,11 @@ public class HeadsUpAppearanceController extends ViewController<HeadsUpStatusBar
    private final StatusBarStateController mStatusBarStateController;
    private final CommandQueue mCommandQueue;
    private final NotificationWakeUpCoordinator mWakeUpCoordinator;

    private View mCenteredIconView;
    private View mClockView;
    private View mOperatorNameView;

    @VisibleForTesting
    float mExpandedHeight;
    @VisibleForTesting
@@ -85,7 +87,6 @@ public class HeadsUpAppearanceController extends ViewController<HeadsUpStatusBar
                }
            };
    private boolean mAnimationsEnabled = true;
    Point mPoint;
    private KeyguardStateController mKeyguardStateController;

    @Inject
+23 −55
Original line number Diff line number Diff line
@@ -148,7 +148,6 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.emergency.EmergencyGesture;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
@@ -195,13 +194,12 @@ import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.NotificationShelfController;
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
import com.android.systemui.statusbar.OperatorNameViewController;
import com.android.systemui.statusbar.PowerButtonReveal;
import com.android.systemui.statusbar.PulseExpansionHandler;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.connectivity.NetworkController;
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
import com.android.systemui.statusbar.core.StatusBarInitializer;
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
import com.android.systemui.statusbar.notification.NotificationActivityStarter;
@@ -221,9 +219,6 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneModule;
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragmentLogger;
import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentComponent;
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
import com.android.systemui.statusbar.policy.BatteryController;
@@ -237,7 +232,6 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.window.StatusBarWindowController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.util.DumpUtilsKt;
import com.android.systemui.util.WallpaperController;
import com.android.systemui.util.concurrency.DelayableExecutor;
@@ -458,7 +452,6 @@ public class StatusBar extends CoreStartable implements
    @Nullable
    protected LockscreenWallpaper mLockscreenWallpaper;
    private final AutoHideController mAutoHideController;
    private final CollapsedStatusBarFragmentLogger mCollapsedStatusBarFragmentLogger;

    private final Point mCurrentDisplaySize = new Point();

@@ -509,10 +502,7 @@ public class StatusBar extends CoreStartable implements
    private final DemoModeController mDemoModeController;
    private final NotificationsController mNotificationsController;
    private final OngoingCallController mOngoingCallController;
    private final SystemStatusAnimationScheduler mAnimationScheduler;
    private final StatusBarSignalPolicy mStatusBarSignalPolicy;
    private final StatusBarLocationPublisher mStatusBarLocationPublisher;
    private final StatusBarIconController mStatusBarIconController;
    private final StatusBarHideIconsForBouncerManager mStatusBarHideIconsForBouncerManager;

    // expanded notifications
@@ -522,7 +512,6 @@ public class StatusBar extends CoreStartable implements
    // settings
    private QSPanelController mQSPanelController;

    private final OperatorNameViewController.Factory mOperatorNameViewControllerFactory;
    KeyguardIndicationController mKeyguardIndicationController;

    private View mReportRejectedTouch;
@@ -547,7 +536,6 @@ public class StatusBar extends CoreStartable implements
    private final KeyguardUnlockAnimationController mKeyguardUnlockAnimationController;
    private final MessageRouter mMessageRouter;
    private final WallpaperManager mWallpaperManager;
    private final TunerService mTunerService;

    private StatusBarComponent mStatusBarComponent;

@@ -752,7 +740,6 @@ public class StatusBar extends CoreStartable implements
            DozeScrimController dozeScrimController,
            VolumeComponent volumeComponent,
            CommandQueue commandQueue,
            CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger,
            StatusBarComponent.Factory statusBarComponentFactory,
            PluginManager pluginManager,
            Optional<LegacySplitScreen> splitScreenOptional,
@@ -767,7 +754,6 @@ public class StatusBar extends CoreStartable implements
            KeyguardDismissUtil keyguardDismissUtil,
            ExtensionController extensionController,
            UserInfoControllerImpl userInfoControllerImpl,
            OperatorNameViewController.Factory operatorNameViewControllerFactory,
            PhoneStatusBarPolicy phoneStatusBarPolicy,
            KeyguardIndicationController keyguardIndicationController,
            DemoModeController demoModeController,
@@ -778,9 +764,6 @@ public class StatusBar extends CoreStartable implements
            ScreenOffAnimationController screenOffAnimationController,
            WallpaperController wallpaperController,
            OngoingCallController ongoingCallController,
            SystemStatusAnimationScheduler animationScheduler,
            StatusBarLocationPublisher locationPublisher,
            StatusBarIconController statusBarIconController,
            StatusBarHideIconsForBouncerManager statusBarHideIconsForBouncerManager,
            LockscreenShadeTransitionController lockscreenShadeTransitionController,
            FeatureFlags featureFlags,
@@ -790,8 +773,6 @@ public class StatusBar extends CoreStartable implements
            @Main MessageRouter messageRouter,
            WallpaperManager wallpaperManager,
            Optional<StartingSurface> startingSurfaceOptional,
            TunerService tunerService,
            DumpManager dumpManager,
            ActivityLaunchAnimator activityLaunchAnimator,
            NotifPipelineFlags notifPipelineFlags) {
        super(context);
@@ -806,7 +787,6 @@ public class StatusBar extends CoreStartable implements
        mKeyguardBypassController = keyguardBypassController;
        mKeyguardStateController = keyguardStateController;
        mHeadsUpManager = headsUpManagerPhone;
        mOperatorNameViewControllerFactory = operatorNameViewControllerFactory;
        mKeyguardIndicationController = keyguardIndicationController;
        mStatusBarTouchableRegionManager = statusBarTouchableRegionManager;
        mDynamicPrivacyController = dynamicPrivacyController;
@@ -856,7 +836,6 @@ public class StatusBar extends CoreStartable implements
        mNotificationShadeDepthControllerLazy = notificationShadeDepthControllerLazy;
        mVolumeComponent = volumeComponent;
        mCommandQueue = commandQueue;
        mCollapsedStatusBarFragmentLogger = collapsedStatusBarFragmentLogger;
        mStatusBarComponentFactory = statusBarComponentFactory;
        mPluginManager = pluginManager;
        mSplitScreenOptional = splitScreenOptional;
@@ -875,10 +854,7 @@ public class StatusBar extends CoreStartable implements
        mBrightnessSliderFactory = brightnessSliderFactory;
        mWallpaperController = wallpaperController;
        mOngoingCallController = ongoingCallController;
        mAnimationScheduler = animationScheduler;
        mStatusBarSignalPolicy = statusBarSignalPolicy;
        mStatusBarLocationPublisher = locationPublisher;
        mStatusBarIconController = statusBarIconController;
        mStatusBarHideIconsForBouncerManager = statusBarHideIconsForBouncerManager;
        mFeatureFlags = featureFlags;
        mKeyguardUnlockAnimationController = keyguardUnlockAnimationController;
@@ -886,7 +862,6 @@ public class StatusBar extends CoreStartable implements
        mMainExecutor = delayableExecutor;
        mMessageRouter = messageRouter;
        mWallpaperManager = wallpaperManager;
        mTunerService = tunerService;

        mLockscreenShadeTransitionController = lockscreenShadeTransitionController;
        mStartingSurfaceOptional = startingSurfaceOptional;
@@ -1145,19 +1120,18 @@ public class StatusBar extends CoreStartable implements
        // Allow plugins to reference DarkIconDispatcher and StatusBarStateController
        mPluginDependencyProvider.allowPluginDependency(DarkIconDispatcher.class);
        mPluginDependencyProvider.allowPluginDependency(StatusBarStateController.class);
        mStatusBarWindowController.getFragmentHostManager()
                .addTagListener(CollapsedStatusBarFragment.TAG, (tag, fragment) -> {
                    StatusBarFragmentComponent statusBarFragmentComponent =
                            ((CollapsedStatusBarFragment) fragment).getStatusBarFragmentComponent();
                    if (statusBarFragmentComponent == null) {
                        throw new IllegalStateException(
                                "CollapsedStatusBarFragment should have a valid component");
                    }

                    mStatusBarView = statusBarFragmentComponent.getPhoneStatusBarView();
                    mPhoneStatusBarViewController =
                            statusBarFragmentComponent.getPhoneStatusBarViewController();

        // Set up CollapsedStatusBarFragment and PhoneStatusBarView
        StatusBarInitializer initializer = mStatusBarComponent.getStatusBarInitializer();
        initializer.setStatusBarViewUpdatedListener(
                new StatusBarInitializer.OnStatusBarViewUpdatedListener() {
                    @Override
                    public void onStatusBarViewUpdated(
                            @NonNull PhoneStatusBarView statusBarView,
                            @NonNull PhoneStatusBarViewController statusBarViewController) {
                        mStatusBarView = statusBarView;
                        mPhoneStatusBarViewController = statusBarViewController;
                        mNotificationShadeWindowViewController.setStatusBarView(mStatusBarView);
                        // Ensure we re-propagate panel expansion values to the panel controller and
                        // any listeners it may have, such as PanelBar. This will also ensure we
                        // re-display the notification panel if necessary (for example, if
@@ -1165,14 +1139,10 @@ public class StatusBar extends CoreStartable implements
                        // displayed).
                        mNotificationPanelViewController.updatePanelExpansionAndVisibility();
                        setBouncerShowingForStatusBarComponents(mBouncerShowing);
                    mNotificationShadeWindowViewController.setStatusBarView(mStatusBarView);
                        checkBarModes();
                }).getFragmentManager()
                .beginTransaction()
                .replace(R.id.status_bar_container,
                        mStatusBarComponent.createCollapsedStatusBarFragment(),
                        CollapsedStatusBarFragment.TAG)
                .commit();
                    }
                });
        initializer.initializeStatusBar(mStatusBarComponent);

        mHeadsUpManager.setup(mVisualStabilityManager);
        mStatusBarTouchableRegionManager.setup(this, mNotificationShadeWindowView);
@@ -1547,8 +1517,6 @@ public class StatusBar extends CoreStartable implements

        mHeadsUpManager.addListener(mStatusBarComponent.getStatusBarHeadsUpChangeListener());

        mHeadsUpManager.addListener(mStatusBarComponent.getStatusBarHeadsUpChangeListener());

        // Listen for demo mode changes
        mDemoModeController.addCallback(mDemoModeCallback);

+7 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
import com.android.keyguard.LockIconViewController;
import com.android.systemui.biometrics.AuthRippleController;
import com.android.systemui.statusbar.NotificationShelfController;
import com.android.systemui.statusbar.core.StatusBarInitializer;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
import com.android.systemui.statusbar.phone.NotificationPanelViewController;
import com.android.systemui.statusbar.phone.NotificationShadeWindowView;
@@ -131,4 +132,10 @@ public interface StatusBarComponent {
     */
    @Named(STATUS_BAR_FRAGMENT)
    CollapsedStatusBarFragment createCollapsedStatusBarFragment();

    /**
     * Creates a StatusBarInitializer
     */
    @StatusBarScope
    StatusBarInitializer getStatusBarInitializer();
}
Loading