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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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. */
|
||||
@Provides
|
||||
@SysUISingleton
|
||||
|
||||
@@ -42,6 +42,7 @@ import com.android.systemui.animation.Interpolators;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.DisableFlagsLogger.DisableState;
|
||||
import com.android.systemui.statusbar.OperatorNameView;
|
||||
import com.android.systemui.statusbar.OperatorNameViewController;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
@@ -93,6 +94,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
private Lazy<Optional<StatusBar>> mStatusBarOptionalLazy;
|
||||
private DarkIconManager mDarkIconManager;
|
||||
private final CommandQueue mCommandQueue;
|
||||
private final CollapsedStatusBarFragmentLogger mCollapsedStatusBarFragmentLogger;
|
||||
private final OperatorNameViewController.Factory mOperatorNameViewControllerFactory;
|
||||
private final OngoingCallController mOngoingCallController;
|
||||
private final SystemStatusAnimationScheduler mAnimationScheduler;
|
||||
@@ -131,6 +133,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
NetworkController networkController,
|
||||
StatusBarStateController statusBarStateController,
|
||||
CommandQueue commandQueue,
|
||||
CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger,
|
||||
OperatorNameViewController.Factory operatorNameViewControllerFactory
|
||||
) {
|
||||
mOngoingCallController = ongoingCallController;
|
||||
@@ -144,6 +147,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
mNetworkController = networkController;
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
mCommandQueue = commandQueue;
|
||||
mCollapsedStatusBarFragmentLogger = collapsedStatusBarFragmentLogger;
|
||||
mOperatorNameViewControllerFactory = operatorNameViewControllerFactory;
|
||||
}
|
||||
|
||||
@@ -244,7 +248,14 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
|
||||
if (displayId != getContext().getDisplayId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
int state1BeforeAdjustment = state1;
|
||||
state1 = adjustDisableFlags(state1);
|
||||
|
||||
mCollapsedStatusBarFragmentLogger.logDisableFlagChange(
|
||||
new DisableState(state1BeforeAdjustment, state2),
|
||||
new DisableState(state1, state2));
|
||||
|
||||
final int old1 = mDisabled1;
|
||||
final int diff1 = state1 ^ old1;
|
||||
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
|
||||
protected LockscreenWallpaper mLockscreenWallpaper;
|
||||
private final AutoHideController mAutoHideController;
|
||||
private final CollapsedStatusBarFragmentLogger mCollapsedStatusBarFragmentLogger;
|
||||
|
||||
private final Point mCurrentDisplaySize = new Point();
|
||||
|
||||
@@ -743,6 +744,7 @@ public class StatusBar extends SystemUI implements
|
||||
DozeScrimController dozeScrimController,
|
||||
VolumeComponent volumeComponent,
|
||||
CommandQueue commandQueue,
|
||||
CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger,
|
||||
StatusBarComponent.Factory statusBarComponentFactory,
|
||||
PluginManager pluginManager,
|
||||
Optional<LegacySplitScreen> splitScreenOptional,
|
||||
@@ -842,6 +844,7 @@ public class StatusBar extends SystemUI implements
|
||||
mNotificationShadeDepthControllerLazy = notificationShadeDepthControllerLazy;
|
||||
mVolumeComponent = volumeComponent;
|
||||
mCommandQueue = commandQueue;
|
||||
mCollapsedStatusBarFragmentLogger = collapsedStatusBarFragmentLogger;
|
||||
mStatusBarComponentFactory = statusBarComponentFactory;
|
||||
mPluginManager = pluginManager;
|
||||
mSplitScreenOptional = splitScreenOptional;
|
||||
@@ -1216,6 +1219,7 @@ public class StatusBar extends SystemUI implements
|
||||
mNetworkController,
|
||||
mStatusBarStateController,
|
||||
mCommandQueue,
|
||||
mCollapsedStatusBarFragmentLogger,
|
||||
mOperatorNameViewControllerFactory
|
||||
),
|
||||
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.phone.AutoHideController;
|
||||
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.DozeScrimController;
|
||||
import com.android.systemui.statusbar.phone.DozeServiceHost;
|
||||
@@ -188,6 +189,7 @@ public interface StatusBarPhoneModule {
|
||||
DozeScrimController dozeScrimController,
|
||||
VolumeComponent volumeComponent,
|
||||
CommandQueue commandQueue,
|
||||
CollapsedStatusBarFragmentLogger collapsedStatusBarFragmentLogger,
|
||||
StatusBarComponent.Factory statusBarComponentFactory,
|
||||
PluginManager pluginManager,
|
||||
Optional<LegacySplitScreen> splitScreenOptional,
|
||||
@@ -284,6 +286,7 @@ public interface StatusBarPhoneModule {
|
||||
dozeScrimController,
|
||||
volumeComponent,
|
||||
commandQueue,
|
||||
collapsedStatusBarFragmentLogger,
|
||||
statusBarComponentFactory,
|
||||
pluginManager,
|
||||
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.SysuiBaseFragmentTest;
|
||||
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.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.DisableFlagsLogger;
|
||||
import com.android.systemui.statusbar.OperatorNameViewController;
|
||||
import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler;
|
||||
import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController;
|
||||
@@ -263,6 +266,10 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
|
||||
mNetworkController,
|
||||
mStatusBarStateController,
|
||||
mCommandQueue,
|
||||
new CollapsedStatusBarFragmentLogger(
|
||||
new LogBuffer("TEST", 1, 1, mock(LogcatEchoTracker.class)),
|
||||
new DisableFlagsLogger()
|
||||
),
|
||||
mOperatorNameViewControllerFactory);
|
||||
}
|
||||
|
||||
|
||||
@@ -233,6 +233,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
@Mock private ViewMediatorCallback mKeyguardVieMediatorCallback;
|
||||
@Mock private VolumeComponent mVolumeComponent;
|
||||
@Mock private CommandQueue mCommandQueue;
|
||||
@Mock private CollapsedStatusBarFragmentLogger mCollapsedStatusBarFragmentLogger;
|
||||
@Mock private StatusBarComponent.Factory mStatusBarComponentFactory;
|
||||
@Mock private StatusBarComponent mStatusBarComponent;
|
||||
@Mock private PluginManager mPluginManager;
|
||||
@@ -404,6 +405,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mDozeScrimController,
|
||||
mVolumeComponent,
|
||||
mCommandQueue,
|
||||
mCollapsedStatusBarFragmentLogger,
|
||||
mStatusBarComponentFactory,
|
||||
mPluginManager,
|
||||
Optional.of(mLegacySplitScreen),
|
||||
|
||||
Reference in New Issue
Block a user