Loading packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -160,6 +160,14 @@ public class LogModule { return factory.create("QSLog", 700 /* maxSize */, false /* systrace */); return factory.create("QSLog", 700 /* maxSize */, false /* systrace */); } } /** Provides a logging buffer for logs related to Quick Settings configuration. */ @Provides @SysUISingleton @QSConfigLog public static LogBuffer provideQSConfigLogBuffer(LogBufferFactory factory) { return factory.create("QSConfigLog", 100 /* maxSize */, true /* systrace */); } /** Provides a logging buffer for {@link com.android.systemui.broadcast.BroadcastDispatcher} */ /** Provides a logging buffer for {@link com.android.systemui.broadcast.BroadcastDispatcher} */ @Provides @Provides @SysUISingleton @SysUISingleton Loading packages/SystemUI/src/com/android/systemui/log/dagger/QSConfigLog.java 0 → 100644 +33 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2023 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 QS configuration changed messages. */ @Qualifier @Documented @Retention(RUNTIME) public @interface QSConfigLog { } packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +10 −7 Original line number Original line Diff line number Diff line Loading @@ -91,16 +91,19 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr new QSPanel.OnConfigurationChangedListener() { new QSPanel.OnConfigurationChangedListener() { @Override @Override public void onConfigurationChange(Configuration newConfig) { public void onConfigurationChange(Configuration newConfig) { mQSLogger.logOnConfigurationChanged( final boolean previousSplitShadeState = mShouldUseSplitNotificationShade; /* lastOrientation= */ mLastOrientation, final int previousOrientation = mLastOrientation; /* newOrientation= */ newConfig.orientation, /* containerName= */ mView.getDumpableTag()); boolean previousSplitShadeState = mShouldUseSplitNotificationShade; mShouldUseSplitNotificationShade = mShouldUseSplitNotificationShade = LargeScreenUtils.shouldUseSplitNotificationShade(getResources()); LargeScreenUtils.shouldUseSplitNotificationShade(getResources()); mLastOrientation = newConfig.orientation; mLastOrientation = newConfig.orientation; mQSLogger.logOnConfigurationChanged( /* oldOrientation= */ previousOrientation, /* newOrientation= */ mLastOrientation, /* oldShouldUseSplitShade= */ previousSplitShadeState, /* newShouldUseSplitShade= */ mShouldUseSplitNotificationShade, /* containerName= */ mView.getDumpableTag()); switchTileLayoutIfNeeded(); switchTileLayoutIfNeeded(); onConfigurationChanged(); onConfigurationChanged(); if (previousSplitShadeState != mShouldUseSplitNotificationShade) { if (previousSplitShadeState != mShouldUseSplitNotificationShade) { Loading packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt +32 −7 Original line number Original line Diff line number Diff line Loading @@ -16,8 +16,12 @@ package com.android.systemui.qs.logging package com.android.systemui.qs.logging import android.content.res.Configuration.ORIENTATION_LANDSCAPE import android.content.res.Configuration.ORIENTATION_PORTRAIT import android.content.res.Configuration.Orientation import android.service.quicksettings.Tile import android.service.quicksettings.Tile import android.view.View import android.view.View import com.android.systemui.log.dagger.QSConfigLog import com.android.systemui.log.dagger.QSLog import com.android.systemui.log.dagger.QSLog import com.android.systemui.plugins.log.ConstantStringsLogger import com.android.systemui.plugins.log.ConstantStringsLogger import com.android.systemui.plugins.log.ConstantStringsLoggerImpl import com.android.systemui.plugins.log.ConstantStringsLoggerImpl Loading @@ -32,8 +36,12 @@ import javax.inject.Inject private const val TAG = "QSLog" private const val TAG = "QSLog" class QSLogger @Inject constructor(@QSLog private val buffer: LogBuffer) : class QSLogger ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) { @Inject constructor( @QSLog private val buffer: LogBuffer, @QSConfigLog private val configChangedBuffer: LogBuffer, ) : ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) { fun logException(@CompileTimeConstant logMsg: String, ex: Exception) { fun logException(@CompileTimeConstant logMsg: String, ex: Exception) { buffer.log(TAG, ERROR, {}, { logMsg }, exception = ex) buffer.log(TAG, ERROR, {}, { logMsg }, exception = ex) Loading Loading @@ -264,19 +272,28 @@ class QSLogger @Inject constructor(@QSLog private val buffer: LogBuffer) : } } fun logOnConfigurationChanged( fun logOnConfigurationChanged( lastOrientation: Int, @Orientation oldOrientation: Int, newOrientation: Int, @Orientation newOrientation: Int, newShouldUseSplitShade: Boolean, oldShouldUseSplitShade: Boolean, containerName: String containerName: String ) { ) { buffer.log( configChangedBuffer.log( TAG, TAG, DEBUG, DEBUG, { { str1 = containerName str1 = containerName int1 = lastOrientation int1 = oldOrientation int2 = newOrientation int2 = newOrientation bool1 = oldShouldUseSplitShade bool2 = newShouldUseSplitShade }, }, { "configuration change: $str1 orientation was $int1, now $int2" } { "config change: " + "$str1 orientation=${toOrientationString(int2)} " + "(was ${toOrientationString(int1)}), " + "splitShade=$bool2 (was $bool1)" } ) ) } } Loading Loading @@ -353,3 +370,11 @@ class QSLogger @Inject constructor(@QSLog private val buffer: LogBuffer) : } } } } } } private inline fun toOrientationString(@Orientation orientation: Int): String { return when (orientation) { ORIENTATION_LANDSCAPE -> "land" ORIENTATION_PORTRAIT -> "port" else -> "undefined" } } Loading
packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -160,6 +160,14 @@ public class LogModule { return factory.create("QSLog", 700 /* maxSize */, false /* systrace */); return factory.create("QSLog", 700 /* maxSize */, false /* systrace */); } } /** Provides a logging buffer for logs related to Quick Settings configuration. */ @Provides @SysUISingleton @QSConfigLog public static LogBuffer provideQSConfigLogBuffer(LogBufferFactory factory) { return factory.create("QSConfigLog", 100 /* maxSize */, true /* systrace */); } /** Provides a logging buffer for {@link com.android.systemui.broadcast.BroadcastDispatcher} */ /** Provides a logging buffer for {@link com.android.systemui.broadcast.BroadcastDispatcher} */ @Provides @Provides @SysUISingleton @SysUISingleton Loading
packages/SystemUI/src/com/android/systemui/log/dagger/QSConfigLog.java 0 → 100644 +33 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2023 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 QS configuration changed messages. */ @Qualifier @Documented @Retention(RUNTIME) public @interface QSConfigLog { }
packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +10 −7 Original line number Original line Diff line number Diff line Loading @@ -91,16 +91,19 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr new QSPanel.OnConfigurationChangedListener() { new QSPanel.OnConfigurationChangedListener() { @Override @Override public void onConfigurationChange(Configuration newConfig) { public void onConfigurationChange(Configuration newConfig) { mQSLogger.logOnConfigurationChanged( final boolean previousSplitShadeState = mShouldUseSplitNotificationShade; /* lastOrientation= */ mLastOrientation, final int previousOrientation = mLastOrientation; /* newOrientation= */ newConfig.orientation, /* containerName= */ mView.getDumpableTag()); boolean previousSplitShadeState = mShouldUseSplitNotificationShade; mShouldUseSplitNotificationShade = mShouldUseSplitNotificationShade = LargeScreenUtils.shouldUseSplitNotificationShade(getResources()); LargeScreenUtils.shouldUseSplitNotificationShade(getResources()); mLastOrientation = newConfig.orientation; mLastOrientation = newConfig.orientation; mQSLogger.logOnConfigurationChanged( /* oldOrientation= */ previousOrientation, /* newOrientation= */ mLastOrientation, /* oldShouldUseSplitShade= */ previousSplitShadeState, /* newShouldUseSplitShade= */ mShouldUseSplitNotificationShade, /* containerName= */ mView.getDumpableTag()); switchTileLayoutIfNeeded(); switchTileLayoutIfNeeded(); onConfigurationChanged(); onConfigurationChanged(); if (previousSplitShadeState != mShouldUseSplitNotificationShade) { if (previousSplitShadeState != mShouldUseSplitNotificationShade) { Loading
packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt +32 −7 Original line number Original line Diff line number Diff line Loading @@ -16,8 +16,12 @@ package com.android.systemui.qs.logging package com.android.systemui.qs.logging import android.content.res.Configuration.ORIENTATION_LANDSCAPE import android.content.res.Configuration.ORIENTATION_PORTRAIT import android.content.res.Configuration.Orientation import android.service.quicksettings.Tile import android.service.quicksettings.Tile import android.view.View import android.view.View import com.android.systemui.log.dagger.QSConfigLog import com.android.systemui.log.dagger.QSLog import com.android.systemui.log.dagger.QSLog import com.android.systemui.plugins.log.ConstantStringsLogger import com.android.systemui.plugins.log.ConstantStringsLogger import com.android.systemui.plugins.log.ConstantStringsLoggerImpl import com.android.systemui.plugins.log.ConstantStringsLoggerImpl Loading @@ -32,8 +36,12 @@ import javax.inject.Inject private const val TAG = "QSLog" private const val TAG = "QSLog" class QSLogger @Inject constructor(@QSLog private val buffer: LogBuffer) : class QSLogger ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) { @Inject constructor( @QSLog private val buffer: LogBuffer, @QSConfigLog private val configChangedBuffer: LogBuffer, ) : ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) { fun logException(@CompileTimeConstant logMsg: String, ex: Exception) { fun logException(@CompileTimeConstant logMsg: String, ex: Exception) { buffer.log(TAG, ERROR, {}, { logMsg }, exception = ex) buffer.log(TAG, ERROR, {}, { logMsg }, exception = ex) Loading Loading @@ -264,19 +272,28 @@ class QSLogger @Inject constructor(@QSLog private val buffer: LogBuffer) : } } fun logOnConfigurationChanged( fun logOnConfigurationChanged( lastOrientation: Int, @Orientation oldOrientation: Int, newOrientation: Int, @Orientation newOrientation: Int, newShouldUseSplitShade: Boolean, oldShouldUseSplitShade: Boolean, containerName: String containerName: String ) { ) { buffer.log( configChangedBuffer.log( TAG, TAG, DEBUG, DEBUG, { { str1 = containerName str1 = containerName int1 = lastOrientation int1 = oldOrientation int2 = newOrientation int2 = newOrientation bool1 = oldShouldUseSplitShade bool2 = newShouldUseSplitShade }, }, { "configuration change: $str1 orientation was $int1, now $int2" } { "config change: " + "$str1 orientation=${toOrientationString(int2)} " + "(was ${toOrientationString(int1)}), " + "splitShade=$bool2 (was $bool1)" } ) ) } } Loading Loading @@ -353,3 +370,11 @@ class QSLogger @Inject constructor(@QSLog private val buffer: LogBuffer) : } } } } } } private inline fun toOrientationString(@Orientation orientation: Int): String { return when (orientation) { ORIENTATION_LANDSCAPE -> "land" ORIENTATION_PORTRAIT -> "port" else -> "undefined" } }