Merge "[Disable Flags] Add disable flag logging to CollapsedStatusBarFragment." into sc-v2-dev am: 1c3b83a563
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15686519 Change-Id: Id9dcc46c3c09b3ec7eb577a168623257d137d4be
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* 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.log.dagger;
|
||||||
|
|
||||||
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
|
|
||||||
|
import com.android.systemui.log.LogBuffer;
|
||||||
|
|
||||||
|
import java.lang.annotation.Documented;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
|
||||||
|
import javax.inject.Qualifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A {@link LogBuffer} for
|
||||||
|
* {@link com.android.systemui.statusbar.phone.CollapsedStatusBarFragment}-related messages.
|
||||||
|
*/
|
||||||
|
@Qualifier
|
||||||
|
@Documented
|
||||||
|
@Retention(RUNTIME)
|
||||||
|
public @interface CollapsedSbFragmentLog {
|
||||||
|
}
|
||||||
@@ -100,6 +100,17 @@ public class LogModule {
|
|||||||
return factory.create("PrivacyLog", 100);
|
return factory.create("PrivacyLog", 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a logging buffer for
|
||||||
|
* {@link com.android.systemui.statusbar.phone.CollapsedStatusBarFragment}.
|
||||||
|
*/
|
||||||
|
@Provides
|
||||||
|
@SysUISingleton
|
||||||
|
@CollapsedSbFragmentLog
|
||||||
|
public static LogBuffer provideCollapsedSbFragmentLogBuffer(LogBufferFactory factory) {
|
||||||
|
return factory.create("CollapsedSbFragmentLog", 20);
|
||||||
|
}
|
||||||
|
|
||||||
/** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
|
/** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
|
||||||
@Provides
|
@Provides
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import com.android.systemui.animation.Interpolators;
|
|||||||
import com.android.systemui.flags.FeatureFlags;
|
import com.android.systemui.flags.FeatureFlags;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
|
import com.android.systemui.statusbar.DisableFlagsLogger.DisableState;
|
||||||
import com.android.systemui.statusbar.OperatorNameView;
|
import com.android.systemui.statusbar.OperatorNameView;
|
||||||
import com.android.systemui.statusbar.OperatorNameViewController;
|
import com.android.systemui.statusbar.OperatorNameViewController;
|
||||||
import com.android.systemui.statusbar.StatusBarState;
|
import com.android.systemui.statusbar.StatusBarState;
|
||||||
@@ -93,6 +94,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
|||||||
private Lazy<Optional<StatusBar>> mStatusBarOptionalLazy;
|
private Lazy<Optional<StatusBar>> mStatusBarOptionalLazy;
|
||||||
private DarkIconManager mDarkIconManager;
|
private DarkIconManager mDarkIconManager;
|
||||||
private final CommandQueue mCommandQueue;
|
private final CommandQueue mCommandQueue;
|
||||||
|
private final CollapsedStatusBarFragmentLogger mCollapsedStatusBarFragmentLogger;
|
||||||
private final OperatorNameViewController.Factory mOperatorNameViewControllerFactory;
|
private final OperatorNameViewController.Factory mOperatorNameViewControllerFactory;
|
||||||
private final OngoingCallController mOngoingCallController;
|
private final OngoingCallController mOngoingCallController;
|
||||||
private final SystemStatusAnimationScheduler mAnimationScheduler;
|
private final SystemStatusAnimationScheduler mAnimationScheduler;
|
||||||
@@ -131,6 +133,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
|||||||
NetworkController networkController,
|
NetworkController networkController,
|
||||||
StatusBarStateController statusBarStateController,
|
StatusBarStateController statusBarStateController,
|
||||||
CommandQueue commandQueue,
|
CommandQueue commandQueue,
|
||||||
|
CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger,
|
||||||
OperatorNameViewController.Factory operatorNameViewControllerFactory
|
OperatorNameViewController.Factory operatorNameViewControllerFactory
|
||||||
) {
|
) {
|
||||||
mOngoingCallController = ongoingCallController;
|
mOngoingCallController = ongoingCallController;
|
||||||
@@ -144,6 +147,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
|||||||
mNetworkController = networkController;
|
mNetworkController = networkController;
|
||||||
mStatusBarStateController = statusBarStateController;
|
mStatusBarStateController = statusBarStateController;
|
||||||
mCommandQueue = commandQueue;
|
mCommandQueue = commandQueue;
|
||||||
|
mCollapsedStatusBarFragmentLogger = collapsedStatusBarFragmentLogger;
|
||||||
mOperatorNameViewControllerFactory = operatorNameViewControllerFactory;
|
mOperatorNameViewControllerFactory = operatorNameViewControllerFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,7 +248,14 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
|||||||
if (displayId != getContext().getDisplayId()) {
|
if (displayId != getContext().getDisplayId()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int state1BeforeAdjustment = state1;
|
||||||
state1 = adjustDisableFlags(state1);
|
state1 = adjustDisableFlags(state1);
|
||||||
|
|
||||||
|
mCollapsedStatusBarFragmentLogger.logDisableFlagChange(
|
||||||
|
new DisableState(state1BeforeAdjustment, state2),
|
||||||
|
new DisableState(state1, state2));
|
||||||
|
|
||||||
final int old1 = mDisabled1;
|
final int old1 = mDisabled1;
|
||||||
final int diff1 = state1 ^ old1;
|
final int diff1 = state1 ^ old1;
|
||||||
final int old2 = mDisabled2;
|
final int old2 = mDisabled2;
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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.phone
|
||||||
|
|
||||||
|
import com.android.systemui.log.LogBuffer
|
||||||
|
import com.android.systemui.log.LogLevel
|
||||||
|
import com.android.systemui.log.dagger.CollapsedSbFragmentLog
|
||||||
|
import com.android.systemui.statusbar.DisableFlagsLogger
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
/** Used by [CollapsedStatusBarFragment] to log messages to a [LogBuffer]. */
|
||||||
|
class CollapsedStatusBarFragmentLogger @Inject constructor(
|
||||||
|
@CollapsedSbFragmentLog private val buffer: LogBuffer,
|
||||||
|
private val disableFlagsLogger: DisableFlagsLogger,
|
||||||
|
) {
|
||||||
|
|
||||||
|
/** Logs a string representing the old and new disable flag states to [buffer]. */
|
||||||
|
fun logDisableFlagChange(
|
||||||
|
oldState: DisableFlagsLogger.DisableState,
|
||||||
|
newState: DisableFlagsLogger.DisableState) {
|
||||||
|
buffer.log(
|
||||||
|
TAG,
|
||||||
|
LogLevel.INFO,
|
||||||
|
{
|
||||||
|
int1 = oldState.disable1
|
||||||
|
int2 = oldState.disable2
|
||||||
|
long1 = newState.disable1.toLong()
|
||||||
|
long2 = newState.disable2.toLong()
|
||||||
|
},
|
||||||
|
{
|
||||||
|
disableFlagsLogger.getDisableFlagsString(
|
||||||
|
DisableFlagsLogger.DisableState(int1, int2),
|
||||||
|
DisableFlagsLogger.DisableState(long1.toInt(), long2.toInt())
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private const val TAG = "CollapsedSbFragment"
|
||||||
@@ -454,6 +454,7 @@ public class StatusBar extends SystemUI implements
|
|||||||
@Nullable
|
@Nullable
|
||||||
protected LockscreenWallpaper mLockscreenWallpaper;
|
protected LockscreenWallpaper mLockscreenWallpaper;
|
||||||
private final AutoHideController mAutoHideController;
|
private final AutoHideController mAutoHideController;
|
||||||
|
private final CollapsedStatusBarFragmentLogger mCollapsedStatusBarFragmentLogger;
|
||||||
|
|
||||||
private final Point mCurrentDisplaySize = new Point();
|
private final Point mCurrentDisplaySize = new Point();
|
||||||
|
|
||||||
@@ -743,6 +744,7 @@ public class StatusBar extends SystemUI implements
|
|||||||
DozeScrimController dozeScrimController,
|
DozeScrimController dozeScrimController,
|
||||||
VolumeComponent volumeComponent,
|
VolumeComponent volumeComponent,
|
||||||
CommandQueue commandQueue,
|
CommandQueue commandQueue,
|
||||||
|
CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger,
|
||||||
StatusBarComponent.Factory statusBarComponentFactory,
|
StatusBarComponent.Factory statusBarComponentFactory,
|
||||||
PluginManager pluginManager,
|
PluginManager pluginManager,
|
||||||
Optional<LegacySplitScreen> splitScreenOptional,
|
Optional<LegacySplitScreen> splitScreenOptional,
|
||||||
@@ -842,6 +844,7 @@ public class StatusBar extends SystemUI implements
|
|||||||
mNotificationShadeDepthControllerLazy = notificationShadeDepthControllerLazy;
|
mNotificationShadeDepthControllerLazy = notificationShadeDepthControllerLazy;
|
||||||
mVolumeComponent = volumeComponent;
|
mVolumeComponent = volumeComponent;
|
||||||
mCommandQueue = commandQueue;
|
mCommandQueue = commandQueue;
|
||||||
|
mCollapsedStatusBarFragmentLogger = collapsedStatusBarFragmentLogger;
|
||||||
mStatusBarComponentFactory = statusBarComponentFactory;
|
mStatusBarComponentFactory = statusBarComponentFactory;
|
||||||
mPluginManager = pluginManager;
|
mPluginManager = pluginManager;
|
||||||
mSplitScreenOptional = splitScreenOptional;
|
mSplitScreenOptional = splitScreenOptional;
|
||||||
@@ -1216,6 +1219,7 @@ public class StatusBar extends SystemUI implements
|
|||||||
mNetworkController,
|
mNetworkController,
|
||||||
mStatusBarStateController,
|
mStatusBarStateController,
|
||||||
mCommandQueue,
|
mCommandQueue,
|
||||||
|
mCollapsedStatusBarFragmentLogger,
|
||||||
mOperatorNameViewControllerFactory
|
mOperatorNameViewControllerFactory
|
||||||
),
|
),
|
||||||
CollapsedStatusBarFragment.TAG)
|
CollapsedStatusBarFragment.TAG)
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ import com.android.systemui.statusbar.notification.logging.NotificationLogger;
|
|||||||
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
|
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
|
||||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
import com.android.systemui.statusbar.phone.AutoHideController;
|
||||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
||||||
|
import com.android.systemui.statusbar.phone.CollapsedStatusBarFragmentLogger;
|
||||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||||
import com.android.systemui.statusbar.phone.DozeScrimController;
|
import com.android.systemui.statusbar.phone.DozeScrimController;
|
||||||
import com.android.systemui.statusbar.phone.DozeServiceHost;
|
import com.android.systemui.statusbar.phone.DozeServiceHost;
|
||||||
@@ -188,6 +189,7 @@ public interface StatusBarPhoneModule {
|
|||||||
DozeScrimController dozeScrimController,
|
DozeScrimController dozeScrimController,
|
||||||
VolumeComponent volumeComponent,
|
VolumeComponent volumeComponent,
|
||||||
CommandQueue commandQueue,
|
CommandQueue commandQueue,
|
||||||
|
CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger,
|
||||||
StatusBarComponent.Factory statusBarComponentFactory,
|
StatusBarComponent.Factory statusBarComponentFactory,
|
||||||
PluginManager pluginManager,
|
PluginManager pluginManager,
|
||||||
Optional<LegacySplitScreen> splitScreenOptional,
|
Optional<LegacySplitScreen> splitScreenOptional,
|
||||||
@@ -284,6 +286,7 @@ public interface StatusBarPhoneModule {
|
|||||||
dozeScrimController,
|
dozeScrimController,
|
||||||
volumeComponent,
|
volumeComponent,
|
||||||
commandQueue,
|
commandQueue,
|
||||||
|
collapsedStatusBarFragmentLogger,
|
||||||
statusBarComponentFactory,
|
statusBarComponentFactory,
|
||||||
pluginManager,
|
pluginManager,
|
||||||
splitScreenOptional,
|
splitScreenOptional,
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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.phone
|
||||||
|
|
||||||
|
import androidx.test.filters.SmallTest
|
||||||
|
import com.android.systemui.SysuiTestCase
|
||||||
|
import com.android.systemui.dump.DumpManager
|
||||||
|
import com.android.systemui.log.LogBufferFactory
|
||||||
|
import com.android.systemui.log.LogcatEchoTracker
|
||||||
|
import com.android.systemui.statusbar.DisableFlagsLogger
|
||||||
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import org.junit.Test
|
||||||
|
import org.mockito.Mockito.mock
|
||||||
|
import java.io.PrintWriter
|
||||||
|
import java.io.StringWriter
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
class CollapsedStatusBarFragmentLoggerTest : SysuiTestCase() {
|
||||||
|
|
||||||
|
private val buffer = LogBufferFactory(DumpManager(), mock(LogcatEchoTracker::class.java))
|
||||||
|
.create("buffer", 10)
|
||||||
|
private val disableFlagsLogger = DisableFlagsLogger(
|
||||||
|
listOf(DisableFlagsLogger.DisableFlag(0b001, 'A', 'a')),
|
||||||
|
listOf(DisableFlagsLogger.DisableFlag(0b001, 'B', 'b'))
|
||||||
|
)
|
||||||
|
private val logger = CollapsedStatusBarFragmentLogger(buffer, disableFlagsLogger)
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun logToBuffer_bufferHasStates() {
|
||||||
|
val state = DisableFlagsLogger.DisableState(0, 1)
|
||||||
|
|
||||||
|
logger.logDisableFlagChange(state, state)
|
||||||
|
|
||||||
|
val stringWriter = StringWriter()
|
||||||
|
buffer.dump(PrintWriter(stringWriter), tailLength = 0)
|
||||||
|
val actualString = stringWriter.toString()
|
||||||
|
val expectedLogString = disableFlagsLogger.getDisableFlagsString(state, state)
|
||||||
|
|
||||||
|
assertThat(actualString).contains(expectedLogString)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,8 +39,11 @@ import androidx.test.filters.SmallTest;
|
|||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.SysuiBaseFragmentTest;
|
import com.android.systemui.SysuiBaseFragmentTest;
|
||||||
import com.android.systemui.flags.FeatureFlags;
|
import com.android.systemui.flags.FeatureFlags;
|
||||||
|
import com.android.systemui.log.LogBuffer;
|
||||||
|
import com.android.systemui.log.LogcatEchoTracker;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
|
import com.android.systemui.statusbar.DisableFlagsLogger;
|
||||||
import com.android.systemui.statusbar.OperatorNameViewController;
|
import com.android.systemui.statusbar.OperatorNameViewController;
|
||||||
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
|
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
|
||||||
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
|
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
|
||||||
@@ -263,6 +266,10 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
|
|||||||
mNetworkController,
|
mNetworkController,
|
||||||
mStatusBarStateController,
|
mStatusBarStateController,
|
||||||
mCommandQueue,
|
mCommandQueue,
|
||||||
|
new CollapsedStatusBarFragmentLogger(
|
||||||
|
new LogBuffer("TEST", 1, 1, mock(LogcatEchoTracker.class)),
|
||||||
|
new DisableFlagsLogger()
|
||||||
|
),
|
||||||
mOperatorNameViewControllerFactory);
|
mOperatorNameViewControllerFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -233,6 +233,7 @@ public class StatusBarTest extends SysuiTestCase {
|
|||||||
@Mock private ViewMediatorCallback mKeyguardVieMediatorCallback;
|
@Mock private ViewMediatorCallback mKeyguardVieMediatorCallback;
|
||||||
@Mock private VolumeComponent mVolumeComponent;
|
@Mock private VolumeComponent mVolumeComponent;
|
||||||
@Mock private CommandQueue mCommandQueue;
|
@Mock private CommandQueue mCommandQueue;
|
||||||
|
@Mock private CollapsedStatusBarFragmentLogger mCollapsedStatusBarFragmentLogger;
|
||||||
@Mock private StatusBarComponent.Factory mStatusBarComponentFactory;
|
@Mock private StatusBarComponent.Factory mStatusBarComponentFactory;
|
||||||
@Mock private StatusBarComponent mStatusBarComponent;
|
@Mock private StatusBarComponent mStatusBarComponent;
|
||||||
@Mock private PluginManager mPluginManager;
|
@Mock private PluginManager mPluginManager;
|
||||||
@@ -404,6 +405,7 @@ public class StatusBarTest extends SysuiTestCase {
|
|||||||
mDozeScrimController,
|
mDozeScrimController,
|
||||||
mVolumeComponent,
|
mVolumeComponent,
|
||||||
mCommandQueue,
|
mCommandQueue,
|
||||||
|
mCollapsedStatusBarFragmentLogger,
|
||||||
mStatusBarComponentFactory,
|
mStatusBarComponentFactory,
|
||||||
mPluginManager,
|
mPluginManager,
|
||||||
Optional.of(mLegacySplitScreen),
|
Optional.of(mLegacySplitScreen),
|
||||||
|
|||||||
Reference in New Issue
Block a user