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

Commit d1097531 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

3/3 Remove SuperStatusBarViewFactory.

StatusBarWindowView now has a provider defined in
SystemUIModule.

Can we move it to StatusBarScope easily?
Can we move it to SysUI/SysUIG such that Auto/TV/Arc etc
don't have to thing about it?

Bug: 190746471
Test: atest SystemUITests
Change-Id: I4c44e6723476df0797a7d0ac0ac8ef7f17ad7734
parent b00611cf
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.dagger;

import android.app.INotificationManager;
import android.content.Context;
import android.view.LayoutInflater;

import androidx.annotation.Nullable;

@@ -26,6 +27,7 @@ import com.android.keyguard.clock.ClockModule;
import com.android.keyguard.dagger.KeyguardBouncerComponent;
import com.android.systemui.BootCompleteCache;
import com.android.systemui.BootCompleteCacheImpl;
import com.android.systemui.R;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.appops.dagger.AppOpsModule;
import com.android.systemui.assist.AssistModule;
@@ -61,6 +63,7 @@ import com.android.systemui.statusbar.notification.row.dagger.NotificationRowCom
import com.android.systemui.statusbar.notification.row.dagger.NotificationShelfComponent;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarWindowView;
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.HeadsUpManager;
@@ -69,6 +72,7 @@ import com.android.systemui.statusbar.policy.dagger.SmartRepliesInflationModule;
import com.android.systemui.statusbar.policy.dagger.StatusBarPolicyModule;
import com.android.systemui.tuner.dagger.TunerModule;
import com.android.systemui.user.UserModule;
import com.android.systemui.util.InjectionInflationController;
import com.android.systemui.util.concurrency.SysUIConcurrencyModule;
import com.android.systemui.util.dagger.UtilModule;
import com.android.systemui.util.sensors.SensorModule;
@@ -198,4 +202,19 @@ public abstract class SystemUIModule {
                groupManager, entryManager, notifPipeline, sysUiState, featureFlags, dumpManager,
                sysuiMainExecutor));
    }

    @Provides
    @SysUISingleton
    static StatusBarWindowView providesStatusBarWindowView(Context context,
            InjectionInflationController injectionInflationController) {
        StatusBarWindowView view =
                (StatusBarWindowView) injectionInflationController.injectable(
                        LayoutInflater.from(context)).inflate(R.layout.super_status_bar,
                        /* root= */ null);
        if (view == null) {
            throw new IllegalStateException(
                    "R.layout.super_status_bar could not be properly inflated");
        }
        return view;
    }
}
+0 −67
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 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;

import android.content.Context;
import android.view.LayoutInflater;

import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.phone.StatusBarWindowView;
import com.android.systemui.util.InjectionInflationController;

import javax.inject.Inject;

/**
 * Creates a single instance of super_status_bar and super_notification_shade that can be shared
 * across various system ui objects.
 */
@SysUISingleton
public class SuperStatusBarViewFactory {

    private final Context mContext;
    private final InjectionInflationController mInjectionInflationController;

    private StatusBarWindowView mStatusBarWindowView;

    @Inject
    public SuperStatusBarViewFactory(Context context,
            InjectionInflationController injectionInflationController) {
        mContext = context;
        mInjectionInflationController = injectionInflationController;
    }

    /**
     * Gets the inflated {@link StatusBarWindowView} from {@link R.layout#super_status_bar}.
     * Returns a cached instance, if it has already been inflated.
     */
    public StatusBarWindowView getStatusBarWindowView() {
        if (mStatusBarWindowView != null) {
            return mStatusBarWindowView;
        }

        mStatusBarWindowView =
                (StatusBarWindowView) mInjectionInflationController.injectable(
                LayoutInflater.from(mContext)).inflate(R.layout.super_status_bar,
                /* root= */ null);
        if (mStatusBarWindowView == null) {
            throw new IllegalStateException(
                    "R.layout.super_status_bar could not be properly inflated");
        }
        return mStatusBarWindowView;
    }
}
+1 −6
Original line number Diff line number Diff line
@@ -24,13 +24,10 @@ import android.view.View
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.widget.FrameLayout

import com.android.systemui.R
import com.android.systemui.statusbar.SuperStatusBarViewFactory
import com.android.systemui.statusbar.phone.StatusBarLocationPublisher
import com.android.systemui.statusbar.phone.StatusBarWindowController
import com.android.systemui.statusbar.phone.StatusBarWindowView

import javax.inject.Inject

/**
@@ -38,7 +35,7 @@ import javax.inject.Inject
 */
class SystemEventChipAnimationController @Inject constructor(
    private val context: Context,
    private val statusBarViewFactory: SuperStatusBarViewFactory,
    private val statusBarWindowView: StatusBarWindowView,
    private val statusBarWindowController: StatusBarWindowController,
    private val locationPublisher: StatusBarLocationPublisher
) : SystemStatusChipAnimationCallback {
@@ -51,7 +48,6 @@ class SystemEventChipAnimationController @Inject constructor(

    private lateinit var animationWindowView: FrameLayout
    private lateinit var animationDotView: View
    private lateinit var statusBarWindowView: StatusBarWindowView
    private var currentAnimatedView: View? = null

    // TODO: move to dagger
@@ -125,7 +121,6 @@ class SystemEventChipAnimationController @Inject constructor(

    private fun init() {
        initialized = true
        statusBarWindowView = statusBarViewFactory.statusBarWindowView
        animationWindowView = LayoutInflater.from(context)
                .inflate(R.layout.system_event_animation_window, null) as FrameLayout
        animationDotView = animationWindowView.findViewById(R.id.dot_view)
+5 −7
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.PulseExpansionHandler;
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
@@ -106,7 +105,7 @@ public class NotificationShadeWindowViewController {
    private boolean mExpandingBelowNotch;
    private final DockManager mDockManager;
    private final NotificationPanelViewController mNotificationPanelViewController;
    private final SuperStatusBarViewFactory mStatusBarViewFactory;
    private final StatusBarWindowView mStatusBarWindowView;

    // Used for determining view / touch intersection
    private int[] mTempLocation = new int[2];
@@ -136,7 +135,7 @@ public class NotificationShadeWindowViewController {
            NotificationShadeDepthController depthController,
            NotificationShadeWindowView notificationShadeWindowView,
            NotificationPanelViewController notificationPanelViewController,
            SuperStatusBarViewFactory statusBarViewFactory,
            StatusBarWindowView statusBarWindowView,
            NotificationStackScrollLayoutController notificationStackScrollLayoutController,
            StatusBarKeyguardViewManager statusBarKeyguardViewManager) {
        mInjectionInflationController = injectionInflationController;
@@ -160,7 +159,7 @@ public class NotificationShadeWindowViewController {
        mDockManager = dockManager;
        mNotificationPanelViewController = notificationPanelViewController;
        mDepthController = depthController;
        mStatusBarViewFactory = statusBarViewFactory;
        mStatusBarWindowView = statusBarWindowView;
        mNotificationStackScrollLayoutController = notificationStackScrollLayoutController;
        mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;

@@ -465,11 +464,10 @@ public class NotificationShadeWindowViewController {

    public void setStatusBarView(PhoneStatusBarView statusBarView) {
        mStatusBarView = statusBarView;
        if (statusBarView != null && mStatusBarViewFactory != null) {
        if (statusBarView != null) {
            mBarTransitions = new PhoneStatusBarTransitions(
                    statusBarView,
                    mStatusBarViewFactory.getStatusBarWindowView()
                            .findViewById(R.id.status_bar_container));
                    mStatusBarWindowView.findViewById(R.id.status_bar_container));
        }
    }

+6 −9
Original line number Diff line number Diff line
@@ -194,7 +194,6 @@ 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.SuperStatusBarViewFactory;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
@@ -458,7 +457,6 @@ public class StatusBar extends SystemUI implements
    private final Point mCurrentDisplaySize = new Point();

    protected NotificationShadeWindowView mNotificationShadeWindowView;
    protected StatusBarWindowView mPhoneStatusBarWindow;
    protected PhoneStatusBarView mStatusBarView;
    private PhoneStatusBarViewController mPhoneStatusBarViewController;
    private AuthRippleController mAuthRippleController;
@@ -496,7 +494,7 @@ public class StatusBar extends SystemUI implements
    private final StatusBarNotificationActivityStarter.Builder
            mStatusBarNotificationActivityStarterBuilder;
    private final ShadeController mShadeController;
    private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
    private final StatusBarWindowView mStatusBarWindowView;
    private final LightsOutNotifController mLightsOutNotifController;
    private final InitController mInitController;

@@ -750,7 +748,7 @@ public class StatusBar extends SystemUI implements
            StatusBarNotificationActivityStarter.Builder
                    statusBarNotificationActivityStarterBuilder,
            ShadeController shadeController,
            SuperStatusBarViewFactory superStatusBarViewFactory,
            StatusBarWindowView statusBarWindowView,
            StatusBarKeyguardViewManager statusBarKeyguardViewManager,
            ViewMediatorCallback viewMediatorCallback,
            InitController initController,
@@ -845,7 +843,7 @@ public class StatusBar extends SystemUI implements
        mSplitScreenOptional = splitScreenOptional;
        mStatusBarNotificationActivityStarterBuilder = statusBarNotificationActivityStarterBuilder;
        mShadeController = shadeController;
        mSuperStatusBarViewFactory = superStatusBarViewFactory;
        mStatusBarWindowView = statusBarWindowView;
        mLightsOutNotifController =  lightsOutNotifController;
        mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
        mKeyguardViewMediatorCallback = viewMediatorCallback;
@@ -1119,7 +1117,7 @@ public class StatusBar extends SystemUI implements
        // Allow plugins to reference DarkIconDispatcher and StatusBarStateController
        mPluginDependencyProvider.allowPluginDependency(DarkIconDispatcher.class);
        mPluginDependencyProvider.allowPluginDependency(StatusBarStateController.class);
        FragmentHostManager.get(mPhoneStatusBarWindow)
        FragmentHostManager.get(mStatusBarWindowView)
                .addTagListener(CollapsedStatusBarFragment.TAG, (tag, fragment) -> {
                    CollapsedStatusBarFragment statusBarFragment =
                            (CollapsedStatusBarFragment) fragment;
@@ -1530,7 +1528,6 @@ public class StatusBar extends SystemUI implements
        mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView);
        mNotificationShadeWindowViewController.setupExpandedStatusBar();
        mStatusBarWindowController = statusBarComponent.getStatusBarWindowController();
        mPhoneStatusBarWindow = mSuperStatusBarViewFactory.getStatusBarWindowView();
        mNotificationPanelViewController = statusBarComponent.getNotificationPanelViewController();
        statusBarComponent.getLockIconViewController().init();
        mStackScrollerController = statusBarComponent.getNotificationStackScrollLayoutController();
@@ -1611,7 +1608,7 @@ public class StatusBar extends SystemUI implements
    }

    public StatusBarWindowView getStatusBarWindow() {
        return mPhoneStatusBarWindow;
        return mStatusBarWindowView;
    }

    public NotificationShadeWindowViewController getNotificationShadeWindowViewController() {
@@ -2564,7 +2561,7 @@ public class StatusBar extends SystemUI implements
    private ActivityLaunchAnimator.Controller wrapAnimationController(
            ActivityLaunchAnimator.Controller animationController, boolean dismissShade) {
        View rootView = animationController.getLaunchContainer().getRootView();
        if (rootView == mSuperStatusBarViewFactory.getStatusBarWindowView()) {
        if (rootView == mStatusBarWindowView) {
            // We are animating a view in the status bar. We have to make sure that the status bar
            // window matches the full screen during the animation and that we are expanding the
            // view below the other status bar text.
Loading