Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 046475fd authored by Nicolò Mazzucato's avatar Nicolò Mazzucato Committed by Automerger Merge Worker
Browse files

Merge "Use separate LogBuffer for QS config changes" into tm-qpr-dev am:...

Merge "Use separate LogBuffer for QS config changes" into tm-qpr-dev am: 614f8384 am: 9a553c15 am: d781632b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22118734



Change-Id: I17a4d87b2d5ba3b2046fcb1b9693a0391c12d5c5
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a471819e d781632b
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -160,6 +160,14 @@ public class LogModule {
        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
    @SysUISingleton
+33 −0
Original line number 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 {
}
+10 −7
Original line number Diff line number Diff line
@@ -91,16 +91,19 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
            new QSPanel.OnConfigurationChangedListener() {
                @Override
                public void onConfigurationChange(Configuration newConfig) {
                    mQSLogger.logOnConfigurationChanged(
                        /* lastOrientation= */ mLastOrientation,
                        /* newOrientation= */ newConfig.orientation,
                        /* containerName= */ mView.getDumpableTag());

                    boolean previousSplitShadeState = mShouldUseSplitNotificationShade;
                    final boolean previousSplitShadeState = mShouldUseSplitNotificationShade;
                    final int previousOrientation = mLastOrientation;
                    mShouldUseSplitNotificationShade =
                            LargeScreenUtils.shouldUseSplitNotificationShade(getResources());
                    mLastOrientation = newConfig.orientation;

                    mQSLogger.logOnConfigurationChanged(
                        /* oldOrientation= */ previousOrientation,
                        /* newOrientation= */ mLastOrientation,
                        /* oldShouldUseSplitShade= */ previousSplitShadeState,
                        /* newShouldUseSplitShade= */ mShouldUseSplitNotificationShade,
                        /* containerName= */ mView.getDumpableTag());

                    switchTileLayoutIfNeeded();
                    onConfigurationChanged();
                    if (previousSplitShadeState != mShouldUseSplitNotificationShade) {
+32 −7
Original line number Diff line number Diff line
@@ -16,8 +16,12 @@

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.view.View
import com.android.systemui.log.dagger.QSConfigLog
import com.android.systemui.log.dagger.QSLog
import com.android.systemui.plugins.log.ConstantStringsLogger
import com.android.systemui.plugins.log.ConstantStringsLoggerImpl
@@ -32,8 +36,12 @@ import javax.inject.Inject

private const val TAG = "QSLog"

class QSLogger @Inject constructor(@QSLog private val buffer: LogBuffer) :
    ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) {
class QSLogger
@Inject
constructor(
    @QSLog private val buffer: LogBuffer,
    @QSConfigLog private val configChangedBuffer: LogBuffer,
) : ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) {

    fun logException(@CompileTimeConstant logMsg: String, ex: Exception) {
        buffer.log(TAG, ERROR, {}, { logMsg }, exception = ex)
@@ -264,19 +272,28 @@ class QSLogger @Inject constructor(@QSLog private val buffer: LogBuffer) :
    }

    fun logOnConfigurationChanged(
        lastOrientation: Int,
        newOrientation: Int,
        @Orientation oldOrientation: Int,
        @Orientation newOrientation: Int,
        newShouldUseSplitShade: Boolean,
        oldShouldUseSplitShade: Boolean,
        containerName: String
    ) {
        buffer.log(
        configChangedBuffer.log(
            TAG,
            DEBUG,
            {
                str1 = containerName
                int1 = lastOrientation
                int1 = oldOrientation
                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)"
            }
        )
    }

@@ -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"
    }
}