From be4a1a291185f55f1e0525de3e68215ae891f989 Mon Sep 17 00:00:00 2001 From: Jordan Demeulenaere Date: Fri, 6 Jan 2023 12:47:02 +0100 Subject: [PATCH] Add a Microbenchmark for the PeopleSpace activity (2/2) Bug: 238993727 Test: PeopleSpaceActivityTest Change-Id: I1fcf58875f8f07c9b810870944717ae7eab31724 --- .../compose/modifiers/SysuiTestTag.kt | 32 +++++++++++++++++++ .../people/ui/compose/PeopleScreen.kt | 5 ++- .../systemui/people/PeopleSpaceActivity.java | 2 ++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 packages/SystemUI/compose/features/src/com/android/systemui/compose/modifiers/SysuiTestTag.kt diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/compose/modifiers/SysuiTestTag.kt b/packages/SystemUI/compose/features/src/com/android/systemui/compose/modifiers/SysuiTestTag.kt new file mode 100644 index 0000000000000..9eb78e14ab4ed --- /dev/null +++ b/packages/SystemUI/compose/features/src/com/android/systemui/compose/modifiers/SysuiTestTag.kt @@ -0,0 +1,32 @@ +/* + * 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.compose.modifiers + +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.testTagsAsResourceId + +/** + * Set a test tag on this node so that it is associated with [resId]. This node will then be + * accessible by integration tests using `sysuiResSelector(resId)`. + */ +@OptIn(ExperimentalComposeUiApi::class) +fun Modifier.sysuiResTag(resId: String): Modifier { + return this.semantics { testTagsAsResourceId = true }.testTag("com.android.systemui:id/$resId") +} diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/people/ui/compose/PeopleScreen.kt b/packages/SystemUI/compose/features/src/com/android/systemui/people/ui/compose/PeopleScreen.kt index 23dacf9946f33..3d7be7735a34f 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/people/ui/compose/PeopleScreen.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/people/ui/compose/PeopleScreen.kt @@ -51,6 +51,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.repeatOnLifecycle import com.android.compose.theme.LocalAndroidColorScheme import com.android.systemui.R +import com.android.systemui.compose.modifiers.sysuiResTag import com.android.systemui.people.ui.viewmodel.PeopleTileViewModel import com.android.systemui.people.ui.viewmodel.PeopleViewModel @@ -110,7 +111,9 @@ private fun PeopleScreenWithConversations( recentTiles: List, onTileClicked: (PeopleTileViewModel) -> Unit, ) { - Column { + Column( + Modifier.sysuiResTag("top_level_with_conversations"), + ) { Column( Modifier.fillMaxWidth().padding(PeopleSpacePadding), horizontalAlignment = Alignment.CenterHorizontally, diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java index fba5f63ea9c78..7f0f894152808 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java @@ -68,8 +68,10 @@ public class PeopleSpaceActivity extends ComponentActivity { }; if (ComposeFacade.INSTANCE.isComposeAvailable()) { + Log.d(TAG, "Using the Compose implementation of the PeopleSpaceActivity"); ComposeFacade.INSTANCE.setPeopleSpaceActivityContent(this, viewModel, onResult); } else { + Log.d(TAG, "Using the View implementation of the PeopleSpaceActivity"); ViewGroup view = PeopleViewBinder.create(this); PeopleViewBinder.bind(view, viewModel, /* lifecycleOwner= */ this, onResult); setContentView(view);