diff options
11 files changed, 233 insertions, 52 deletions
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/log/ConstantStringsLogger.kt b/packages/SystemUI/plugin/src/com/android/systemui/plugins/log/ConstantStringsLogger.kt new file mode 100644 index 000000000000..f95b1874da36 --- /dev/null +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/log/ConstantStringsLogger.kt @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2022 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.plugins.log + +import com.google.errorprone.annotations.CompileTimeConstant + +/** + * Handy for adding basic logging with CompileTimeConstant strings - so logging with no variables. + * Most likely you want to delegate it to [ConstantStringsLoggerImpl]. + */ +interface ConstantStringsLogger { + fun v(@CompileTimeConstant msg: String) + + fun d(@CompileTimeConstant msg: String) + + fun w(@CompileTimeConstant msg: String) + + fun e(@CompileTimeConstant msg: String) +} diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/log/ConstantStringsLoggerImpl.kt b/packages/SystemUI/plugin/src/com/android/systemui/plugins/log/ConstantStringsLoggerImpl.kt new file mode 100644 index 000000000000..91b39e6fcc13 --- /dev/null +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/log/ConstantStringsLoggerImpl.kt @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2022 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.plugins.log + +import com.google.errorprone.annotations.CompileTimeConstant + +class ConstantStringsLoggerImpl(val buffer: LogBuffer, val tag: String) : ConstantStringsLogger { + override fun v(@CompileTimeConstant msg: String) = buffer.log(tag, LogLevel.VERBOSE, msg) + + override fun d(@CompileTimeConstant msg: String) = buffer.log(tag, LogLevel.DEBUG, msg) + + override fun w(@CompileTimeConstant msg: String) = buffer.log(tag, LogLevel.WARNING, msg) + + override fun e(@CompileTimeConstant msg: String) = buffer.log(tag, LogLevel.ERROR, msg) +} diff --git a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt index 886d110de369..b84fb08d53a8 100644 --- a/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt +++ b/packages/SystemUI/src/com/android/keyguard/logging/KeyguardLogger.kt @@ -17,12 +17,13 @@ package com.android.keyguard.logging import com.android.systemui.log.dagger.KeyguardLog +import com.android.systemui.plugins.log.ConstantStringsLogger +import com.android.systemui.plugins.log.ConstantStringsLoggerImpl import com.android.systemui.plugins.log.LogBuffer import com.android.systemui.plugins.log.LogLevel.DEBUG import com.android.systemui.plugins.log.LogLevel.ERROR import com.android.systemui.plugins.log.LogLevel.INFO import com.android.systemui.plugins.log.LogLevel.VERBOSE -import com.android.systemui.plugins.log.LogLevel.WARNING import com.google.errorprone.annotations.CompileTimeConstant import javax.inject.Inject @@ -33,14 +34,8 @@ private const val TAG = "KeyguardLog" * temporary logs or logs for smaller classes when creating whole new [LogBuffer] wrapper might be * an overkill. */ -class KeyguardLogger @Inject constructor(@KeyguardLog private val buffer: LogBuffer) { - fun d(@CompileTimeConstant msg: String) = buffer.log(TAG, DEBUG, msg) - - fun e(@CompileTimeConstant msg: String) = buffer.log(TAG, ERROR, msg) - - fun v(@CompileTimeConstant msg: String) = buffer.log(TAG, VERBOSE, msg) - - fun w(@CompileTimeConstant msg: String) = buffer.log(TAG, WARNING, msg) +class KeyguardLogger @Inject constructor(@KeyguardLog private val buffer: LogBuffer) : + ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) { fun logException(ex: Exception, @CompileTimeConstant logMsg: String) { buffer.log(TAG, ERROR, {}, { logMsg }, exception = ex) diff --git a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java index e3730af5a1b5..bc29858c5b92 100644 --- a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java +++ b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java @@ -94,6 +94,14 @@ public class LogModule { return factory.create("LSShadeTransitionLog", 50); } + /** Provides a logging buffer for shade window messages. */ + @Provides + @SysUISingleton + @ShadeWindowLog + public static LogBuffer provideShadeWindowLogBuffer(LogBufferFactory factory) { + return factory.create("ShadeWindowLog", 600, false); + } + /** Provides a logging buffer for Shade messages. */ @Provides @SysUISingleton diff --git a/packages/SystemUI/src/com/android/systemui/log/dagger/ShadeWindowLog.java b/packages/SystemUI/src/com/android/systemui/log/dagger/ShadeWindowLog.java new file mode 100644 index 000000000000..1d2b68c3bf46 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/log/dagger/ShadeWindowLog.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2022 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.log.dagger; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import com.android.systemui.plugins.log.LogBuffer; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; + +import javax.inject.Qualifier; + +/** A {@link LogBuffer} for shade window modification messages. */ +@Qualifier +@Documented +@Retention(RUNTIME) +public @interface ShadeWindowLog { +} diff --git a/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt b/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt index d682853f5fef..9f376ae75efe 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt @@ -18,12 +18,13 @@ package com.android.systemui.qs.logging import android.service.quicksettings.Tile import com.android.systemui.log.dagger.QSLog +import com.android.systemui.plugins.log.ConstantStringsLogger +import com.android.systemui.plugins.log.ConstantStringsLoggerImpl import com.android.systemui.plugins.log.LogBuffer import com.android.systemui.plugins.log.LogLevel import com.android.systemui.plugins.log.LogLevel.DEBUG import com.android.systemui.plugins.log.LogLevel.ERROR import com.android.systemui.plugins.log.LogLevel.VERBOSE -import com.android.systemui.plugins.log.LogLevel.WARNING import com.android.systemui.plugins.log.LogMessage import com.android.systemui.plugins.qs.QSTile import com.android.systemui.statusbar.StatusBarState @@ -32,17 +33,8 @@ import javax.inject.Inject private const val TAG = "QSLog" -class QSLogger @Inject constructor( - @QSLog private val buffer: LogBuffer -) { - - fun d(@CompileTimeConstant msg: String) = buffer.log(TAG, DEBUG, msg) - - fun e(@CompileTimeConstant msg: String) = buffer.log(TAG, ERROR, msg) - - fun v(@CompileTimeConstant msg: String) = buffer.log(TAG, VERBOSE, msg) - - fun w(@CompileTimeConstant msg: String) = buffer.log(TAG, WARNING, msg) +class QSLogger @Inject constructor(@QSLog private val buffer: LogBuffer) : + ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) { fun logException(@CompileTimeConstant logMsg: String, ex: Exception) { buffer.log(TAG, ERROR, {}, { logMsg }, exception = ex) diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java index 8698c0462e8d..8314ec713ccb 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowControllerImpl.java @@ -71,7 +71,6 @@ import com.android.systemui.statusbar.policy.KeyguardStateController; import java.io.PrintWriter; import java.lang.ref.Reference; import java.lang.ref.WeakReference; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -96,6 +95,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW private final IActivityManager mActivityManager; private final DozeParameters mDozeParameters; private final KeyguardStateController mKeyguardStateController; + private final ShadeWindowLogger mLogger; private final LayoutParams mLpChanged; private final long mLockScreenDisplayTimeout; private final float mKeyguardPreferredRefreshRate; // takes precedence over max @@ -137,12 +137,14 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW KeyguardStateController keyguardStateController, ScreenOffAnimationController screenOffAnimationController, AuthController authController, - ShadeExpansionStateManager shadeExpansionStateManager) { + ShadeExpansionStateManager shadeExpansionStateManager, + ShadeWindowLogger logger) { mContext = context; mWindowManager = windowManager; mActivityManager = activityManager; mDozeParameters = dozeParameters; mKeyguardStateController = keyguardStateController; + mLogger = logger; mScreenBrightnessDoze = mDozeParameters.getScreenBrightnessDoze(); mLpChanged = new LayoutParams(); mKeyguardViewMediator = keyguardViewMediator; @@ -396,11 +398,13 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW private void applyVisibility(State state) { boolean visible = isExpanded(state); + mLogger.logApplyVisibility(visible); if (state.mForcePluginOpen) { if (mListener != null) { mListener.setWouldOtherwiseCollapse(visible); } visible = true; + mLogger.d("Visibility forced to be true"); } if (mNotificationShadeView != null) { if (visible) { @@ -463,6 +467,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW private void applyWindowLayoutParams() { if (mDeferWindowLayoutParams == 0 && mLp != null && mLp.copyFrom(mLpChanged) != 0) { + mLogger.logApplyingWindowLayoutParams(mLp); Trace.beginSection("updateViewLayout"); mWindowManager.updateViewLayout(mNotificationShadeView, mLp); Trace.endSection(); @@ -478,6 +483,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW } private void apply(State state) { + mLogger.logNewState(state); applyKeyguardFlags(state); applyFocusableFlag(state); applyForceShowNavigationFlag(state); @@ -587,6 +593,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW && mCurrentState.mNotificationShadeFocusable == visible) { return; } + mLogger.logShadeVisibleAndFocusable(visible); mCurrentState.mPanelVisible = visible; mCurrentState.mNotificationShadeFocusable = visible; apply(mCurrentState); @@ -594,6 +601,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW @Override public void setNotificationShadeFocusable(boolean focusable) { + mLogger.logShadeFocusable(focusable); mCurrentState.mNotificationShadeFocusable = focusable; apply(mCurrentState); } @@ -730,16 +738,15 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW apply(mCurrentState); } - private final Set<Object> mForceOpenTokens = new HashSet<>(); @Override public void setForcePluginOpen(boolean forceOpen, Object token) { if (forceOpen) { - mForceOpenTokens.add(token); + mCurrentState.mForceOpenTokens.add(token); } else { - mForceOpenTokens.remove(token); + mCurrentState.mForceOpenTokens.remove(token); } final boolean previousForceOpenState = mCurrentState.mForcePluginOpen; - mCurrentState.mForcePluginOpen = !mForceOpenTokens.isEmpty(); + mCurrentState.mForcePluginOpen = !mCurrentState.mForceOpenTokens.isEmpty(); if (previousForceOpenState != mCurrentState.mForcePluginOpen) { apply(mCurrentState); if (mForcePluginOpenListener != null) { @@ -864,6 +871,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW boolean mWallpaperSupportsAmbientMode; boolean mNotTouchable; Set<String> mComponentsForcingTopUi = new HashSet<>(); + Set<Object> mForceOpenTokens = new HashSet<>(); /** * The status bar state from {@link CentralSurfaces}. @@ -882,28 +890,37 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW @Override public String toString() { - StringBuilder result = new StringBuilder(); - String newLine = "\n"; - result.append("Window State {"); - result.append(newLine); - - Field[] fields = this.getClass().getDeclaredFields(); - - // Print field names paired with their values - for (Field field : fields) { - result.append(" "); - try { - result.append(field.getName()); - result.append(": "); - //requires access to private field: - result.append(field.get(this)); - } catch (IllegalAccessException ex) { - } - result.append(newLine); - } - result.append("}"); - - return result.toString(); + return new StringBuilder() + .append("State{") + .append(" mKeyguardShowing=").append(mKeyguardShowing) + .append(", mKeyguardOccluded=").append(mKeyguardOccluded) + .append(", mKeyguardNeedsInput=").append(mKeyguardNeedsInput) + .append(", mPanelVisible=").append(mPanelVisible) + .append(", mPanelExpanded=").append(mPanelExpanded) + .append(", mNotificationShadeFocusable=").append(mNotificationShadeFocusable) + .append(", mBouncerShowing=").append(mBouncerShowing) + .append(", mKeyguardFadingAway=").append(mKeyguardFadingAway) + .append(", mKeyguardGoingAway=").append(mKeyguardGoingAway) + .append(", mQsExpanded=").append(mQsExpanded) + .append(", mHeadsUpShowing=").append(mHeadsUpShowing) + .append(", mLightRevealScrimOpaque=").append(mLightRevealScrimOpaque) + .append(", mForceCollapsed=").append(mForceCollapsed) + .append(", mForceDozeBrightness=").append(mForceDozeBrightness) + .append(", mForceUserActivity=").append(mForceUserActivity) + .append(", mLaunchingActivity=").append(mLaunchingActivity) + .append(", mBackdropShowing=").append(mBackdropShowing) + .append(", mWallpaperSupportsAmbientMode=") + .append(mWallpaperSupportsAmbientMode) + .append(", mNotTouchable=").append(mNotTouchable) + .append(", mComponentsForcingTopUi=").append(mComponentsForcingTopUi) + .append(", mForceOpenTokens=").append(mForceOpenTokens) + .append(", mStatusBarState=").append(mStatusBarState) + .append(", mRemoteInputActive=").append(mRemoteInputActive) + .append(", mForcePluginOpen=").append(mForcePluginOpen) + .append(", mDozing=").append(mDozing) + .append(", mScrimsVisibility=").append(mScrimsVisibility) + .append(", mBackgroundBlurRadius=").append(mBackgroundBlurRadius) + .append('}').toString(); } } diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeWindowLogger.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeWindowLogger.kt new file mode 100644 index 000000000000..c6a6e875b82d --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeWindowLogger.kt @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2022 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.shade + +import android.view.WindowManager +import com.android.systemui.log.dagger.ShadeWindowLog +import com.android.systemui.plugins.log.ConstantStringsLogger +import com.android.systemui.plugins.log.ConstantStringsLoggerImpl +import com.android.systemui.plugins.log.LogBuffer +import com.android.systemui.plugins.log.LogLevel +import com.android.systemui.plugins.log.LogLevel.DEBUG +import com.android.systemui.plugins.log.LogMessage +import javax.inject.Inject + +private const val TAG = "systemui.shadewindow" + +class ShadeWindowLogger @Inject constructor(@ShadeWindowLog private val buffer: LogBuffer) : + ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) { + + fun logApplyingWindowLayoutParams(lp: WindowManager.LayoutParams) { + log(DEBUG, { str1 = lp.toString() }, { "Applying new window layout params: $str1" }) + } + + fun logNewState(state: Any) { + log(DEBUG, { str1 = state.toString() }, { "Applying new state: $str1" }) + } + + private inline fun log( + logLevel: LogLevel, + initializer: LogMessage.() -> Unit, + noinline printer: LogMessage.() -> String + ) { + buffer.log(TAG, logLevel, initializer, printer) + } + + fun logApplyVisibility(visible: Boolean) { + log(DEBUG, { bool1 = visible }, { "Updating visibility, should be visible : $bool1" }) + } + + fun logShadeVisibleAndFocusable(visible: Boolean) { + log( + DEBUG, + { bool1 = visible }, + { "Updating shade, should be visible and focusable: $bool1" } + ) + } + + fun logShadeFocusable(focusable: Boolean) { + log(DEBUG, { bool1 = focusable }, { "Updating shade, should be focusable : $bool1" }) + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java index 804960dc3b18..c38e27aa76bb 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java @@ -70,6 +70,7 @@ import com.android.systemui.settings.UserTracker; import com.android.systemui.shade.NotificationShadeWindowControllerImpl; import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.ShadeExpansionStateManager; +import com.android.systemui.shade.ShadeWindowLogger; import com.android.systemui.statusbar.NotificationShadeDepthController; import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.SysuiStatusBarStateController; @@ -132,6 +133,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { private @Mock SysuiColorExtractor mColorExtractor; private @Mock AuthController mAuthController; private @Mock ShadeExpansionStateManager mShadeExpansionStateManager; + private @Mock ShadeWindowLogger mShadeWindowLogger; private DeviceConfigProxy mDeviceConfig = new DeviceConfigProxyFake(); private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock()); @@ -155,7 +157,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController, mConfigurationController, mViewMediator, mKeyguardBypassController, mColorExtractor, mDumpManager, mKeyguardStateController, - mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager); + mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager, + mShadeWindowLogger); createAndStartViewMediator(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java index d7d17b5132cb..08a9c9664ae0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java @@ -89,6 +89,7 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { @Mock private ScreenOffAnimationController mScreenOffAnimationController; @Mock private AuthController mAuthController; @Mock private ShadeExpansionStateManager mShadeExpansionStateManager; + @Mock private ShadeWindowLogger mShadeWindowLogger; @Captor private ArgumentCaptor<WindowManager.LayoutParams> mLayoutParameters; private NotificationShadeWindowControllerImpl mNotificationShadeWindowController; @@ -104,7 +105,8 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase { mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController, mConfigurationController, mKeyguardViewMediator, mKeyguardBypassController, mColorExtractor, mDumpManager, mKeyguardStateController, - mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager) { + mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager, + mShadeWindowLogger) { @Override protected boolean isDebuggable() { return false; diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java index 2e06cc544c63..388c51f04e13 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -94,6 +94,7 @@ import com.android.systemui.shade.NotificationShadeWindowControllerImpl; import com.android.systemui.shade.NotificationShadeWindowView; import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.ShadeExpansionStateManager; +import com.android.systemui.shade.ShadeWindowLogger; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.RankingBuilder; @@ -273,6 +274,8 @@ public class BubblesTest extends SysuiTestCase { private Optional<OneHandedController> mOneHandedOptional; @Mock private UserManager mUserManager; + @Mock + private ShadeWindowLogger mShadeWindowLogger; private TestableBubblePositioner mPositioner; @@ -297,7 +300,8 @@ public class BubblesTest extends SysuiTestCase { mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController, mConfigurationController, mKeyguardViewMediator, mKeyguardBypassController, mColorExtractor, mDumpManager, mKeyguardStateController, - mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager); + mScreenOffAnimationController, mAuthController, mShadeExpansionStateManager, + mShadeWindowLogger); mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView); mNotificationShadeWindowController.attach(); |