Merge changes If6a02209,Ied39acb0 into sc-v2-dev am: 5150828ce3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16303036 Change-Id: I5c3705a856c5c0d932db2e62720656c71a885a50
This commit is contained in:
@@ -22,6 +22,6 @@
|
|||||||
xmlns:sysui="http://schemas.android.com/apk/res-auto"
|
xmlns:sysui="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
sysui:verticalSpacing="4dp"
|
sysui:verticalSpacing="20dp"
|
||||||
sysui:horizontalSpacing="4dp"
|
sysui:horizontalSpacing="4dp"
|
||||||
style="@style/UserDetailView" />
|
style="@style/UserDetailView" />
|
||||||
@@ -24,8 +24,6 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:gravity="top|center_horizontal"
|
android:gravity="top|center_horizontal"
|
||||||
android:paddingTop="16dp"
|
|
||||||
android:minHeight="112dp"
|
|
||||||
android:clipChildren="false"
|
android:clipChildren="false"
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
|
|||||||
@@ -15,75 +15,19 @@
|
|||||||
~ See the License for the specific language governing permissions and
|
~ See the License for the specific language governing permissions and
|
||||||
~ limitations under the License.
|
~ limitations under the License.
|
||||||
-->
|
-->
|
||||||
|
<FrameLayout
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:sysui="http://schemas.android.com/apk/res-auto"
|
xmlns:sysui="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="24dp"
|
|
||||||
android:layout_marginStart="16dp"
|
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
>
|
>
|
||||||
<TextView
|
|
||||||
android:id="@+id/title"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:textAlignment="center"
|
|
||||||
android:text="@string/qs_user_switch_dialog_title"
|
|
||||||
android:textAppearance="@style/TextAppearance.Dialog.Title"
|
|
||||||
android:layout_marginBottom="32dp"
|
|
||||||
sysui:layout_constraintTop_toTopOf="parent"
|
|
||||||
sysui:layout_constraintStart_toStartOf="parent"
|
|
||||||
sysui:layout_constraintEnd_toEndOf="parent"
|
|
||||||
sysui:layout_constraintBottom_toTopOf="@id/grid"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<com.android.systemui.qs.PseudoGridView
|
<com.android.systemui.qs.PseudoGridView
|
||||||
android:id="@+id/grid"
|
android:id="@+id/grid"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="28dp"
|
android:layout_gravity="center"
|
||||||
sysui:verticalSpacing="4dp"
|
sysui:verticalSpacing="20dp"
|
||||||
sysui:horizontalSpacing="4dp"
|
sysui:horizontalSpacing="4dp"
|
||||||
sysui:fixedChildWidth="80dp"
|
sysui:fixedChildWidth="80dp"
|
||||||
sysui:layout_constraintTop_toBottomOf="@id/title"
|
|
||||||
sysui:layout_constraintStart_toStartOf="parent"
|
|
||||||
sysui:layout_constraintEnd_toEndOf="parent"
|
|
||||||
sysui:layout_constraintBottom_toTopOf="@id/barrier"
|
|
||||||
/>
|
/>
|
||||||
|
</FrameLayout>
|
||||||
<androidx.constraintlayout.widget.Barrier
|
|
||||||
android:id="@+id/barrier"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
sysui:barrierDirection="top"
|
|
||||||
sysui:constraint_referenced_ids="settings,done"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/settings"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="48dp"
|
|
||||||
android:text="@string/quick_settings_more_user_settings"
|
|
||||||
sysui:layout_constraintTop_toBottomOf="@id/barrier"
|
|
||||||
sysui:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
sysui:layout_constraintStart_toStartOf="parent"
|
|
||||||
sysui:layout_constraintEnd_toStartOf="@id/done"
|
|
||||||
sysui:layout_constraintHorizontal_chainStyle="spread_inside"
|
|
||||||
style="@style/Widget.Dialog.Button.BorderButton"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/done"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="48dp"
|
|
||||||
android:text="@string/quick_settings_done"
|
|
||||||
sysui:layout_constraintTop_toBottomOf="@id/barrier"
|
|
||||||
sysui:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
sysui:layout_constraintStart_toEndOf="@id/settings"
|
|
||||||
sysui:layout_constraintEnd_toEndOf="parent"
|
|
||||||
style="@style/Widget.Dialog.Button"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
@@ -133,10 +133,7 @@ public class PseudoGridView extends ViewGroup {
|
|||||||
x += width + mHorizontalSpacing;
|
x += width + mHorizontalSpacing;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
y += maxHeight;
|
y += maxHeight + mVerticalSpacing;
|
||||||
if (row > 0) {
|
|
||||||
y += mVerticalSpacing;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2021 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.qs.user
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.view.Gravity
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.view.WindowInsets
|
|
||||||
import android.view.WindowManager
|
|
||||||
import com.android.systemui.qs.PseudoGridView
|
|
||||||
import com.android.systemui.statusbar.phone.SystemUIDialog
|
|
||||||
import com.android.systemui.R
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dialog for switching users or creating new ones.
|
|
||||||
*/
|
|
||||||
class UserDialog(
|
|
||||||
context: Context
|
|
||||||
) : SystemUIDialog(context) {
|
|
||||||
|
|
||||||
// create() is no-op after creation
|
|
||||||
private lateinit var _doneButton: View
|
|
||||||
/**
|
|
||||||
* Button with text "Done" in dialog.
|
|
||||||
*/
|
|
||||||
val doneButton: View
|
|
||||||
get() {
|
|
||||||
create()
|
|
||||||
return _doneButton
|
|
||||||
}
|
|
||||||
|
|
||||||
private lateinit var _settingsButton: View
|
|
||||||
/**
|
|
||||||
* Button with text "User Settings" in dialog.
|
|
||||||
*/
|
|
||||||
val settingsButton: View
|
|
||||||
get() {
|
|
||||||
create()
|
|
||||||
return _settingsButton
|
|
||||||
}
|
|
||||||
|
|
||||||
private lateinit var _grid: PseudoGridView
|
|
||||||
/**
|
|
||||||
* Grid to populate with user avatar from adapter
|
|
||||||
*/
|
|
||||||
val grid: ViewGroup
|
|
||||||
get() {
|
|
||||||
create()
|
|
||||||
return _grid
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
window?.apply {
|
|
||||||
setType(WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL)
|
|
||||||
attributes.fitInsetsTypes = attributes.fitInsetsTypes or WindowInsets.Type.statusBars()
|
|
||||||
attributes.receiveInsetsIgnoringZOrder = true
|
|
||||||
setGravity(Gravity.CENTER)
|
|
||||||
}
|
|
||||||
setContentView(R.layout.qs_user_dialog_content)
|
|
||||||
|
|
||||||
_doneButton = requireViewById(R.id.done)
|
|
||||||
_settingsButton = requireViewById(R.id.settings)
|
|
||||||
_grid = requireViewById(R.id.grid)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -21,13 +21,16 @@ import android.content.Context
|
|||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.annotation.VisibleForTesting
|
import androidx.annotation.VisibleForTesting
|
||||||
|
import com.android.systemui.R
|
||||||
import com.android.systemui.animation.DialogLaunchAnimator
|
import com.android.systemui.animation.DialogLaunchAnimator
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
import com.android.systemui.plugins.ActivityStarter
|
import com.android.systemui.plugins.ActivityStarter
|
||||||
import com.android.systemui.plugins.FalsingManager
|
import com.android.systemui.plugins.FalsingManager
|
||||||
import com.android.systemui.qs.tiles.UserDetailView
|
import com.android.systemui.qs.tiles.UserDetailView
|
||||||
|
import com.android.systemui.statusbar.phone.SystemUIDialog
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Provider
|
import javax.inject.Provider
|
||||||
|
|
||||||
@@ -40,7 +43,7 @@ class UserSwitchDialogController @VisibleForTesting constructor(
|
|||||||
private val activityStarter: ActivityStarter,
|
private val activityStarter: ActivityStarter,
|
||||||
private val falsingManager: FalsingManager,
|
private val falsingManager: FalsingManager,
|
||||||
private val dialogLaunchAnimator: DialogLaunchAnimator,
|
private val dialogLaunchAnimator: DialogLaunchAnimator,
|
||||||
private val dialogFactory: (Context) -> UserDialog
|
private val dialogFactory: (Context) -> SystemUIDialog
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@@ -54,7 +57,7 @@ class UserSwitchDialogController @VisibleForTesting constructor(
|
|||||||
activityStarter,
|
activityStarter,
|
||||||
falsingManager,
|
falsingManager,
|
||||||
dialogLaunchAnimator,
|
dialogLaunchAnimator,
|
||||||
{ UserDialog(it) }
|
{ SystemUIDialog(it) }
|
||||||
)
|
)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -71,9 +74,10 @@ class UserSwitchDialogController @VisibleForTesting constructor(
|
|||||||
with(dialogFactory(view.context)) {
|
with(dialogFactory(view.context)) {
|
||||||
setShowForAllUsers(true)
|
setShowForAllUsers(true)
|
||||||
setCanceledOnTouchOutside(true)
|
setCanceledOnTouchOutside(true)
|
||||||
create() // Needs to be called before we can retrieve views
|
|
||||||
|
|
||||||
settingsButton.setOnClickListener {
|
setTitle(R.string.qs_user_switch_dialog_title)
|
||||||
|
setPositiveButton(R.string.quick_settings_done, null)
|
||||||
|
setNeutralButton(R.string.quick_settings_more_user_settings) { _, _ ->
|
||||||
if (!falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
|
if (!falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
|
||||||
dialogLaunchAnimator.disableAllCurrentDialogsExitAnimations()
|
dialogLaunchAnimator.disableAllCurrentDialogsExitAnimations()
|
||||||
activityStarter.postStartActivityDismissingKeyguard(
|
activityStarter.postStartActivityDismissingKeyguard(
|
||||||
@@ -81,12 +85,14 @@ class UserSwitchDialogController @VisibleForTesting constructor(
|
|||||||
0
|
0
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
dismiss()
|
|
||||||
}
|
}
|
||||||
doneButton.setOnClickListener { dismiss() }
|
val gridFrame = LayoutInflater.from(this.context)
|
||||||
|
.inflate(R.layout.qs_user_dialog_content, null)
|
||||||
|
setView(gridFrame)
|
||||||
|
|
||||||
val adapter = userDetailViewAdapterProvider.get()
|
val adapter = userDetailViewAdapterProvider.get()
|
||||||
adapter.linkToViewGroup(grid)
|
|
||||||
|
adapter.linkToViewGroup(gridFrame.findViewById(R.id.grid))
|
||||||
|
|
||||||
val hostDialog = dialogLaunchAnimator.showFromView(this, view)
|
val hostDialog = dialogLaunchAnimator.showFromView(this, view)
|
||||||
adapter.injectDialogShower(DialogShowerImpl(hostDialog, dialogLaunchAnimator))
|
adapter.injectDialogShower(DialogShowerImpl(hostDialog, dialogLaunchAnimator))
|
||||||
|
|||||||
@@ -1,62 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2021 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.qs.user
|
|
||||||
|
|
||||||
import android.testing.AndroidTestingRunner
|
|
||||||
import android.testing.TestableLooper
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.test.filters.SmallTest
|
|
||||||
import com.android.systemui.SysuiTestCase
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
|
||||||
import org.junit.After
|
|
||||||
import org.junit.Before
|
|
||||||
import org.junit.Test
|
|
||||||
import org.junit.runner.RunWith
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@RunWith(AndroidTestingRunner::class)
|
|
||||||
@TestableLooper.RunWithLooper
|
|
||||||
class UserDialogTest : SysuiTestCase() {
|
|
||||||
|
|
||||||
private lateinit var dialog: UserDialog
|
|
||||||
|
|
||||||
@Before
|
|
||||||
fun setUp() {
|
|
||||||
dialog = UserDialog(mContext)
|
|
||||||
}
|
|
||||||
|
|
||||||
@After
|
|
||||||
fun tearDown() {
|
|
||||||
dialog.dismiss()
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun doneButtonExists() {
|
|
||||||
assertThat(dialog.doneButton).isInstanceOf(View::class.java)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun settingsButtonExists() {
|
|
||||||
assertThat(dialog.settingsButton).isInstanceOf(View::class.java)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun gridExistsAndIsViewGroup() {
|
|
||||||
assertThat(dialog.grid).isInstanceOf(ViewGroup::class.java)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.android.systemui.qs.user
|
package com.android.systemui.qs.user
|
||||||
|
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
|
import android.content.DialogInterface
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.testing.AndroidTestingRunner
|
import android.testing.AndroidTestingRunner
|
||||||
@@ -28,6 +29,7 @@ import com.android.systemui.plugins.ActivityStarter
|
|||||||
import com.android.systemui.plugins.FalsingManager
|
import com.android.systemui.plugins.FalsingManager
|
||||||
import com.android.systemui.qs.PseudoGridView
|
import com.android.systemui.qs.PseudoGridView
|
||||||
import com.android.systemui.qs.tiles.UserDetailView
|
import com.android.systemui.qs.tiles.UserDetailView
|
||||||
|
import com.android.systemui.statusbar.phone.SystemUIDialog
|
||||||
import com.android.systemui.util.mockito.any
|
import com.android.systemui.util.mockito.any
|
||||||
import com.android.systemui.util.mockito.argumentCaptor
|
import com.android.systemui.util.mockito.argumentCaptor
|
||||||
import com.android.systemui.util.mockito.capture
|
import com.android.systemui.util.mockito.capture
|
||||||
@@ -43,7 +45,6 @@ import org.mockito.Mockito.`when`
|
|||||||
import org.mockito.Mockito.anyBoolean
|
import org.mockito.Mockito.anyBoolean
|
||||||
import org.mockito.Mockito.anyInt
|
import org.mockito.Mockito.anyInt
|
||||||
import org.mockito.Mockito.argThat
|
import org.mockito.Mockito.argThat
|
||||||
import org.mockito.Mockito.inOrder
|
|
||||||
import org.mockito.Mockito.never
|
import org.mockito.Mockito.never
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
@@ -53,27 +54,21 @@ import org.mockito.MockitoAnnotations
|
|||||||
class UserSwitchDialogControllerTest : SysuiTestCase() {
|
class UserSwitchDialogControllerTest : SysuiTestCase() {
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var dialog: UserDialog
|
private lateinit var dialog: SystemUIDialog
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var falsingManager: FalsingManager
|
private lateinit var falsingManager: FalsingManager
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var settingsView: View
|
|
||||||
@Mock
|
|
||||||
private lateinit var doneView: View
|
|
||||||
@Mock
|
|
||||||
private lateinit var activityStarter: ActivityStarter
|
private lateinit var activityStarter: ActivityStarter
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var userDetailViewAdapter: UserDetailView.Adapter
|
private lateinit var userDetailViewAdapter: UserDetailView.Adapter
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var launchView: View
|
private lateinit var launchView: View
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var gridView: PseudoGridView
|
|
||||||
@Mock
|
|
||||||
private lateinit var dialogLaunchAnimator: DialogLaunchAnimator
|
private lateinit var dialogLaunchAnimator: DialogLaunchAnimator
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var hostDialog: Dialog
|
private lateinit var hostDialog: Dialog
|
||||||
@Captor
|
@Captor
|
||||||
private lateinit var clickCaptor: ArgumentCaptor<View.OnClickListener>
|
private lateinit var clickCaptor: ArgumentCaptor<DialogInterface.OnClickListener>
|
||||||
|
|
||||||
private lateinit var controller: UserSwitchDialogController
|
private lateinit var controller: UserSwitchDialogController
|
||||||
|
|
||||||
@@ -81,11 +76,8 @@ class UserSwitchDialogControllerTest : SysuiTestCase() {
|
|||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockitoAnnotations.initMocks(this)
|
MockitoAnnotations.initMocks(this)
|
||||||
|
|
||||||
`when`(dialog.settingsButton).thenReturn(settingsView)
|
|
||||||
`when`(dialog.doneButton).thenReturn(doneView)
|
|
||||||
`when`(dialog.grid).thenReturn(gridView)
|
|
||||||
|
|
||||||
`when`(launchView.context).thenReturn(mContext)
|
`when`(launchView.context).thenReturn(mContext)
|
||||||
|
`when`(dialog.context).thenReturn(mContext)
|
||||||
`when`(dialogLaunchAnimator.showFromView(any(), any(), anyBoolean()))
|
`when`(dialogLaunchAnimator.showFromView(any(), any(), anyBoolean()))
|
||||||
.thenReturn(hostDialog)
|
.thenReturn(hostDialog)
|
||||||
|
|
||||||
@@ -104,30 +96,6 @@ class UserSwitchDialogControllerTest : SysuiTestCase() {
|
|||||||
verify(dialogLaunchAnimator).showFromView(dialog, launchView)
|
verify(dialogLaunchAnimator).showFromView(dialog, launchView)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun createCalledBeforeDoneButton() {
|
|
||||||
controller.showDialog(launchView)
|
|
||||||
val inOrder = inOrder(dialog)
|
|
||||||
inOrder.verify(dialog).create()
|
|
||||||
inOrder.verify(dialog).doneButton
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun createCalledBeforeSettingsButton() {
|
|
||||||
controller.showDialog(launchView)
|
|
||||||
val inOrder = inOrder(dialog)
|
|
||||||
inOrder.verify(dialog).create()
|
|
||||||
inOrder.verify(dialog).settingsButton
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun createCalledBeforeGrid() {
|
|
||||||
controller.showDialog(launchView)
|
|
||||||
val inOrder = inOrder(dialog)
|
|
||||||
inOrder.verify(dialog).create()
|
|
||||||
inOrder.verify(dialog).grid
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun dialog_showForAllUsers() {
|
fun dialog_showForAllUsers() {
|
||||||
controller.showDialog(launchView)
|
controller.showDialog(launchView)
|
||||||
@@ -143,51 +111,44 @@ class UserSwitchDialogControllerTest : SysuiTestCase() {
|
|||||||
@Test
|
@Test
|
||||||
fun adapterAndGridLinked() {
|
fun adapterAndGridLinked() {
|
||||||
controller.showDialog(launchView)
|
controller.showDialog(launchView)
|
||||||
verify(userDetailViewAdapter).linkToViewGroup(gridView)
|
verify(userDetailViewAdapter).linkToViewGroup(any<PseudoGridView>())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun clickDoneButton_dismiss() {
|
fun doneButtonSetWithNullHandler() {
|
||||||
controller.showDialog(launchView)
|
controller.showDialog(launchView)
|
||||||
|
|
||||||
verify(doneView).setOnClickListener(capture(clickCaptor))
|
verify(dialog).setPositiveButton(anyInt(), eq(null))
|
||||||
|
|
||||||
clickCaptor.value.onClick(doneView)
|
|
||||||
|
|
||||||
verify(activityStarter, never()).postStartActivityDismissingKeyguard(any(), anyInt())
|
|
||||||
verify(dialog).dismiss()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun clickSettingsButton_noFalsing_opensSettingsAndDismisses() {
|
fun clickSettingsButton_noFalsing_opensSettings() {
|
||||||
`when`(falsingManager.isFalseTap(anyInt())).thenReturn(false)
|
`when`(falsingManager.isFalseTap(anyInt())).thenReturn(false)
|
||||||
|
|
||||||
controller.showDialog(launchView)
|
controller.showDialog(launchView)
|
||||||
|
|
||||||
verify(settingsView).setOnClickListener(capture(clickCaptor))
|
verify(dialog).setNeutralButton(anyInt(), capture(clickCaptor))
|
||||||
|
|
||||||
clickCaptor.value.onClick(settingsView)
|
clickCaptor.value.onClick(dialog, DialogInterface.BUTTON_NEUTRAL)
|
||||||
|
|
||||||
verify(activityStarter)
|
verify(activityStarter)
|
||||||
.postStartActivityDismissingKeyguard(
|
.postStartActivityDismissingKeyguard(
|
||||||
argThat(IntentMatcher(Settings.ACTION_USER_SETTINGS)),
|
argThat(IntentMatcher(Settings.ACTION_USER_SETTINGS)),
|
||||||
eq(0)
|
eq(0)
|
||||||
)
|
)
|
||||||
verify(dialog).dismiss()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun clickSettingsButton_Falsing_notOpensSettingsAndDismisses() {
|
fun clickSettingsButton_Falsing_notOpensSettings() {
|
||||||
`when`(falsingManager.isFalseTap(anyInt())).thenReturn(true)
|
`when`(falsingManager.isFalseTap(anyInt())).thenReturn(true)
|
||||||
|
|
||||||
controller.showDialog(launchView)
|
controller.showDialog(launchView)
|
||||||
|
|
||||||
verify(settingsView).setOnClickListener(capture(clickCaptor))
|
verify(dialog).setNeutralButton(anyInt(), capture(clickCaptor))
|
||||||
|
|
||||||
clickCaptor.value.onClick(settingsView)
|
clickCaptor.value.onClick(dialog, DialogInterface.BUTTON_NEUTRAL)
|
||||||
|
|
||||||
verify(activityStarter, never()).postStartActivityDismissingKeyguard(any(), anyInt())
|
verify(activityStarter, never()).postStartActivityDismissingKeyguard(any(), anyInt())
|
||||||
verify(dialog).dismiss()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user