diff options
| author | 2024-07-12 19:43:50 +0000 | |
|---|---|---|
| committer | 2024-07-15 16:28:02 +0000 | |
| commit | 3b17f3fd175e65967fdbef9e64fc18d81b8de39f (patch) | |
| tree | f53d65e7eadc211fc722e15cd9706ccda6f2e71a | |
| parent | d70220cb06548c0bcfeeff93f0081993fa6663d6 (diff) | |
[SB][Screen Chips] Convert MediaProjectionRepo logs to LogBuffer.
Bug: 351785188
Bug: 332662551
Flag: com.android.systemui.status_bar_screen_sharing_chips
Flag: com.android.systemui.pss_task_switcher
(Note on flag stanzas: This repository is used by two features, each
guarded by one of those flags)
Test: Projection screen to different apps, then dump `MediaProjection`
-> verify logging
Test: atest MediaProjectionManagerRepositoryTest
Change-Id: I76776abdd60ee4cddcd0bec636c445c99982ed13
5 files changed, 72 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/MediaProjectionLog.kt b/packages/SystemUI/src/com/android/systemui/mediaprojection/MediaProjectionLog.kt new file mode 100644 index 000000000000..a80bc0975197 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/MediaProjectionLog.kt @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2024 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.mediaprojection + +import javax.inject.Qualifier + +/** Logs for media projection related events. */ +@Qualifier +@MustBeDocumented +@Retention(AnnotationRetention.RUNTIME) +annotation class MediaProjectionLog diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/MediaProjectionModule.kt b/packages/SystemUI/src/com/android/systemui/mediaprojection/MediaProjectionModule.kt index 34894599aaf9..7fd77a9bdb00 100644 --- a/packages/SystemUI/src/com/android/systemui/mediaprojection/MediaProjectionModule.kt +++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/MediaProjectionModule.kt @@ -16,12 +16,25 @@ package com.android.systemui.mediaprojection +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.log.LogBuffer +import com.android.systemui.log.LogBufferFactory import com.android.systemui.mediaprojection.data.repository.MediaProjectionManagerRepository import com.android.systemui.mediaprojection.data.repository.MediaProjectionRepository import dagger.Binds import dagger.Module +import dagger.Provides @Module interface MediaProjectionModule { @Binds fun mediaRepository(impl: MediaProjectionManagerRepository): MediaProjectionRepository + + companion object { + @Provides + @SysUISingleton + @MediaProjectionLog + fun provideMediaProjectionLogBuffer(factory: LogBufferFactory): LogBuffer { + return factory.create("MediaProjection", 50) + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepository.kt b/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepository.kt index c90f1970671d..5704e8048b7d 100644 --- a/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepository.kt @@ -21,7 +21,6 @@ import android.hardware.display.DisplayManager import android.media.projection.MediaProjectionInfo import android.media.projection.MediaProjectionManager import android.os.Handler -import android.util.Log import android.view.ContentRecordingSession import android.view.ContentRecordingSession.RECORD_CONTENT_DISPLAY import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging @@ -29,6 +28,9 @@ import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.log.LogBuffer +import com.android.systemui.log.core.LogLevel +import com.android.systemui.mediaprojection.MediaProjectionLog import com.android.systemui.mediaprojection.MediaProjectionServiceHelper import com.android.systemui.mediaprojection.data.model.MediaProjectionState import com.android.systemui.mediaprojection.taskswitcher.data.repository.TasksRepository @@ -56,22 +58,27 @@ constructor( @Background private val backgroundDispatcher: CoroutineDispatcher, private val tasksRepository: TasksRepository, private val mediaProjectionServiceHelper: MediaProjectionServiceHelper, + @MediaProjectionLog private val logger: LogBuffer, ) : MediaProjectionRepository { override suspend fun switchProjectedTask(task: RunningTaskInfo) { withContext(backgroundDispatcher) { if (mediaProjectionServiceHelper.updateTaskRecordingSession(task.token)) { - Log.d(TAG, "Successfully switched projected task") + logger.log(TAG, LogLevel.DEBUG, {}, { "Successfully switched projected task" }) } else { - Log.d(TAG, "Failed to switch projected task") + logger.log(TAG, LogLevel.WARNING, {}, { "Failed to switch projected task" }) } } } override suspend fun stopProjecting() { withContext(backgroundDispatcher) { - // TODO(b/332662551): Convert Logcat to LogBuffer. - Log.d(TAG, "Requesting MediaProjectionManager#stopActiveProjection") + logger.log( + TAG, + LogLevel.DEBUG, + {}, + { "Requesting MediaProjectionManager#stopActiveProjection" }, + ) mediaProjectionManager.stopActiveProjection() } } @@ -81,12 +88,22 @@ constructor( val callback = object : MediaProjectionManager.Callback() { override fun onStart(info: MediaProjectionInfo?) { - Log.d(TAG, "MediaProjectionManager.Callback#onStart") + logger.log( + TAG, + LogLevel.DEBUG, + {}, + { "MediaProjectionManager.Callback#onStart" }, + ) trySendWithFailureLogging(CallbackEvent.OnStart, TAG) } override fun onStop(info: MediaProjectionInfo?) { - Log.d(TAG, "MediaProjectionManager.Callback#onStop") + logger.log( + TAG, + LogLevel.DEBUG, + {}, + { "MediaProjectionManager.Callback#onStop" }, + ) trySendWithFailureLogging(CallbackEvent.OnStop, TAG) } @@ -94,7 +111,12 @@ constructor( info: MediaProjectionInfo, session: ContentRecordingSession? ) { - Log.d(TAG, "MediaProjectionManager.Callback#onSessionStarted: $session") + logger.log( + TAG, + LogLevel.DEBUG, + { str1 = session.toString() }, + { "MediaProjectionManager.Callback#onSessionStarted: $str1" }, + ) trySendWithFailureLogging( CallbackEvent.OnRecordingSessionSet(info, session), TAG, diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepositoryTest.kt index 5db898115f2d..785d5a8e6184 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionManagerRepositoryTest.kt @@ -30,6 +30,7 @@ import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope +import com.android.systemui.log.logcatLogBuffer import com.android.systemui.mediaprojection.data.model.MediaProjectionState import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createToken @@ -273,6 +274,7 @@ class MediaProjectionManagerRepositoryTest : SysuiTestCase() { applicationScope = kosmos.applicationCoroutineScope, backgroundDispatcher = kosmos.testDispatcher, mediaProjectionServiceHelper = fakeMediaProjectionManager.helper, + logger = logcatLogBuffer("TestMediaProjection"), ) val state by collectLastValue(repoWithTimingControl.mediaProjectionState) diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionRepositoryKosmos.kt index 81ba77a341b7..04122742bb0d 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionRepositoryKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/data/repository/MediaProjectionRepositoryKosmos.kt @@ -21,6 +21,7 @@ import android.os.Handler import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.testDispatcher +import com.android.systemui.log.logcatLogBuffer import com.android.systemui.mediaprojection.taskswitcher.activityTaskManagerTasksRepository import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager @@ -37,5 +38,6 @@ val Kosmos.realMediaProjectionRepository by tasksRepository = activityTaskManagerTasksRepository, backgroundDispatcher = testDispatcher, mediaProjectionServiceHelper = fakeMediaProjectionManager.helper, + logger = logcatLogBuffer("TestMediaProjection"), ) } |