Merge "Add Kotlin-friendly SingleActivityFactory class" into udc-qpr-dev

This commit is contained in:
Marcello Galhardo
2023-07-06 17:46:05 +00:00
committed by Android (Google) Code Review
10 changed files with 128 additions and 128 deletions

View File

@@ -11,9 +11,9 @@ import android.window.OnBackInvokedCallback
import android.window.OnBackInvokedDispatcher import android.window.OnBackInvokedDispatcher
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.runner.intercepting.SingleActivityFactory
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.controls.CustomIconCache import com.android.systemui.controls.CustomIconCache
import com.android.systemui.controls.controller.ControlsControllerImpl import com.android.systemui.controls.controller.ControlsControllerImpl
import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.FakeFeatureFlags
@@ -63,24 +63,19 @@ class ControlsEditingActivityTest : SysuiTestCase() {
@JvmField @JvmField
var activityRule = var activityRule =
ActivityTestRule( ActivityTestRule(
object : /* activityFactory= */ SingleActivityFactory {
SingleActivityFactory<TestableControlsEditingActivity>( TestableControlsEditingActivity(
TestableControlsEditingActivity::class.java featureFlags,
) { uiExecutor,
override fun create(intent: Intent?): TestableControlsEditingActivity { controller,
return TestableControlsEditingActivity( userTracker,
featureFlags, customIconCache,
uiExecutor, mockDispatcher,
controller, latch
userTracker, )
customIconCache,
mockDispatcher,
latch
)
}
}, },
false, /* initialTouchMode= */ false,
false /* launchActivity= */ false,
) )
@Before @Before

View File

@@ -13,9 +13,9 @@ import android.window.OnBackInvokedDispatcher
import androidx.test.filters.FlakyTest import androidx.test.filters.FlakyTest
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.runner.intercepting.SingleActivityFactory
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.controls.ControlStatus import com.android.systemui.controls.ControlStatus
import com.android.systemui.controls.ControlsServiceInfo import com.android.systemui.controls.ControlsServiceInfo
import com.android.systemui.controls.controller.ControlsController import com.android.systemui.controls.controller.ControlsController
@@ -91,24 +91,19 @@ class ControlsFavoritingActivityTest : SysuiTestCase() {
@JvmField @JvmField
var activityRule = var activityRule =
ActivityTestRule( ActivityTestRule(
object : /* activityFactory= */ SingleActivityFactory {
SingleActivityFactory<TestableControlsFavoritingActivity>( TestableControlsFavoritingActivity(
TestableControlsFavoritingActivity::class.java featureFlags,
) { executor,
override fun create(intent: Intent?): TestableControlsFavoritingActivity { controller,
return TestableControlsFavoritingActivity( listingController,
featureFlags, userTracker,
executor, mockDispatcher,
controller, latch
listingController, )
userTracker,
mockDispatcher,
latch
)
}
}, },
false, /* initialTouchMode= */ false,
false /* launchActivity= */ false,
) )
@Before @Before

View File

@@ -29,8 +29,8 @@ import android.window.OnBackInvokedCallback
import android.window.OnBackInvokedDispatcher import android.window.OnBackInvokedDispatcher
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.runner.intercepting.SingleActivityFactory
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.controls.ControlsServiceInfo import com.android.systemui.controls.ControlsServiceInfo
import com.android.systemui.controls.controller.ControlsController import com.android.systemui.controls.controller.ControlsController
import com.android.systemui.controls.panels.AuthorizedPanelsRepository import com.android.systemui.controls.panels.AuthorizedPanelsRepository
@@ -91,26 +91,21 @@ class ControlsProviderSelectorActivityTest : SysuiTestCase() {
@JvmField @JvmField
var activityRule = var activityRule =
ActivityTestRule( ActivityTestRule(
object : /* activityFactory= */ SingleActivityFactory {
SingleActivityFactory<TestableControlsProviderSelectorActivity>( TestableControlsProviderSelectorActivity(
TestableControlsProviderSelectorActivity::class.java executor,
) { backExecutor,
override fun create(intent: Intent?): TestableControlsProviderSelectorActivity { listingController,
return TestableControlsProviderSelectorActivity( controlsController,
executor, userTracker,
backExecutor, authorizedPanelsRepository,
listingController, dialogFactory,
controlsController, mockDispatcher,
userTracker, latch
authorizedPanelsRepository, )
dialogFactory,
mockDispatcher,
latch
)
}
}, },
false, /* initialTouchMode= */ false,
false /* launchActivity= */ false,
) )
@Before @Before

View File

@@ -30,8 +30,8 @@ import android.testing.TestableLooper
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.test.filters.MediumTest import androidx.test.filters.MediumTest
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.runner.intercepting.SingleActivityFactory
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.controls.controller.ControlInfo import com.android.systemui.controls.controller.ControlInfo
import com.android.systemui.controls.controller.ControlsController import com.android.systemui.controls.controller.ControlsController
import com.android.systemui.settings.UserTracker import com.android.systemui.settings.UserTracker
@@ -81,19 +81,18 @@ class ControlsRequestDialogTest : SysuiTestCase() {
@Rule @Rule
@JvmField @JvmField
var activityRule = ActivityTestRule<TestControlsRequestDialog>( var activityRule = ActivityTestRule(
object : SingleActivityFactory<TestControlsRequestDialog>( /* activityFactory= */ SingleActivityFactory {
TestControlsRequestDialog::class.java TestControlsRequestDialog(
) { mainExecutor,
override fun create(intent: Intent?): TestControlsRequestDialog { controller,
return TestControlsRequestDialog( userTracker,
mainExecutor, listingController
controller, )
userTracker, },
listingController /* initialTouchMode= */ false,
) /* launchActivity= */ false,
} )
}, false, false)
private lateinit var control: Control private lateinit var control: Control

View File

@@ -23,8 +23,8 @@ import android.testing.AndroidTestingRunner
import android.testing.TestableLooper import android.testing.TestableLooper
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.runner.intercepting.SingleActivityFactory
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.controls.settings.ControlsSettingsDialogManager import com.android.systemui.controls.settings.ControlsSettingsDialogManager
import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.FeatureFlags
@@ -53,23 +53,18 @@ class ControlsActivityTest : SysuiTestCase() {
@JvmField @JvmField
var activityRule = var activityRule =
ActivityTestRule( ActivityTestRule(
object : /* activityFactory= */ SingleActivityFactory {
SingleActivityFactory<TestableControlsActivity>( TestableControlsActivity(
TestableControlsActivity::class.java uiController,
) { broadcastDispatcher,
override fun create(intent: Intent?): TestableControlsActivity { dreamManager,
return TestableControlsActivity( featureFlags,
uiController, controlsSettingsDialogManager,
broadcastDispatcher, keyguardStateController,
dreamManager, )
featureFlags,
controlsSettingsDialogManager,
keyguardStateController,
)
}
}, },
false, /* initialTouchMode= */ false,
false /* launchActivity= */ false,
) )
@Before @Before

View File

@@ -22,9 +22,9 @@ import android.testing.AndroidTestingRunner
import android.testing.TestableLooper import android.testing.TestableLooper
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.runner.intercepting.SingleActivityFactory
import com.android.dx.mockito.inline.extended.ExtendedMockito.verify import com.android.dx.mockito.inline.extended.ExtendedMockito.verify
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.notetask.LaunchNotesRoleSettingsTrampolineActivity.Companion.ACTION_MANAGE_NOTES_ROLE_FROM_QUICK_AFFORDANCE import com.android.systemui.notetask.LaunchNotesRoleSettingsTrampolineActivity.Companion.ACTION_MANAGE_NOTES_ROLE_FROM_QUICK_AFFORDANCE
import com.android.systemui.notetask.NoteTaskEntryPoint.QUICK_AFFORDANCE import com.android.systemui.notetask.NoteTaskEntryPoint.QUICK_AFFORDANCE
import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.any
@@ -47,13 +47,9 @@ class LaunchNotesRoleSettingsTrampolineActivityTest : SysuiTestCase() {
@Rule @Rule
@JvmField @JvmField
val activityRule = val activityRule =
ActivityTestRule<LaunchNotesRoleSettingsTrampolineActivity>( ActivityTestRule(
/* activityFactory= */ object : /* activityFactory= */ SingleActivityFactory {
SingleActivityFactory<LaunchNotesRoleSettingsTrampolineActivity>( LaunchNotesRoleSettingsTrampolineActivity(noteTaskController)
LaunchNotesRoleSettingsTrampolineActivity::class.java
) {
override fun create(intent: Intent?) =
LaunchNotesRoleSettingsTrampolineActivity(noteTaskController)
}, },
/* initialTouchMode= */ false, /* initialTouchMode= */ false,
/* launchActivity= */ false, /* launchActivity= */ false,

View File

@@ -16,14 +16,13 @@
package com.android.systemui.notetask.shortcut package com.android.systemui.notetask.shortcut
import android.content.Intent
import android.testing.AndroidTestingRunner import android.testing.AndroidTestingRunner
import android.testing.TestableLooper import android.testing.TestableLooper
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.runner.intercepting.SingleActivityFactory
import com.android.dx.mockito.inline.extended.ExtendedMockito.verify import com.android.dx.mockito.inline.extended.ExtendedMockito.verify
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.notetask.NoteTaskController import com.android.systemui.notetask.NoteTaskController
import com.android.systemui.notetask.NoteTaskEntryPoint import com.android.systemui.notetask.NoteTaskEntryPoint
import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.any
@@ -47,12 +46,8 @@ class LaunchNoteTaskActivityTest : SysuiTestCase() {
@JvmField @JvmField
val activityRule = val activityRule =
ActivityTestRule<LaunchNoteTaskActivity>( ActivityTestRule<LaunchNoteTaskActivity>(
/* activityFactory= */ object : /* activityFactory= */ SingleActivityFactory {
SingleActivityFactory<LaunchNoteTaskActivity>(LaunchNoteTaskActivity::class.java) { LaunchNoteTaskActivity(controller = noteTaskController)
override fun create(intent: Intent?) =
LaunchNoteTaskActivity(
controller = noteTaskController,
)
}, },
/* initialTouchMode= */ false, /* initialTouchMode= */ false,
/* launchActivity= */ false, /* launchActivity= */ false,

View File

@@ -16,7 +16,6 @@
package com.android.systemui.settings.brightness package com.android.systemui.settings.brightness
import android.content.Intent
import android.graphics.Rect import android.graphics.Rect
import android.os.Handler import android.os.Handler
import android.testing.AndroidTestingRunner import android.testing.AndroidTestingRunner
@@ -25,9 +24,9 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.runner.intercepting.SingleActivityFactory
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.android.systemui.settings.FakeDisplayTracker import com.android.systemui.settings.FakeDisplayTracker
import com.android.systemui.settings.UserTracker import com.android.systemui.settings.UserTracker
import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.any
@@ -59,19 +58,17 @@ class BrightnessDialogTest : SysuiTestCase() {
@JvmField @JvmField
var activityRule = var activityRule =
ActivityTestRule( ActivityTestRule(
object : SingleActivityFactory<TestDialog>(TestDialog::class.java) { /* activityFactory= */ SingleActivityFactory {
override fun create(intent: Intent?): TestDialog { TestDialog(
return TestDialog( userTracker,
userTracker, displayTracker,
displayTracker, brightnessSliderControllerFactory,
brightnessSliderControllerFactory, mainExecutor,
mainExecutor, backgroundHandler
backgroundHandler )
)
}
}, },
false, /* initialTouchMode= */ false,
false /* launchActivity= */ false,
) )
@Before @Before

View File

@@ -25,8 +25,8 @@ import android.testing.TestableLooper
import android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS import android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import androidx.test.rule.ActivityTestRule import androidx.test.rule.ActivityTestRule
import androidx.test.runner.intercepting.SingleActivityFactory
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.activity.SingleActivityFactory
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import javax.inject.Inject import javax.inject.Inject
@@ -49,19 +49,17 @@ class UsbPermissionActivityTest : SysuiTestCase() {
open class UsbPermissionActivityTestable @Inject constructor ( open class UsbPermissionActivityTestable @Inject constructor (
val message: UsbAudioWarningDialogMessage val message: UsbAudioWarningDialogMessage
) ) : UsbPermissionActivity(UsbAudioWarningDialogMessage())
: UsbPermissionActivity(UsbAudioWarningDialogMessage())
@Rule @Rule
@JvmField @JvmField
var activityRule = ActivityTestRule<UsbPermissionActivityTestable>( var activityRule = ActivityTestRule(
object : SingleActivityFactory<UsbPermissionActivityTestable>( /* activityFactory= */ SingleActivityFactory {
UsbPermissionActivityTestable::class.java UsbPermissionActivityTestable(mMessage)
) { },
override fun create(intent: Intent?): UsbPermissionActivityTestable { /* initialTouchMode= */ false,
return UsbPermissionActivityTestable(mMessage) /* launchActivity= */ false,
} )
}, false, false)
private val activityIntent = Intent(mContext, UsbPermissionActivityTestable::class.java) private val activityIntent = Intent(mContext, UsbPermissionActivityTestable::class.java)
.apply { .apply {

View File

@@ -0,0 +1,35 @@
/*
* 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.activity
import android.app.Activity
import android.content.Intent
import androidx.test.runner.intercepting.SingleActivityFactory
/**
* Builds a new [SingleActivityFactory] which delegating any call of [SingleActivityFactory.create]
* to the [instantiate] parameter.
*
* For more details, see [SingleActivityFactory].
*/
inline fun <reified T : Activity> SingleActivityFactory(
crossinline instantiate: (intent: Intent?) -> T,
): SingleActivityFactory<T> {
return object : SingleActivityFactory<T>(T::class.java) {
override fun create(intent: Intent?): T = instantiate(intent)
}
}