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

Commit 6595af03 authored by Caitlin Shkuratov's avatar Caitlin Shkuratov
Browse files

[Chipbar] Add logs at the exact time WindowManager calls are made.

Bug: 271411294
Test: Verified logs occurred at the correct times when the chipbar
appeared and disappered

Change-Id: I3c1f0ebb72407ff4b2a073ea927f5a0ab0e71250
parent 8b3f856c
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -274,6 +274,7 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
            it.title = newInfo.windowTitle
        }
        newView.keepScreenOn = true
        logger.logViewAddedToWindowManager(displayInfo.info, newView)
        windowManager.addView(newView, paramsWithTitle)
        animateViewIn(newView)
    }
@@ -286,6 +287,11 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
        val view = checkNotNull(currentDisplayInfo.view) {
            "First item in activeViews list must have a valid view"
        }
        logger.logViewRemovedFromWindowManager(
            currentDisplayInfo.info,
            view,
            isReinflation = true,
        )
        windowManager.removeView(view)
        inflateAndUpdateView(currentDisplayInfo)
    }
@@ -382,6 +388,7 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
        }
        displayInfo.view = null // Need other places??
        animateViewOut(view, removalReason) {
            logger.logViewRemovedFromWindowManager(displayInfo.info, view)
            windowManager.removeView(view)
            displayInfo.wakeLock?.release(displayInfo.info.wakeReason)
        }
+43 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.temporarydisplay

import android.view.View
import com.android.systemui.plugins.log.LogBuffer
import com.android.systemui.plugins.log.LogLevel

@@ -141,4 +142,46 @@ open class TemporaryViewLogger<T : TemporaryViewInfo>(
            { "Removal of view with id=$str2 is ignored because $str1" }
        )
    }

    fun logViewAddedToWindowManager(info: T, view: View) {
        buffer.log(
            tag,
            LogLevel.DEBUG,
            {
                str1 = info.id
                str2 = info.windowTitle
                str3 = view.javaClass.name
                int1 = view.getIdForLogging()
            },
            {
                "Adding view to window manager. " +
                    "id=$str1 window=$str2 view=$str3(id=${Integer.toHexString(int1)})"
            }
        )
    }

    fun logViewRemovedFromWindowManager(info: T, view: View, isReinflation: Boolean = false) {
        buffer.log(
            tag,
            LogLevel.DEBUG,
            {
                str1 = info.id
                str2 = info.windowTitle
                str3 = view.javaClass.name
                int1 = view.getIdForLogging()
                bool1 = isReinflation
            },
            {
                "Removing view from window manager${if (bool1) " due to reinflation" else ""}. " +
                    "id=$str1 window=$str2 view=$str3(id=${Integer.toHexString(int1)})"
            }
        )
    }

    companion object {
        private fun View.getIdForLogging(): Int {
            // The identityHashCode is guaranteed to be constant for the lifetime of the object.
            return System.identityHashCode(this)
        }
    }
}