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

Commit c4ef2ff4 authored by Darrell Shi's avatar Darrell Shi
Browse files

Refactor DreamLogger with Logger

This change refactors where DreamLogger is used to take advantage of the
Logger class.

It also adds a FakeLogBuffer class which returns a real LogMessage
object to prevent a NullPointerException when operating on the message.

Bug: 276475093
Test: atest ComplicationCollectionLiveDataTest
Test: atest DreamOverlayAnimationsControllerTest
Test: atest DreamOverlayStateControllerTest
Test: atest DreamOverlayStatusBarViewControllerTest
Change-Id: I68160c4f2c1d46abb0cf67531e749d02f297047d
parent f29c879c
Loading
Loading
Loading
Loading
+46 −9
Original line number Diff line number Diff line
@@ -16,15 +16,52 @@

package com.android.systemui.dreams

import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.LogLevel
import com.android.systemui.log.dagger.DreamLog
import javax.inject.Inject
import com.android.systemui.log.core.Logger
import com.android.systemui.log.core.MessageBuffer

/** Logs dream-related stuff to a {@link LogBuffer}. */
class DreamLogger @Inject constructor(@DreamLog private val buffer: LogBuffer) {
    /** Logs a debug message to the buffer. */
    fun d(tag: String, message: String) {
        buffer.log(tag, LogLevel.DEBUG, { str1 = message }, { message })
class DreamLogger(buffer: MessageBuffer, tag: String) : Logger(buffer, tag) {
    fun logDreamOverlayEnabled(enabled: Boolean) =
        d({ "Dream overlay enabled: $bool1" }) { bool1 = enabled }

    fun logIgnoreAddComplication(reason: String, complication: String) =
        d({ "Ignore adding complication, reason: $str1, complication: $str2" }) {
            str1 = reason
            str2 = complication
        }

    fun logIgnoreRemoveComplication(reason: String, complication: String) =
        d({ "Ignore removing complication, reason: $str1, complication: $str2" }) {
            str1 = reason
            str2 = complication
        }

    fun logAddComplication(complication: String) =
        d({ "Add dream complication: $str1" }) { str1 = complication }

    fun logRemoveComplication(complication: String) =
        d({ "Remove dream complication: $str1" }) { str1 = complication }

    fun logOverlayActive(active: Boolean) = d({ "Dream overlay active: $bool1" }) { bool1 = active }

    fun logLowLightActive(active: Boolean) =
        d({ "Low light mode active: $bool1" }) { bool1 = active }

    fun logHasAssistantAttention(hasAttention: Boolean) =
        d({ "Dream overlay has Assistant attention: $bool1" }) { bool1 = hasAttention }

    fun logStatusBarVisible(visible: Boolean) =
        d({ "Dream overlay status bar visible: $bool1" }) { bool1 = visible }

    fun logAvailableComplicationTypes(types: Int) =
        d({ "Available complication types: $int1" }) { int1 = types }

    fun logShouldShowComplications(showComplications: Boolean) =
        d({ "Dream overlay should show complications: $bool1" }) { bool1 = showComplications }

    fun logShowOrHideStatusBarItem(show: Boolean, type: String) =
        d({ "${if (bool1) "Showing" else "Hiding"} dream status bar item: $int1" }) {
            bool1 = show
            str1 = type
        }
}
+12 −7
Original line number Diff line number Diff line
@@ -36,6 +36,9 @@ import com.android.systemui.complication.ComplicationLayoutParams.Position
import com.android.systemui.dreams.dagger.DreamOverlayModule
import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel
import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.Logger
import com.android.systemui.log.dagger.DreamLog
import com.android.systemui.statusbar.BlurUtils
import com.android.systemui.statusbar.CrossFadeHelper
import com.android.systemui.statusbar.policy.ConfigurationController
@@ -65,12 +68,14 @@ constructor(
    private val mDreamInTranslationYDistance: Int,
    @Named(DreamOverlayModule.DREAM_IN_TRANSLATION_Y_DURATION)
    private val mDreamInTranslationYDurationMs: Long,
    private val mLogger: DreamLogger,
    @DreamLog logBuffer: LogBuffer,
) {
    companion object {
        private const val TAG = "DreamOverlayAnimationsController"
    }

    private val logger = Logger(logBuffer, TAG)

    private var mAnimator: Animator? = null
    private lateinit var view: View

@@ -179,11 +184,11 @@ constructor(
                doOnEnd {
                    mAnimator = null
                    mOverlayStateController.setEntryAnimationsFinished(true)
                    mLogger.d(TAG, "Dream overlay entry animations finished.")
                    logger.d("Dream overlay entry animations finished.")
                }
                doOnCancel { mLogger.d(TAG, "Dream overlay entry animations canceled.") }
                doOnCancel { logger.d("Dream overlay entry animations canceled.") }
                start()
                mLogger.d(TAG, "Dream overlay entry animations started.")
                logger.d("Dream overlay entry animations started.")
            }
    }

@@ -242,11 +247,11 @@ constructor(
                doOnEnd {
                    mAnimator = null
                    mOverlayStateController.setExitAnimationsRunning(false)
                    mLogger.d(TAG, "Dream overlay exit animations finished.")
                    logger.d("Dream overlay exit animations finished.")
                }
                doOnCancel { mLogger.d(TAG, "Dream overlay exit animations canceled.") }
                doOnCancel { logger.d("Dream overlay exit animations canceled.") }
                start()
                mLogger.d(TAG, "Dream overlay exit animations started.")
                logger.d("Dream overlay exit animations started.")
            }
        mOverlayStateController.setExitAnimationsRunning(true)
        return mAnimator as AnimatorSet
+15 −15
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.log.LogBuffer;
import com.android.systemui.log.dagger.DreamLog;
import com.android.systemui.statusbar.policy.CallbackController;

import java.util.ArrayList;
@@ -115,10 +117,10 @@ public class DreamOverlayStateController implements
    public DreamOverlayStateController(@Main Executor executor,
            @Named(DREAM_OVERLAY_ENABLED) boolean overlayEnabled,
            FeatureFlags featureFlags,
            DreamLogger dreamLogger) {
            @DreamLog LogBuffer logBuffer) {
        mExecutor = executor;
        mOverlayEnabled = overlayEnabled;
        mLogger = dreamLogger;
        mLogger = new DreamLogger(logBuffer, TAG);
        mFeatureFlags = featureFlags;
        if (mFeatureFlags.isEnabled(Flags.ALWAYS_SHOW_HOME_CONTROLS_ON_DREAMS)) {
            mSupportedTypes = Complication.COMPLICATION_TYPE_NONE
@@ -126,7 +128,7 @@ public class DreamOverlayStateController implements
        } else {
            mSupportedTypes = Complication.COMPLICATION_TYPE_NONE;
        }
        mLogger.d(TAG, "Dream overlay enabled: " + mOverlayEnabled);
        mLogger.logDreamOverlayEnabled(mOverlayEnabled);
    }

    /**
@@ -134,14 +136,13 @@ public class DreamOverlayStateController implements
     */
    public void addComplication(Complication complication) {
        if (!mOverlayEnabled) {
            mLogger.d(TAG,
                    "Ignoring adding complication due to overlay disabled: " + complication);
            mLogger.logIgnoreAddComplication("overlay disabled", complication.toString());
            return;
        }

        mExecutor.execute(() -> {
            if (mComplications.add(complication)) {
                mLogger.d(TAG, "Added dream complication: " + complication);
                mLogger.logAddComplication(complication.toString());
                mCallbacks.stream().forEach(callback -> callback.onComplicationsChanged());
            }
        });
@@ -152,14 +153,13 @@ public class DreamOverlayStateController implements
     */
    public void removeComplication(Complication complication) {
        if (!mOverlayEnabled) {
            mLogger.d(TAG,
                    "Ignoring removing complication due to overlay disabled: " + complication);
            mLogger.logIgnoreRemoveComplication("overlay disabled", complication.toString());
            return;
        }

        mExecutor.execute(() -> {
            if (mComplications.remove(complication)) {
                mLogger.d(TAG, "Removed dream complication: " + complication);
                mLogger.logRemoveComplication(complication.toString());
                mCallbacks.stream().forEach(callback -> callback.onComplicationsChanged());
            }
        });
@@ -305,7 +305,7 @@ public class DreamOverlayStateController implements
     * @param active {@code true} if overlay is active, {@code false} otherwise.
     */
    public void setOverlayActive(boolean active) {
        mLogger.d(TAG, "Dream overlay active: " + active);
        mLogger.logOverlayActive(active);
        modifyState(active ? OP_SET_STATE : OP_CLEAR_STATE, STATE_DREAM_OVERLAY_ACTIVE);
    }

@@ -314,7 +314,7 @@ public class DreamOverlayStateController implements
     * @param active {@code true} if low light mode is active, {@code false} otherwise.
     */
    public void setLowLightActive(boolean active) {
        mLogger.d(TAG, "Low light mode active: " + active);
        mLogger.logLowLightActive(active);

        if (isLowLightActive() && !active) {
            // Notify that we're exiting low light only on the transition from active to not active.
@@ -346,7 +346,7 @@ public class DreamOverlayStateController implements
     * @param hasAttention {@code true} if has the user's attention, {@code false} otherwise.
     */
    public void setHasAssistantAttention(boolean hasAttention) {
        mLogger.d(TAG, "Dream overlay has Assistant attention: " + hasAttention);
        mLogger.logHasAssistantAttention(hasAttention);
        modifyState(hasAttention ? OP_SET_STATE : OP_CLEAR_STATE, STATE_HAS_ASSISTANT_ATTENTION);
    }

@@ -355,7 +355,7 @@ public class DreamOverlayStateController implements
     * @param visible {@code true} if the status bar is visible, {@code false} otherwise.
     */
    public void setDreamOverlayStatusBarVisible(boolean visible) {
        mLogger.d(TAG, "Dream overlay status bar visible: " + visible);
        mLogger.logStatusBarVisible(visible);
        modifyState(
                visible ? OP_SET_STATE : OP_CLEAR_STATE, STATE_DREAM_OVERLAY_STATUS_BAR_VISIBLE);
    }
@@ -373,7 +373,7 @@ public class DreamOverlayStateController implements
     */
    public void setAvailableComplicationTypes(@Complication.ComplicationType int types) {
        mExecutor.execute(() -> {
            mLogger.d(TAG, "Available complication types: " + types);
            mLogger.logAvailableComplicationTypes(types);
            mAvailableComplicationTypes = types;
            mCallbacks.forEach(Callback::onAvailableComplicationTypesChanged);
        });
@@ -391,7 +391,7 @@ public class DreamOverlayStateController implements
     */
    public void setShouldShowComplications(boolean shouldShowComplications) {
        mExecutor.execute(() -> {
            mLogger.d(TAG, "Should show complications: " + shouldShowComplications);
            mLogger.logShouldShowComplications(shouldShowComplications);
            mShouldShowComplications = shouldShowComplications;
            mCallbacks.forEach(Callback::onAvailableComplicationTypesChanged);
        });
+6 −4
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ import com.android.systemui.R;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dreams.DreamOverlayStatusBarItemsProvider.StatusBarItem;
import com.android.systemui.dreams.dagger.DreamOverlayComponent;
import com.android.systemui.log.LogBuffer;
import com.android.systemui.log.dagger.DreamLog;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.CrossFadeHelper;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
@@ -161,7 +163,7 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
            DreamOverlayStatusBarItemsProvider statusBarItemsProvider,
            DreamOverlayStateController dreamOverlayStateController,
            UserTracker userTracker,
            DreamLogger dreamLogger) {
            @DreamLog LogBuffer logBuffer) {
        super(view);
        mResources = resources;
        mMainExecutor = mainExecutor;
@@ -177,7 +179,7 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
        mZenModeController = zenModeController;
        mDreamOverlayStateController = dreamOverlayStateController;
        mUserTracker = userTracker;
        mLogger = dreamLogger;
        mLogger = new DreamLogger(logBuffer, TAG);

        // Register to receive show/hide updates for the system status bar. Our custom status bar
        // needs to hide when the system status bar is showing to ovoid overlapping status bars.
@@ -346,8 +348,8 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
            @Nullable String contentDescription) {
        mMainExecutor.execute(() -> {
            if (mIsAttached) {
                mLogger.d(TAG, (show ? "Showing" : "Hiding") + " dream status bar item: "
                        + DreamOverlayStatusBarView.getLoggableStatusIconType(iconType));
                mLogger.logShowOrHideStatusBarItem(
                        show, DreamOverlayStatusBarView.getLoggableStatusIconType(iconType));
                mView.showIcon(iconType, show, contentDescription);
            }
        });
+2 −4
Original line number Diff line number Diff line
@@ -28,10 +28,10 @@ import androidx.lifecycle.Observer;
import androidx.test.filters.SmallTest;

import com.android.systemui.SysuiTestCase;
import com.android.systemui.dreams.DreamLogger;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.flags.FakeFeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.log.core.FakeLogBuffer;
import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.time.FakeSystemClock;

@@ -57,8 +57,6 @@ public class ComplicationCollectionLiveDataTest extends SysuiTestCase {
    private FakeFeatureFlags mFeatureFlags;
    @Mock
    private Observer mObserver;
    @Mock
    private DreamLogger mLogger;

    @Before
    public void setUp() {
@@ -70,7 +68,7 @@ public class ComplicationCollectionLiveDataTest extends SysuiTestCase {
                mExecutor,
                /* overlayEnabled= */ true,
                mFeatureFlags,
                mLogger);
                FakeLogBuffer.Factory.Companion.create());
        mLiveData = new ComplicationCollectionLiveData(mStateController);
    }

Loading