Merge "[Status Bar Refactor] 2/3: Make StatusBarWindowView only accessible from its controller, instead of accessible to anyone via Dagger." into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
3f481ef0ba
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -1696,10 +1693,6 @@ public class StatusBar extends SystemUI implements
|
||||
return mNotificationShadeWindowView;
|
||||
}
|
||||
|
||||
public StatusBarWindowView getStatusBarWindow() {
|
||||
return mStatusBarWindowView;
|
||||
}
|
||||
|
||||
public NotificationShadeWindowViewController getNotificationShadeWindowViewController() {
|
||||
return mNotificationShadeWindowViewController;
|
||||
}
|
||||
@@ -2426,7 +2419,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",
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +99,6 @@ import com.android.systemui.statusbar.phone.StatusBarLocationPublisher;
|
||||
import com.android.systemui.statusbar.phone.StatusBarMoveFromCenterAnimationController;
|
||||
import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
|
||||
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBarWindowView;
|
||||
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
|
||||
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
|
||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager;
|
||||
@@ -207,7 +206,6 @@ public interface StatusBarPhoneModule {
|
||||
StatusBarNotificationActivityStarter.Builder
|
||||
statusBarNotificationActivityStarterBuilder,
|
||||
ShadeController shadeController,
|
||||
StatusBarWindowView statusBarWindowView,
|
||||
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
|
||||
ViewMediatorCallback viewMediatorCallback,
|
||||
InitController initController,
|
||||
@@ -311,7 +309,6 @@ public interface StatusBarPhoneModule {
|
||||
lightsOutNotifController,
|
||||
statusBarNotificationActivityStarterBuilder,
|
||||
shadeController,
|
||||
statusBarWindowView,
|
||||
statusBarKeyguardViewManager,
|
||||
viewMediatorCallback,
|
||||
initController,
|
||||
|
||||
@@ -91,7 +91,7 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase {
|
||||
@Mock private NotificationPanelViewController mNotificationPanelViewController;
|
||||
@Mock private NotificationStackScrollLayout mNotificationStackScrollLayout;
|
||||
@Mock private NotificationShadeDepthController mNotificationShadeDepthController;
|
||||
@Mock private StatusBarWindowView mStatusBarWindowView;
|
||||
@Mock private StatusBarWindowController mStatusBarWindowController;
|
||||
@Mock private NotificationShadeWindowController mNotificationShadeWindowController;
|
||||
@Mock private NotificationStackScrollLayoutController mNotificationStackScrollLayoutController;
|
||||
@Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
|
||||
@@ -137,7 +137,7 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase {
|
||||
mView,
|
||||
mNotificationPanelViewController,
|
||||
new PanelExpansionStateManager(),
|
||||
mStatusBarWindowView,
|
||||
mStatusBarWindowController,
|
||||
mNotificationStackScrollLayoutController,
|
||||
mStatusBarKeyguardViewManager,
|
||||
mLockIconViewController);
|
||||
|
||||
@@ -246,7 +246,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private StatusBarComponent mStatusBarComponent;
|
||||
@Mock private PluginManager mPluginManager;
|
||||
@Mock private LegacySplitScreen mLegacySplitScreen;
|
||||
@Mock private StatusBarWindowView mStatusBarWindowView;
|
||||
@Mock private LightsOutNotifController mLightsOutNotifController;
|
||||
@Mock private ViewMediatorCallback mViewMediatorCallback;
|
||||
@Mock private StatusBarTouchableRegionManager mStatusBarTouchableRegionManager;
|
||||
@@ -426,7 +425,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mLightsOutNotifController,
|
||||
mStatusBarNotificationActivityStarterBuilder,
|
||||
mShadeController,
|
||||
mStatusBarWindowView,
|
||||
mStatusBarKeyguardViewManager,
|
||||
mViewMediatorCallback,
|
||||
mInitController,
|
||||
|
||||
Reference in New Issue
Block a user