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

Commit b2d959cd authored by Lyn Han's avatar Lyn Han Committed by Android (Google) Code Review
Browse files

Merge "Add bufferlogs for setExpandedHeight call stack" into tm-qpr-dev

parents b2433a64 02e3cb1d
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -102,6 +102,15 @@ public class LogModule {
        return factory.create("ShadeLog", 500, false);
    }

    /** Provides a logging buffer for Shade height messages. */
    @Provides
    @SysUISingleton
    @ShadeHeightLog
    public static LogBuffer provideShadeHeightLogBuffer(LogBufferFactory factory) {
        return factory.create("ShadeHeightLog", 500 /* maxSize */);
    }


    /** Provides a logging buffer for all logs related to managing notification sections. */
    @Provides
    @SysUISingleton
+33 −0
Original line number Diff line number Diff line
/*
 * 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 height changes. */
@Qualifier
@Documented
@Retention(RUNTIME)
public @interface ShadeHeightLog {
}
+17 −1
Original line number Diff line number Diff line
@@ -632,6 +632,7 @@ public final class NotificationPanelViewController implements Dumpable {
    private final KeyguardBottomAreaViewModel mKeyguardBottomAreaViewModel;
    private final KeyguardBottomAreaInteractor mKeyguardBottomAreaInteractor;
    private float mMinExpandHeight;
    private ShadeHeightLogger mShadeHeightLogger;
    private boolean mPanelUpdateWhenAnimatorEnds;
    private boolean mHasVibratedOnOpen = false;
    private int mFixedDuration = NO_FIXED_DURATION;
@@ -711,6 +712,7 @@ public final class NotificationPanelViewController implements Dumpable {
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            MetricsLogger metricsLogger,
            ShadeLogger shadeLogger,
            ShadeHeightLogger shadeHeightLogger,
            ConfigurationController configurationController,
            Provider<FlingAnimationUtils.Builder> flingAnimationUtilsBuilder,
            StatusBarTouchableRegionManager statusBarTouchableRegionManager,
@@ -771,6 +773,7 @@ public final class NotificationPanelViewController implements Dumpable {
        mLockscreenGestureLogger = lockscreenGestureLogger;
        mShadeExpansionStateManager = shadeExpansionStateManager;
        mShadeLog = shadeLogger;
        mShadeHeightLogger = shadeHeightLogger;
        mGutsManager = gutsManager;
        mView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
            @Override
@@ -1815,6 +1818,7 @@ public final class NotificationPanelViewController implements Dumpable {
            waiting = true;
        } else {
            resetViews(false /* animate */);
            mShadeHeightLogger.logFunctionCall("collapsePanel");
            setExpandedFraction(0); // just in case
        }
        if (!waiting) {
@@ -3691,6 +3695,7 @@ public final class NotificationPanelViewController implements Dumpable {
                                    beginJankMonitoring();
                                    fling(0  /* expand */);
                                } else {
                                    mShadeHeightLogger.logFunctionCall("expand");
                                    setExpandedFraction(1f);
                                }
                                mInstantExpanding = false;
@@ -4755,6 +4760,7 @@ public final class NotificationPanelViewController implements Dumpable {
        mInitialTouchFromKeyguard = mKeyguardStateController.isShowing();
        if (startTracking) {
            mTouchSlopExceeded = true;
            mShadeHeightLogger.logFunctionCall("startExpandMotion");
            setExpandedHeight(mInitialOffsetOnTouch);
            onTrackingStarted();
        }
@@ -4900,6 +4906,7 @@ public final class NotificationPanelViewController implements Dumpable {
    @VisibleForTesting
    void setExpandedHeight(float height) {
        debugLog("setExpandedHeight(%.1f)", height);
        mShadeHeightLogger.logFunctionCall("setExpandedHeight");
        setExpandedHeightInternal(height);
    }

@@ -4923,10 +4930,13 @@ public final class NotificationPanelViewController implements Dumpable {
            return;
        }

        mShadeHeightLogger.logFunctionCall("updateExpandedHeightToMaxHeight");
        setExpandedHeight(currentMaxPanelHeight);
    }

    private void setExpandedHeightInternal(float h) {
        mShadeHeightLogger.logSetExpandedHeightInternal(h, mSystemClock.currentTimeMillis());

        if (isNaN(h)) {
            Log.wtf(TAG, "ExpandedHeight set to NaN");
        }
@@ -4983,7 +4993,9 @@ public final class NotificationPanelViewController implements Dumpable {

    /** Sets the expanded height relative to a number from 0 to 1. */
    public void setExpandedFraction(float frac) {
        setExpandedHeight(getMaxPanelTransitionDistance() * frac);
        final int maxDist = getMaxPanelTransitionDistance();
        mShadeHeightLogger.logFunctionCall("setExpandedFraction");
        setExpandedHeight(maxDist * frac);
    }

    float getExpandedHeight() {
@@ -5045,6 +5057,7 @@ public final class NotificationPanelViewController implements Dumpable {
    /** Collapses the shade instantly without animation. */
    public void instantCollapse() {
        abortAnimations();
        mShadeHeightLogger.logFunctionCall("instantCollapse");
        setExpandedFraction(0f);
        if (mExpanding) {
            notifyExpandingFinished();
@@ -5161,6 +5174,7 @@ public final class NotificationPanelViewController implements Dumpable {
                                        animator.getAnimatedFraction()));
                        setOverExpansionInternal(expansion, false /* isFromGesture */);
                    }
                    mShadeHeightLogger.logFunctionCall("height animator update");
                    setExpandedHeightInternal((float) animation.getAnimatedValue());
                });
        return animator;
@@ -5635,6 +5649,7 @@ public final class NotificationPanelViewController implements Dumpable {
        mStatusBarStateController.setUpcomingState(KEYGUARD);
        mStatusBarStateListener.onStateChanged(KEYGUARD);
        mStatusBarStateListener.onDozeAmountChanged(1f, 1f);
        mShadeHeightLogger.logFunctionCall("showAodUi");
        setExpandedFraction(1f);
    }

@@ -6181,6 +6196,7 @@ public final class NotificationPanelViewController implements Dumpable {
                        // otherwise {@link NotificationStackScrollLayout}
                        // wrongly enables stack height updates at the start of lockscreen swipe-up
                        mAmbientState.setSwipingUp(h <= 0);
                        mShadeHeightLogger.logFunctionCall("ACTION_MOVE");
                        setExpandedHeightInternal(newHeight);
                    }
                    break;
+52 −0
Original line number Diff line number Diff line
/*
 * 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 com.android.systemui.log.dagger.ShadeHeightLog
import com.android.systemui.plugins.log.LogBuffer
import com.android.systemui.plugins.log.LogLevel.DEBUG
import java.text.SimpleDateFormat
import javax.inject.Inject

private const val TAG = "ShadeHeightLogger"

/**
 * Log the call stack for [NotificationPanelViewController] setExpandedHeightInternal.
 *
 * Tracking bug: b/261593829
 */
class ShadeHeightLogger
@Inject constructor(
    @ShadeHeightLog private val buffer: LogBuffer,
) {

    private val dateFormat = SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS")

    fun logFunctionCall(functionName: String) {
        buffer.log(TAG, DEBUG, {
            str1 = functionName
        }, {
            "$str1"
        })
    }

    fun logSetExpandedHeightInternal(h: Float, time: Long) {
        buffer.log(TAG, DEBUG, {
            double1 = h.toDouble()
            long1 = time
        }, {
            "setExpandedHeightInternal=$double1 time=${dateFormat.format(long1)}"
        })
    }
}
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -219,6 +219,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
    @Mock private KeyguardStateController mKeyguardStateController;
    @Mock private DozeLog mDozeLog;
    @Mock private ShadeLogger mShadeLog;
    @Mock private ShadeHeightLogger mShadeHeightLogger;
    @Mock private CommandQueue mCommandQueue;
    @Mock private VibratorHelper mVibratorHelper;
    @Mock private LatencyTracker mLatencyTracker;
@@ -455,6 +456,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
                mLatencyTracker, mPowerManager, mAccessibilityManager, 0, mUpdateMonitor,
                mMetricsLogger,
                mShadeLog,
                mShadeHeightLogger,
                mConfigurationController,
                () -> flingAnimationUtilsBuilder, mStatusBarTouchableRegionManager,
                mConversationNotificationManager, mMediaHierarchyManager,