Merge "Make LayoutInflation a separate injectable class"
This commit is contained in:
@@ -92,6 +92,7 @@ import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
|
||||
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.VibratorHelper;
|
||||
import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
|
||||
@@ -131,7 +132,6 @@ import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.systemui.statusbar.policy.RemoteInputUriController;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.util.InjectionInflationController;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
@@ -244,7 +244,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
StatusBarIconController statusBarIconController,
|
||||
DozeLog dozeLog,
|
||||
InjectionInflationController injectionInflationController,
|
||||
PulseExpansionHandler pulseExpansionHandler,
|
||||
NotificationWakeUpCoordinator notificationWakeUpCoordinator,
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
@@ -303,6 +302,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
||||
CommandQueue commandQueue,
|
||||
PluginManager pluginManager,
|
||||
RemoteInputUriController remoteInputUriController,
|
||||
SuperStatusBarViewFactory superStatusBarViewFactory,
|
||||
/* Car Settings injected components. */
|
||||
CarNavigationBarController carNavigationBarController) {
|
||||
super(
|
||||
@@ -313,7 +313,6 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
||||
keyguardUpdateMonitor,
|
||||
statusBarIconController,
|
||||
dozeLog,
|
||||
injectionInflationController,
|
||||
pulseExpansionHandler,
|
||||
notificationWakeUpCoordinator,
|
||||
keyguardBypassController,
|
||||
@@ -372,7 +371,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
|
||||
dozeScrimController,
|
||||
commandQueue,
|
||||
pluginManager,
|
||||
remoteInputUriController);
|
||||
remoteInputUriController,
|
||||
superStatusBarViewFactory);
|
||||
mScrimController = scrimController;
|
||||
mCarNavigationBarController = carNavigationBarController;
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
|
||||
import com.android.systemui.statusbar.PulseExpansionHandler;
|
||||
import com.android.systemui.statusbar.StatusBarDependenciesModule;
|
||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.VibratorHelper;
|
||||
import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
|
||||
@@ -85,7 +86,6 @@ import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.systemui.statusbar.policy.RemoteInputUriController;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.util.InjectionInflationController;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
@@ -112,7 +112,6 @@ public class CarStatusBarModule {
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
StatusBarIconController statusBarIconController,
|
||||
DozeLog dozeLog,
|
||||
InjectionInflationController injectionInflationController,
|
||||
PulseExpansionHandler pulseExpansionHandler,
|
||||
NotificationWakeUpCoordinator notificationWakeUpCoordinator,
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
@@ -171,6 +170,7 @@ public class CarStatusBarModule {
|
||||
CommandQueue commandQueue,
|
||||
PluginManager pluginManager,
|
||||
RemoteInputUriController remoteInputUriController,
|
||||
SuperStatusBarViewFactory superStatusBarViewFactory,
|
||||
CarNavigationBarController carNavigationBarController) {
|
||||
return new CarStatusBar(
|
||||
context,
|
||||
@@ -180,7 +180,6 @@ public class CarStatusBarModule {
|
||||
keyguardUpdateMonitor,
|
||||
statusBarIconController,
|
||||
dozeLog,
|
||||
injectionInflationController,
|
||||
pulseExpansionHandler,
|
||||
notificationWakeUpCoordinator,
|
||||
keyguardBypassController,
|
||||
@@ -239,6 +238,7 @@ public class CarStatusBarModule {
|
||||
commandQueue,
|
||||
pluginManager,
|
||||
remoteInputUriController,
|
||||
superStatusBarViewFactory,
|
||||
carNavigationBarController);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* 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 android.view.ViewGroup;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.phone.StatusBarWindowView;
|
||||
import com.android.systemui.util.InjectionInflationController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
/**
|
||||
* Creates a single instance of super_status_bar that can be shared across various system ui
|
||||
* objects.
|
||||
*/
|
||||
@Singleton
|
||||
public class SuperStatusBarViewFactory {
|
||||
|
||||
private final Context mContext;
|
||||
private final InjectionInflationController mInjectionInflationController;
|
||||
|
||||
private StatusBarWindowView mStatusBarWindowView;
|
||||
private NotificationShelf mNotificationShelf;
|
||||
|
||||
@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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the inflated {@link NotificationShelf} from
|
||||
* {@link R.layout#status_bar_notification_shelf}.
|
||||
* Returns a cached instance, if it has already been inflated.
|
||||
*
|
||||
* @param container the expected container to hold the {@link NotificationShelf}. The view
|
||||
* isn't immediately attached, but the layout params of this view is used
|
||||
* during inflation.
|
||||
*/
|
||||
public NotificationShelf getNotificationShelf(ViewGroup container) {
|
||||
if (mNotificationShelf != null) {
|
||||
return mNotificationShelf;
|
||||
}
|
||||
|
||||
mNotificationShelf = (NotificationShelf) mInjectionInflationController.injectable(
|
||||
LayoutInflater.from(mContext)).inflate(R.layout.status_bar_notification_shelf,
|
||||
container, /* attachToRoot= */ false);
|
||||
if (mNotificationShelf == null) {
|
||||
throw new IllegalStateException(
|
||||
"R.layout.status_bar_notification_shelf could not be properly inflated");
|
||||
}
|
||||
return mNotificationShelf;
|
||||
}
|
||||
}
|
||||
@@ -75,7 +75,6 @@ import android.content.pm.IPackageManager;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.PointF;
|
||||
import android.media.AudioAttributes;
|
||||
@@ -109,7 +108,6 @@ import android.view.Display;
|
||||
import android.view.IWindowManager;
|
||||
import android.view.InsetsState.InternalInsetType;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.RemoteAnimationAdapter;
|
||||
import android.view.ThreadedRenderer;
|
||||
@@ -201,6 +199,7 @@ import com.android.systemui.statusbar.NotificationViewHierarchyManager;
|
||||
import com.android.systemui.statusbar.PulseExpansionHandler;
|
||||
import com.android.systemui.statusbar.ScrimView;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.VibratorHelper;
|
||||
import com.android.systemui.statusbar.notification.ActivityLaunchAnimator;
|
||||
@@ -242,7 +241,6 @@ import com.android.systemui.statusbar.policy.UserInfoController;
|
||||
import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.util.InjectionInflationController;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
@@ -363,8 +361,6 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
@Nullable
|
||||
private final KeyguardLiftController mKeyguardLiftController;
|
||||
|
||||
private int mNaturalBarHeight = -1;
|
||||
|
||||
private final Point mCurrentDisplaySize = new Point();
|
||||
|
||||
protected StatusBarWindowViewController mStatusBarWindowViewController;
|
||||
@@ -383,7 +379,6 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
private final FeatureFlags mFeatureFlags;
|
||||
private final StatusBarIconController mIconController;
|
||||
private final DozeLog mDozeLog;
|
||||
private final InjectionInflationController mInjectionInflater;
|
||||
private final PulseExpansionHandler mPulseExpansionHandler;
|
||||
private final NotificationWakeUpCoordinator mWakeUpCoordinator;
|
||||
private final KeyguardBypassController mKeyguardBypassController;
|
||||
@@ -402,6 +397,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
private final Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy;
|
||||
private final PluginManager mPluginManager;
|
||||
private final RemoteInputUriController mRemoteInputUriController;
|
||||
private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
|
||||
// expanded notifications
|
||||
protected NotificationPanelView mNotificationPanel; // the sliding/resizing panel within the notification window
|
||||
@@ -646,7 +642,6 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
StatusBarIconController statusBarIconController,
|
||||
DozeLog dozeLog,
|
||||
InjectionInflationController injectionInflationController,
|
||||
PulseExpansionHandler pulseExpansionHandler,
|
||||
NotificationWakeUpCoordinator notificationWakeUpCoordinator,
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
@@ -705,7 +700,8 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
DozeScrimController dozeScrimController,
|
||||
CommandQueue commandQueue,
|
||||
PluginManager pluginManager,
|
||||
RemoteInputUriController remoteInputUriController) {
|
||||
RemoteInputUriController remoteInputUriController,
|
||||
SuperStatusBarViewFactory superStatusBarViewFactory) {
|
||||
super(context);
|
||||
mFeatureFlags = featureFlags;
|
||||
mLightBarController = lightBarController;
|
||||
@@ -713,7 +709,6 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mIconController = statusBarIconController;
|
||||
mDozeLog = dozeLog;
|
||||
mInjectionInflater = injectionInflationController;
|
||||
mPulseExpansionHandler = pulseExpansionHandler;
|
||||
mWakeUpCoordinator = notificationWakeUpCoordinator;
|
||||
mKeyguardBypassController = keyguardBypassController;
|
||||
@@ -773,6 +768,8 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
mCommandQueue = commandQueue;
|
||||
mPluginManager = pluginManager;
|
||||
mRemoteInputUriController = remoteInputUriController;
|
||||
mSuperStatusBarViewFactory = superStatusBarViewFactory;
|
||||
|
||||
mBubbleExpandListener =
|
||||
(isExpanding, key) -> {
|
||||
mEntryManager.updateNotifications("onBubbleExpandChanged");
|
||||
@@ -1367,10 +1364,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
}
|
||||
|
||||
private void inflateShelf() {
|
||||
mNotificationShelf =
|
||||
(NotificationShelf) mInjectionInflater.injectable(
|
||||
LayoutInflater.from(mContext)).inflate(
|
||||
R.layout.status_bar_notification_shelf, mStackScroller, false);
|
||||
mNotificationShelf = mSuperStatusBarViewFactory.getNotificationShelf(mStackScroller);
|
||||
mNotificationShelf.setOnClickListener(mGoToLockedShadeListener);
|
||||
}
|
||||
|
||||
@@ -1428,10 +1422,8 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
}
|
||||
|
||||
protected void inflateStatusBarWindow(Context context) {
|
||||
mStatusBarWindow = (StatusBarWindowView) mInjectionInflater.injectable(
|
||||
LayoutInflater.from(context)).inflate(R.layout.super_status_bar, null);
|
||||
mStatusBarWindow = mSuperStatusBarViewFactory.getStatusBarWindowView();
|
||||
mStatusBarWindowViewController = mStatusBarWindowViewControllerBuilder
|
||||
.setStatusBarWindowView(mStatusBarWindow)
|
||||
.setShadeController(this)
|
||||
.build();
|
||||
}
|
||||
@@ -1469,12 +1461,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
}
|
||||
|
||||
public int getStatusBarHeight() {
|
||||
if (mNaturalBarHeight < 0) {
|
||||
final Resources res = mContext.getResources();
|
||||
mNaturalBarHeight =
|
||||
res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
|
||||
}
|
||||
return mNaturalBarHeight;
|
||||
return mStatusBarWindowController.getStatusBarHeight();
|
||||
}
|
||||
|
||||
protected boolean toggleSplitScreenMode(int metricsDockAction, int metricsUndockAction) {
|
||||
@@ -2648,7 +2635,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
|
||||
public void createAndAddWindows(@Nullable RegisterStatusBarResult result) {
|
||||
makeStatusBarView(result);
|
||||
mStatusBarWindowController.add(mStatusBarWindow, getStatusBarHeight());
|
||||
mStatusBarWindowController.attach();
|
||||
}
|
||||
|
||||
// called by makeStatusbar and also by PhoneStatusBarView
|
||||
@@ -2926,7 +2913,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
mQSPanel.updateResources();
|
||||
}
|
||||
|
||||
loadDimens();
|
||||
mStatusBarWindowController.refreshStatusBarHeight();
|
||||
|
||||
if (mStatusBarView != null) {
|
||||
mStatusBarView.updateResources();
|
||||
@@ -2939,19 +2926,6 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
}
|
||||
}
|
||||
|
||||
protected void loadDimens() {
|
||||
final Resources res = mContext.getResources();
|
||||
|
||||
int oldBarHeight = mNaturalBarHeight;
|
||||
mNaturalBarHeight = res.getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.status_bar_height);
|
||||
if (mStatusBarWindowController != null && mNaturalBarHeight != oldBarHeight) {
|
||||
mStatusBarWindowController.setBarHeight(mNaturalBarHeight);
|
||||
}
|
||||
|
||||
if (DEBUG) Log.v(TAG, "defineSlots");
|
||||
}
|
||||
|
||||
// Visibility reporting
|
||||
|
||||
protected void handleVisibleToUserChanged(boolean visibleToUser) {
|
||||
|
||||
@@ -49,6 +49,7 @@ import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
|
||||
import com.android.systemui.statusbar.PulseExpansionHandler;
|
||||
import com.android.systemui.statusbar.StatusBarDependenciesModule;
|
||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.VibratorHelper;
|
||||
import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
|
||||
@@ -71,7 +72,6 @@ import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.systemui.statusbar.policy.RemoteInputUriController;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.util.InjectionInflationController;
|
||||
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
@@ -98,7 +98,6 @@ public class StatusBarModule {
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
StatusBarIconController statusBarIconController,
|
||||
DozeLog dozeLog,
|
||||
InjectionInflationController injectionInflationController,
|
||||
PulseExpansionHandler pulseExpansionHandler,
|
||||
NotificationWakeUpCoordinator notificationWakeUpCoordinator,
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
@@ -157,7 +156,8 @@ public class StatusBarModule {
|
||||
DozeScrimController dozeScrimController,
|
||||
CommandQueue commandQueue,
|
||||
PluginManager pluginManager,
|
||||
RemoteInputUriController remoteInputUriController) {
|
||||
RemoteInputUriController remoteInputUriController,
|
||||
SuperStatusBarViewFactory superStatusBarViewFactory) {
|
||||
return new StatusBar(
|
||||
context,
|
||||
featureFlags,
|
||||
@@ -166,7 +166,6 @@ public class StatusBarModule {
|
||||
keyguardUpdateMonitor,
|
||||
statusBarIconController,
|
||||
dozeLog,
|
||||
injectionInflationController,
|
||||
pulseExpansionHandler,
|
||||
notificationWakeUpCoordinator,
|
||||
keyguardBypassController,
|
||||
@@ -225,6 +224,7 @@ public class StatusBarModule {
|
||||
dozeScrimController,
|
||||
commandQueue,
|
||||
pluginManager,
|
||||
remoteInputUriController);
|
||||
remoteInputUriController,
|
||||
superStatusBarViewFactory);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,11 +41,13 @@ import android.view.WindowManager.LayoutParams;
|
||||
import com.android.systemui.Dumpable;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dagger.qualifiers.MainResources;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
|
||||
import com.android.systemui.statusbar.RemoteInputController.Callback;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
|
||||
@@ -69,6 +71,7 @@ import javax.inject.Singleton;
|
||||
public class StatusBarWindowController implements Callback, Dumpable, ConfigurationListener {
|
||||
|
||||
private static final String TAG = "StatusBarWindowController";
|
||||
private static final boolean DEBUG = false;
|
||||
|
||||
private final Context mContext;
|
||||
private final WindowManager mWindowManager;
|
||||
@@ -83,7 +86,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
||||
private LayoutParams mLp;
|
||||
private boolean mHasTopUi;
|
||||
private boolean mHasTopUiChanged;
|
||||
private int mBarHeight;
|
||||
private int mBarHeight = -1;
|
||||
private float mScreenBrightnessDoze;
|
||||
private final State mCurrentState = new State();
|
||||
private OtherwisedCollapsedListener mListener;
|
||||
@@ -92,13 +95,17 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
||||
mCallbacks = Lists.newArrayList();
|
||||
|
||||
private final SysuiColorExtractor mColorExtractor;
|
||||
private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
private final Resources mResources;
|
||||
|
||||
@Inject
|
||||
public StatusBarWindowController(Context context, WindowManager windowManager,
|
||||
IActivityManager activityManager, DozeParameters dozeParameters,
|
||||
StatusBarStateController statusBarStateController,
|
||||
ConfigurationController configurationController,
|
||||
KeyguardBypassController keyguardBypassController, SysuiColorExtractor colorExtractor) {
|
||||
KeyguardBypassController keyguardBypassController, SysuiColorExtractor colorExtractor,
|
||||
SuperStatusBarViewFactory superStatusBarViewFactory,
|
||||
@MainResources Resources resources) {
|
||||
mContext = context;
|
||||
mWindowManager = windowManager;
|
||||
mActivityManager = activityManager;
|
||||
@@ -108,6 +115,15 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
||||
mLpChanged = new LayoutParams();
|
||||
mKeyguardBypassController = keyguardBypassController;
|
||||
mColorExtractor = colorExtractor;
|
||||
mSuperStatusBarViewFactory = superStatusBarViewFactory;
|
||||
mStatusBarView = mSuperStatusBarViewFactory.getStatusBarWindowView();
|
||||
mResources = resources;
|
||||
|
||||
if (mBarHeight < 0) {
|
||||
mBarHeight = mResources.getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.status_bar_height);
|
||||
}
|
||||
|
||||
mLockScreenDisplayTimeout = context.getResources()
|
||||
.getInteger(R.integer.config_lockScreenDisplayTimeout);
|
||||
((SysuiStatusBarStateController) statusBarStateController)
|
||||
@@ -149,20 +165,36 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
||||
|| res.getBoolean(R.bool.config_enableLockScreenRotation);
|
||||
}
|
||||
|
||||
public int getStatusBarHeight() {
|
||||
return mBarHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rereads the status_bar_height from configuration and reapplys the current state if the height
|
||||
* is different.
|
||||
*/
|
||||
public void refreshStatusBarHeight() {
|
||||
int heightFromConfig = mResources.getDimensionPixelSize(
|
||||
com.android.internal.R.dimen.status_bar_height);
|
||||
|
||||
if (mBarHeight != heightFromConfig) {
|
||||
mBarHeight = heightFromConfig;
|
||||
apply(mCurrentState);
|
||||
}
|
||||
|
||||
if (DEBUG) Log.v(TAG, "defineSlots");
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the status bar view to the window manager.
|
||||
*
|
||||
* @param statusBarView The view to add.
|
||||
* @param barHeight The height of the status bar in collapsed state.
|
||||
*/
|
||||
public void add(ViewGroup statusBarView, int barHeight) {
|
||||
|
||||
public void attach() {
|
||||
// Now that the status bar window encompasses the sliding panel and its
|
||||
// translucent backdrop, the entire thing is made TRANSLUCENT and is
|
||||
// hardware-accelerated.
|
||||
mLp = new LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
barHeight,
|
||||
mBarHeight,
|
||||
LayoutParams.TYPE_STATUS_BAR,
|
||||
LayoutParams.FLAG_NOT_FOCUSABLE
|
||||
| LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
|
||||
@@ -176,8 +208,6 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
||||
mLp.setTitle("StatusBar");
|
||||
mLp.packageName = mContext.getPackageName();
|
||||
mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||
mStatusBarView = statusBarView;
|
||||
mBarHeight = barHeight;
|
||||
mWindowManager.addView(mStatusBarView, mLp);
|
||||
mLpChanged.copyFrom(mLp);
|
||||
onThemeChanged();
|
||||
@@ -534,11 +564,6 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
|
||||
apply(mCurrentState);
|
||||
}
|
||||
|
||||
public void setBarHeight(int barHeight) {
|
||||
mBarHeight = barHeight;
|
||||
apply(mCurrentState);
|
||||
}
|
||||
|
||||
public void setForcePluginOpen(boolean forcePluginOpen) {
|
||||
mCurrentState.forcePluginOpen = forcePluginOpen;
|
||||
apply(mCurrentState);
|
||||
|
||||
@@ -43,6 +43,7 @@ import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.DragDownHelper;
|
||||
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
|
||||
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;
|
||||
@@ -492,7 +493,8 @@ public class StatusBarWindowViewController {
|
||||
private final DozeLog mDozeLog;
|
||||
private final DozeParameters mDozeParameters;
|
||||
private final CommandQueue mCommandQueue;
|
||||
private StatusBarWindowView mView;
|
||||
private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
private final StatusBarWindowView mView;
|
||||
|
||||
@Inject
|
||||
public Builder(
|
||||
@@ -510,7 +512,8 @@ public class StatusBarWindowViewController {
|
||||
StatusBarStateController statusBarStateController,
|
||||
DozeLog dozeLog,
|
||||
DozeParameters dozeParameters,
|
||||
CommandQueue commandQueue) {
|
||||
CommandQueue commandQueue,
|
||||
SuperStatusBarViewFactory superStatusBarViewFactory) {
|
||||
mInjectionInflationController = injectionInflationController;
|
||||
mCoordinator = coordinator;
|
||||
mPulseExpansionHandler = pulseExpansionHandler;
|
||||
@@ -526,14 +529,9 @@ public class StatusBarWindowViewController {
|
||||
mDozeLog = dozeLog;
|
||||
mDozeParameters = dozeParameters;
|
||||
mCommandQueue = commandQueue;
|
||||
}
|
||||
mSuperStatusBarViewFactory = superStatusBarViewFactory;
|
||||
|
||||
/**
|
||||
* Provide {@link StatusBarWindowView} to attach this controller to.
|
||||
*/
|
||||
public Builder setStatusBarWindowView(StatusBarWindowView view) {
|
||||
mView = view;
|
||||
return this;
|
||||
mView = mSuperStatusBarViewFactory.getStatusBarWindowView();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -46,18 +46,19 @@ import android.app.Notification;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.Icon;
|
||||
import android.hardware.face.FaceManager;
|
||||
import android.service.notification.ZenModeConfig;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
import android.testing.TestableLooper;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.internal.colorextraction.ColorExtractor;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SystemUIFactory;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
@@ -65,6 +66,7 @@ import com.android.systemui.statusbar.NotificationLockscreenUserManager;
|
||||
import com.android.systemui.statusbar.NotificationPresenter;
|
||||
import com.android.systemui.statusbar.NotificationRemoveInterceptor;
|
||||
import com.android.systemui.statusbar.NotificationTestHelper;
|
||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.notification.NotificationEntryListener;
|
||||
import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||
@@ -81,6 +83,7 @@ import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.util.InjectionInflationController;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -119,7 +122,6 @@ public class BubbleControllerTest extends SysuiTestCase {
|
||||
@Mock
|
||||
private KeyguardBypassController mKeyguardBypassController;
|
||||
|
||||
private FrameLayout mStatusBarView;
|
||||
@Captor
|
||||
private ArgumentCaptor<NotificationEntryListener> mEntryListenerCaptor;
|
||||
@Captor
|
||||
@@ -147,22 +149,28 @@ public class BubbleControllerTest extends SysuiTestCase {
|
||||
private SysuiColorExtractor mColorExtractor;
|
||||
@Mock
|
||||
ColorExtractor.GradientColors mGradientColors;
|
||||
@Mock
|
||||
private Resources mResources;
|
||||
|
||||
private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
private BubbleData mBubbleData;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mStatusBarView = new FrameLayout(mContext);
|
||||
mDependency.injectTestDependency(NotificationEntryManager.class, mNotificationEntryManager);
|
||||
mContext.addMockSystemService(FaceManager.class, mFaceManager);
|
||||
when(mColorExtractor.getNeutralColors()).thenReturn(mGradientColors);
|
||||
|
||||
mSuperStatusBarViewFactory = new SuperStatusBarViewFactory(mContext,
|
||||
new InjectionInflationController(SystemUIFactory.getInstance().getRootComponent()));
|
||||
|
||||
// Bubbles get added to status bar window view
|
||||
mStatusBarWindowController = new StatusBarWindowController(mContext, mWindowManager,
|
||||
mActivityManager, mDozeParameters, mStatusBarStateController,
|
||||
mConfigurationController, mKeyguardBypassController, mColorExtractor);
|
||||
mStatusBarWindowController.add(mStatusBarView, 120 /* height */);
|
||||
mConfigurationController, mKeyguardBypassController, mColorExtractor,
|
||||
mSuperStatusBarViewFactory, mResources);
|
||||
mStatusBarWindowController.attach();
|
||||
|
||||
// Need notifications for bubbles
|
||||
mNotificationTestHelper = new NotificationTestHelper(mContext, mDependency);
|
||||
|
||||
@@ -107,6 +107,7 @@ import com.android.systemui.statusbar.PulseExpansionHandler;
|
||||
import com.android.systemui.statusbar.RemoteInputController;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
|
||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
||||
import com.android.systemui.statusbar.VibratorHelper;
|
||||
import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
|
||||
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
|
||||
@@ -134,7 +135,6 @@ import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.systemui.statusbar.policy.RemoteInputUriController;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.util.InjectionInflationController;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -208,7 +208,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private PulseExpansionHandler mPulseExpansionHandler;
|
||||
@Mock private NotificationWakeUpCoordinator mNotificationWakeUpCoordinator;
|
||||
@Mock private KeyguardBypassController mKeyguardBypassController;
|
||||
@Mock private InjectionInflationController mInjectionInflationController;
|
||||
@Mock private DynamicPrivacyController mDynamicPrivacyController;
|
||||
@Mock private NewNotifPipeline mNewNotifPipeline;
|
||||
@Mock private ZenModeController mZenModeController;
|
||||
@@ -234,6 +233,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private KeyguardLiftController mKeyguardLiftController;
|
||||
@Mock private CommandQueue mCommandQueue;
|
||||
@Mock private PluginManager mPluginManager;
|
||||
@Mock private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
|
||||
@Before
|
||||
public void setup() throws Exception {
|
||||
@@ -309,7 +309,6 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mKeyguardUpdateMonitor,
|
||||
mStatusBarIconController,
|
||||
mDozeLog,
|
||||
mInjectionInflationController,
|
||||
mPulseExpansionHandler,
|
||||
mNotificationWakeUpCoordinator,
|
||||
mKeyguardBypassController,
|
||||
@@ -372,7 +371,8 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mDozeScrimController,
|
||||
mCommandQueue,
|
||||
mPluginManager,
|
||||
mRemoteInputUriController);
|
||||
mRemoteInputUriController,
|
||||
mSuperStatusBarViewFactory);
|
||||
|
||||
when(mStatusBarWindowView.findViewById(R.id.lock_icon_container)).thenReturn(
|
||||
mLockIconContainer);
|
||||
|
||||
@@ -25,9 +25,9 @@ import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.IActivityManager;
|
||||
import android.content.res.Resources;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
import android.testing.TestableLooper.RunWithLooper;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
@@ -35,6 +35,7 @@ import androidx.test.filters.SmallTest;
|
||||
import com.android.internal.colorextraction.ColorExtractor;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
|
||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
|
||||
@@ -52,13 +53,15 @@ public class StatusBarWindowControllerTest extends SysuiTestCase {
|
||||
|
||||
@Mock private WindowManager mWindowManager;
|
||||
@Mock private DozeParameters mDozeParameters;
|
||||
@Mock private ViewGroup mStatusBarView;
|
||||
@Mock private StatusBarWindowView mStatusBarView;
|
||||
@Mock private IActivityManager mActivityManager;
|
||||
@Mock private SysuiStatusBarStateController mStatusBarStateController;
|
||||
@Mock private ConfigurationController mConfigurationController;
|
||||
@Mock private KeyguardBypassController mKeyguardBypassController;
|
||||
@Mock private SysuiColorExtractor mColorExtractor;
|
||||
@Mock ColorExtractor.GradientColors mGradientColors;
|
||||
@Mock private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
@Mock private Resources mResources;
|
||||
|
||||
private StatusBarWindowController mStatusBarWindowController;
|
||||
|
||||
@@ -67,11 +70,14 @@ public class StatusBarWindowControllerTest extends SysuiTestCase {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
when(mDozeParameters.getAlwaysOn()).thenReturn(true);
|
||||
when(mColorExtractor.getNeutralColors()).thenReturn(mGradientColors);
|
||||
when(mSuperStatusBarViewFactory.getStatusBarWindowView()).thenReturn(mStatusBarView);
|
||||
|
||||
mStatusBarWindowController = new StatusBarWindowController(mContext, mWindowManager,
|
||||
mActivityManager, mDozeParameters, mStatusBarStateController,
|
||||
mConfigurationController, mKeyguardBypassController, mColorExtractor);
|
||||
mStatusBarWindowController.add(mStatusBarView, 100 /* height */);
|
||||
mConfigurationController, mKeyguardBypassController, mColorExtractor,
|
||||
mSuperStatusBarViewFactory, mResources);
|
||||
|
||||
mStatusBarWindowController.attach();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.DragDownHelper;
|
||||
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
|
||||
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;
|
||||
@@ -72,6 +73,7 @@ public class StatusBarWindowViewTest extends SysuiTestCase {
|
||||
@Mock private StatusBar mStatusBar;
|
||||
@Mock private DozeLog mDozeLog;
|
||||
@Mock private DozeParameters mDozeParameters;
|
||||
@Mock private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -82,6 +84,8 @@ public class StatusBarWindowViewTest extends SysuiTestCase {
|
||||
when(mStatusBar.isDozing()).thenReturn(false);
|
||||
mDependency.injectTestDependency(ShadeController.class, mShadeController);
|
||||
|
||||
when(mSuperStatusBarViewFactory.getStatusBarWindowView()).thenReturn(mView);
|
||||
|
||||
mController = new StatusBarWindowViewController.Builder(
|
||||
new InjectionInflationController(
|
||||
SystemUIFactory.getInstance().getRootComponent()),
|
||||
@@ -98,9 +102,9 @@ public class StatusBarWindowViewTest extends SysuiTestCase {
|
||||
mStatusBarStateController,
|
||||
mDozeLog,
|
||||
mDozeParameters,
|
||||
new CommandQueue(mContext))
|
||||
new CommandQueue(mContext),
|
||||
mSuperStatusBarViewFactory)
|
||||
.setShadeController(mShadeController)
|
||||
.setStatusBarWindowView(mView)
|
||||
.build();
|
||||
mController.setService(mStatusBar);
|
||||
mController.setDragDownHelper(mDragDownHelper);
|
||||
|
||||
Reference in New Issue
Block a user