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

Commit a1bb44f4 authored by Caitlin Cassidy's avatar Caitlin Cassidy Committed by Automerger Merge Worker
Browse files

Merge "[Status Bar Refactor] 2/3: Make StatusBarWindowView only accessible...

Merge "[Status Bar Refactor] 2/3: Make StatusBarWindowView only accessible from its controller, instead of accessible to anyone via Dagger." into sc-v2-dev am: 3f481ef0

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16148664

Change-Id: I53e82a7847b793c82dff74c324d705db8e54530c
parents 2cbda411 3f481ef0
Loading
Loading
Loading
Loading
+0 −16
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.dagger;

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

import androidx.annotation.Nullable;

@@ -27,7 +26,6 @@ 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;
@@ -66,7 +64,6 @@ 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;
@@ -212,17 +209,4 @@ public abstract class SystemUIModule {
                groupManager, entryManager, notifPipeline, sysUiState, featureFlags, dumpManager,
                sysuiMainExecutor));
    }

    @Provides
    @SysUISingleton
    static StatusBarWindowView providesStatusBarWindowView(LayoutInflater layoutInflater) {
        StatusBarWindowView view =
                (StatusBarWindowView) layoutInflater.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;
    }
}
+1 −3
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import android.widget.FrameLayout
import com.android.systemui.R
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

/**
@@ -35,7 +34,6 @@ import javax.inject.Inject
 */
class SystemEventChipAnimationController @Inject constructor(
    private val context: Context,
    private val statusBarWindowView: StatusBarWindowView,
    private val statusBarWindowController: StatusBarWindowController,
    private val locationPublisher: StatusBarLocationPublisher
) : SystemStatusChipAnimationCallback {
@@ -126,7 +124,7 @@ class SystemEventChipAnimationController @Inject constructor(
        animationDotView = animationWindowView.findViewById(R.id.dot_view)
        val lp = FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT)
        lp.gravity = Gravity.END or Gravity.CENTER_VERTICAL
        statusBarWindowView.addView(animationWindowView, lp)
        statusBarWindowController.addViewToWindow(animationWindowView, lp)
    }

    private fun start() = if (animationWindowView.isLayoutRtl) right() else left()
+4 −4
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@ public class NotificationShadeWindowViewController {
    private final DockManager mDockManager;
    private final NotificationPanelViewController mNotificationPanelViewController;
    private final PanelExpansionStateManager mPanelExpansionStateManager;
    private final StatusBarWindowView mStatusBarWindowView;
    private final StatusBarWindowController mStatusBarWindowController;

    // Used for determining view / touch intersection
    private int[] mTempLocation = new int[2];
@@ -137,7 +137,7 @@ public class NotificationShadeWindowViewController {
            NotificationShadeWindowView notificationShadeWindowView,
            NotificationPanelViewController notificationPanelViewController,
            PanelExpansionStateManager panelExpansionStateManager,
            StatusBarWindowView statusBarWindowView,
            StatusBarWindowController statusBarWindowController,
            NotificationStackScrollLayoutController notificationStackScrollLayoutController,
            StatusBarKeyguardViewManager statusBarKeyguardViewManager,
            LockIconViewController lockIconViewController) {
@@ -162,7 +162,7 @@ public class NotificationShadeWindowViewController {
        mNotificationPanelViewController = notificationPanelViewController;
        mPanelExpansionStateManager = panelExpansionStateManager;
        mDepthController = depthController;
        mStatusBarWindowView = statusBarWindowView;
        mStatusBarWindowController = statusBarWindowController;
        mNotificationStackScrollLayoutController = notificationStackScrollLayoutController;
        mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
        mLockIconViewController = lockIconViewController;
@@ -500,7 +500,7 @@ public class NotificationShadeWindowViewController {
        if (statusBarView != null) {
            mBarTransitions = new PhoneStatusBarTransitions(
                    statusBarView,
                    mStatusBarWindowView.findViewById(R.id.status_bar_container));
                    mStatusBarWindowController.getBackgroundView());
        }
    }

+2 −9
Original line number Diff line number Diff line
@@ -505,7 +505,6 @@ public class StatusBar extends SystemUI implements
    private final StatusBarNotificationActivityStarter.Builder
            mStatusBarNotificationActivityStarterBuilder;
    private final ShadeController mShadeController;
    private final StatusBarWindowView mStatusBarWindowView;
    private final LightsOutNotifController mLightsOutNotifController;
    private final InitController mInitController;

@@ -770,7 +769,6 @@ public class StatusBar extends SystemUI implements
            StatusBarNotificationActivityStarter.Builder
                    statusBarNotificationActivityStarterBuilder,
            ShadeController shadeController,
            StatusBarWindowView statusBarWindowView,
            StatusBarKeyguardViewManager statusBarKeyguardViewManager,
            ViewMediatorCallback viewMediatorCallback,
            InitController initController,
@@ -876,7 +874,6 @@ public class StatusBar extends SystemUI implements
        mSplitScreenOptional = splitScreenOptional;
        mStatusBarNotificationActivityStarterBuilder = statusBarNotificationActivityStarterBuilder;
        mShadeController = shadeController;
        mStatusBarWindowView = statusBarWindowView;
        mLightsOutNotifController =  lightsOutNotifController;
        mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
        mKeyguardViewMediatorCallback = viewMediatorCallback;
@@ -1169,7 +1166,7 @@ public class StatusBar extends SystemUI implements
        // Allow plugins to reference DarkIconDispatcher and StatusBarStateController
        mPluginDependencyProvider.allowPluginDependency(DarkIconDispatcher.class);
        mPluginDependencyProvider.allowPluginDependency(StatusBarStateController.class);
        FragmentHostManager.get(mStatusBarWindowView)
        mStatusBarWindowController.getFragmentHostManager()
                .addTagListener(CollapsedStatusBarFragment.TAG, (tag, fragment) -> {
                    CollapsedStatusBarFragment statusBarFragment =
                            (CollapsedStatusBarFragment) fragment;
@@ -1697,10 +1694,6 @@ public class StatusBar extends SystemUI implements
        return mNotificationShadeWindowView;
    }

    public StatusBarWindowView getStatusBarWindow() {
        return mStatusBarWindowView;
    }

    public NotificationShadeWindowViewController getNotificationShadeWindowViewController() {
        return mNotificationShadeWindowViewController;
    }
@@ -2427,7 +2420,7 @@ public class StatusBar extends SystemUI implements
        pw.print("  mDozing="); pw.println(mDozing);
        pw.print("  mWallpaperSupported= "); pw.println(mWallpaperSupported);

        pw.println("  StatusBarWindowView: ");
        pw.println("  ShadeWindowView: ");
        if (mNotificationShadeWindowViewController != null) {
            mNotificationShadeWindowViewController.dump(fd, pw, args);
            dumpBarTransitions(pw, "PhoneStatusBarTransitions",
+33 −7
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.os.RemoteException;
import android.util.Log;
import android.view.Gravity;
import android.view.IWindowManager;
import android.view.LayoutInflater;
import android.view.Surface;
import android.view.View;
import android.view.ViewGroup;
@@ -47,6 +48,7 @@ import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.DelegateLaunchAnimatorController;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.fragments.FragmentHostManager;

import java.util.Optional;

@@ -68,7 +70,7 @@ public class StatusBarWindowController {
    private int mBarHeight = -1;
    private final State mCurrentState = new State();

    private final ViewGroup mStatusBarView;
    private final ViewGroup mStatusBarWindowView;
    // The container in which we should run launch animations started from the status bar and
    //   expanding into the opening window.
    private final ViewGroup mLaunchAnimationContainer;
@@ -80,15 +82,14 @@ public class StatusBarWindowController {
            Context context,
            WindowManager windowManager,
            IWindowManager iWindowManager,
            StatusBarWindowView statusBarWindowView,
            StatusBarContentInsetsProvider contentInsetsProvider,
            @Main Resources resources) {
        mContext = context;
        mWindowManager = windowManager;
        mIWindowManager = iWindowManager;
        mContentInsetsProvider = contentInsetsProvider;
        mStatusBarView = statusBarWindowView;
        mLaunchAnimationContainer = mStatusBarView.findViewById(
        mStatusBarWindowView = createWindowView(mContext);
        mLaunchAnimationContainer = mStatusBarWindowView.findViewById(
                R.id.status_bar_launch_animation_container);
        mLpChanged = new WindowManager.LayoutParams();
        mResources = resources;
@@ -126,13 +127,28 @@ public class StatusBarWindowController {
        // hardware-accelerated.
        mLp = getBarLayoutParams(mContext.getDisplay().getRotation());

        mWindowManager.addView(mStatusBarView, mLp);
        mWindowManager.addView(mStatusBarWindowView, mLp);
        mLpChanged.copyFrom(mLp);

        mContentInsetsProvider.addCallback(this::calculateStatusBarLocationsForAllRotations);
        calculateStatusBarLocationsForAllRotations();
    }

    /** Adds the given view to the status bar window view. */
    public void addViewToWindow(View view, ViewGroup.LayoutParams layoutParams) {
        mStatusBarWindowView.addView(view, layoutParams);
    }

    /** Returns the status bar window's background view. */
    public View getBackgroundView() {
        return mStatusBarWindowView.findViewById(R.id.status_bar_container);
    }

    /** Returns a fragment host manager for the status bar window view. */
    public FragmentHostManager getFragmentHostManager() {
        return FragmentHostManager.get(mStatusBarWindowView);
    }

    /**
     * Provides an updated animation controller if we're animating a view in the status bar.
     *
@@ -148,7 +164,7 @@ public class StatusBarWindowController {
     */
    public Optional<ActivityLaunchAnimator.Controller> wrapAnimationControllerIfInStatusBar(
            View rootView, ActivityLaunchAnimator.Controller animationController) {
        if (rootView != mStatusBarView) {
        if (rootView != mStatusBarWindowView) {
            return Optional.empty();
        }

@@ -278,7 +294,7 @@ public class StatusBarWindowController {
        applyForceStatusBarVisibleFlag(state);
        applyHeight(state);
        if (mLp != null && mLp.copyFrom(mLpChanged) != 0) {
            mWindowManager.updateViewLayout(mStatusBarView, mLp);
            mWindowManager.updateViewLayout(mStatusBarWindowView, mLp);
        }
    }

@@ -298,4 +314,14 @@ public class StatusBarWindowController {
            mLpChanged.privateFlags &= ~PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR;
        }
    }

    private ViewGroup createWindowView(Context context) {
        ViewGroup view = (ViewGroup) 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;
    }
}
Loading