Merge "Import translations. DO NOT MERGE ANYWHERE"
diff --git a/core/api/current.txt b/core/api/current.txt
index 1e0a5be..0ab00df 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -51848,6 +51848,7 @@
field public static final int CONTENT_CHANGE_TYPE_DRAG_CANCELLED = 512; // 0x200
field public static final int CONTENT_CHANGE_TYPE_DRAG_DROPPED = 256; // 0x100
field public static final int CONTENT_CHANGE_TYPE_DRAG_STARTED = 128; // 0x80
+ field public static final int CONTENT_CHANGE_TYPE_INVALID = 1024; // 0x400
field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java
index 237f6ed..71bc4b3 100644
--- a/core/java/android/os/VibrationEffect.java
+++ b/core/java/android/os/VibrationEffect.java
@@ -1077,13 +1077,13 @@
}
/**
- * Compose all of the added primitives together into a single {@link VibrationEffect}.
+ * Compose all of the added elements together into a single {@link VibrationEffect}.
*
* <p>The {@link Composition} object is still valid after this call, so you can continue
- * adding more primitives to it and generating more {@link VibrationEffect}s by calling this
+ * adding more elements to it and generating more {@link VibrationEffect}s by calling this
* method again.
*
- * @return The {@link VibrationEffect} resulting from the composition of the primitives.
+ * @return The {@link VibrationEffect} resulting from the composition of the elements.
*/
@NonNull
public VibrationEffect compose() {
diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java
index 7d8f363b..f2c8355 100644
--- a/core/java/android/view/accessibility/AccessibilityEvent.java
+++ b/core/java/android/view/accessibility/AccessibilityEvent.java
@@ -24,6 +24,7 @@
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;
+import android.widget.TextView;
import com.android.internal.util.BitUtils;
@@ -685,6 +686,18 @@
*/
public static final int CONTENT_CHANGE_TYPE_DRAG_CANCELLED = 0x0000200;
+ /**
+ * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
+ * It means the content is invalid or associated with an error.
+ * For example, text that sets an error message, such as when input isn't in a valid format,
+ * should send this event and use {@link AccessibilityNodeInfo#setError} to
+ * provide more context.
+ *
+ * @see AccessibilityNodeInfo#setError
+ * @see TextView#setError
+ */
+ public static final int CONTENT_CHANGE_TYPE_INVALID = 0x0000400;
+
/** Change type for {@link #TYPE_SPEECH_STATE_CHANGE} event: another service is speaking. */
public static final int SPEECH_STATE_SPEAKING_START = 0x00000001;
@@ -810,6 +823,7 @@
CONTENT_CHANGE_TYPE_DRAG_STARTED,
CONTENT_CHANGE_TYPE_DRAG_DROPPED,
CONTENT_CHANGE_TYPE_DRAG_CANCELLED,
+ CONTENT_CHANGE_TYPE_INVALID,
})
public @interface ContentChangeTypes {}
@@ -1076,6 +1090,7 @@
case CONTENT_CHANGE_TYPE_DRAG_STARTED: return "CONTENT_CHANGE_TYPE_DRAG_STARTED";
case CONTENT_CHANGE_TYPE_DRAG_DROPPED: return "CONTENT_CHANGE_TYPE_DRAG_DROPPED";
case CONTENT_CHANGE_TYPE_DRAG_CANCELLED: return "CONTENT_CHANGE_TYPE_DRAG_CANCELLED";
+ case CONTENT_CHANGE_TYPE_INVALID: return "CONTENT_CHANGE_TYPE_INVALID";
default: return Integer.toHexString(type);
}
}
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 18ebe30..68b902f 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -7644,7 +7644,7 @@
createEditorIfNeeded();
mEditor.setError(error, icon);
notifyViewAccessibilityStateChangedIfNeeded(
- AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
+ AccessibilityEvent.CONTENT_CHANGE_TYPE_INVALID);
}
@Override
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/BaseTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/BaseTest.kt
index a8154e8..2b162ae 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/BaseTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/BaseTest.kt
@@ -68,9 +68,7 @@
fun buildFlicker(): FlickerBuilder {
return FlickerBuilder(instrumentation).apply {
setup {
- test {
- testSpec.setIsTablet(wmHelper.currentState.wmState.isTablet)
- }
+ testSpec.setIsTablet(wmHelper.currentState.wmState.isTablet)
}
transition()
}
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/CommonAssertions.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/CommonAssertions.kt
index cc987dc..7058cb8 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/CommonAssertions.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/CommonAssertions.kt
@@ -99,15 +99,40 @@
portraitPosTop: Boolean
) {
assertLayers {
- this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component), isOptional = true)
+ // TODO(b/242025948): Use SPLIT_SCREEN_DIVIDER_COMPONENT.or(component) for notContains
+ // and isInvisible when they are ready.
+ this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT)
.then()
- .isInvisible(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component))
+ .notContains(component, isOptional = true)
+ .then()
+ .isInvisible(SPLIT_SCREEN_DIVIDER_COMPONENT, isOptional = true)
+ .then()
+ .isInvisible(component, isOptional = true)
.then()
.splitAppLayerBoundsSnapToDivider(
component, landscapePosLeft, portraitPosTop, endRotation)
}
}
+fun FlickerTestParameter.splitAppLayerBoundsBecomesVisibleByDrag(
+ component: IComponentMatcher
+) {
+ assertLayers {
+ // TODO(b/242025948): Use SPLIT_SCREEN_DIVIDER_COMPONENT.or(component) for notContains
+ // and isInvisible when they are ready.
+ this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT)
+ .then()
+ .notContains(component, isOptional = true)
+ .then()
+ .isInvisible(SPLIT_SCREEN_DIVIDER_COMPONENT, isOptional = true)
+ .then()
+ .isInvisible(component, isOptional = true)
+ .then()
+ // TODO(b/245472831): Verify the component should snap to divider.
+ .isVisible(component)
+ }
+}
+
fun FlickerTestParameter.splitAppLayerBoundsBecomesInvisible(
component: IComponentMatcher,
landscapePosLeft: Boolean,
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/BaseBubbleScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/BaseBubbleScreen.kt
index 298bf68..1390334 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/BaseBubbleScreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/BaseBubbleScreen.kt
@@ -55,21 +55,17 @@
): FlickerBuilder.() -> Unit {
return {
setup {
- test {
- notifyManager.setBubblesAllowed(testApp.`package`,
- uid, NotificationManager.BUBBLE_PREFERENCE_ALL)
- testApp.launchViaIntent(wmHelper)
- waitAndGetAddBubbleBtn()
- waitAndGetCancelAllBtn()
- }
+ notifyManager.setBubblesAllowed(testApp.`package`,
+ uid, NotificationManager.BUBBLE_PREFERENCE_ALL)
+ testApp.launchViaIntent(wmHelper)
+ waitAndGetAddBubbleBtn()
+ waitAndGetCancelAllBtn()
}
teardown {
- test {
- notifyManager.setBubblesAllowed(testApp.`package`,
- uid, NotificationManager.BUBBLE_PREFERENCE_NONE)
- testApp.exit()
- }
+ notifyManager.setBubblesAllowed(testApp.`package`,
+ uid, NotificationManager.BUBBLE_PREFERENCE_NONE)
+ testApp.exit()
}
extraSpec(this)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/DismissBubbleScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/DismissBubbleScreen.kt
index c44e250..ac4de47 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/DismissBubbleScreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/DismissBubbleScreen.kt
@@ -54,10 +54,8 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition {
setup {
- eachRun {
- val addBubbleBtn = waitAndGetAddBubbleBtn()
- addBubbleBtn?.click() ?: error("Add Bubble not found")
- }
+ val addBubbleBtn = waitAndGetAddBubbleBtn()
+ addBubbleBtn?.click() ?: error("Add Bubble not found")
}
transitions {
wm.run { wm.defaultDisplay.getMetrics(displaySize) }
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/ExpandBubbleScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/ExpandBubbleScreen.kt
index bab0112..7807854 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/ExpandBubbleScreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/ExpandBubbleScreen.kt
@@ -48,10 +48,8 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition {
setup {
- test {
- val addBubbleBtn = waitAndGetAddBubbleBtn()
- addBubbleBtn?.click() ?: error("Add Bubble not found")
- }
+ val addBubbleBtn = waitAndGetAddBubbleBtn()
+ addBubbleBtn?.click() ?: error("Add Bubble not found")
}
transitions {
val showBubble = device.wait(
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt
index 47557bc..49681e1 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt
@@ -49,15 +49,13 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition {
setup {
- eachRun {
- val addBubbleBtn = waitAndGetAddBubbleBtn()
- addBubbleBtn?.click() ?: error("Bubble widget not found")
- device.sleep()
- wmHelper.StateSyncBuilder()
- .withoutTopVisibleAppWindows()
- .waitForAndVerify()
- device.wakeUp()
- }
+ val addBubbleBtn = waitAndGetAddBubbleBtn()
+ addBubbleBtn?.click() ?: error("Bubble widget not found")
+ device.sleep()
+ wmHelper.StateSyncBuilder()
+ .withoutTopVisibleAppWindows()
+ .waitForAndVerify()
+ device.wakeUp()
}
transitions {
// Swipe & wait for the notification shade to expand so all can be seen
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/MultiBubblesScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/MultiBubblesScreen.kt
index 3ad92f8..2dccda6f 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/MultiBubblesScreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/MultiBubblesScreen.kt
@@ -57,20 +57,18 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition {
setup {
- test {
- for (i in 1..3) {
- val addBubbleBtn = waitAndGetAddBubbleBtn() ?: error("Add Bubble not found")
- addBubbleBtn.click()
- SystemClock.sleep(1000)
- }
- val showBubble = device.wait(
- Until.findObject(
- By.res(SYSTEM_UI_PACKAGE, BUBBLE_RES_NAME)
- ), FIND_OBJECT_TIMEOUT
- ) ?: error("Show bubble not found")
- showBubble.click()
+ for (i in 1..3) {
+ val addBubbleBtn = waitAndGetAddBubbleBtn() ?: error("Add Bubble not found")
+ addBubbleBtn.click()
SystemClock.sleep(1000)
}
+ val showBubble = device.wait(
+ Until.findObject(
+ By.res(SYSTEM_UI_PACKAGE, BUBBLE_RES_NAME)
+ ), FIND_OBJECT_TIMEOUT
+ ) ?: error("Show bubble not found")
+ showBubble.click()
+ SystemClock.sleep(1000)
}
transitions {
val bubbles: List<UiObject2> = device.wait(
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/AutoEnterPipOnGoToHomeTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/AutoEnterPipOnGoToHomeTest.kt
index 87fa548..eebc97b 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/AutoEnterPipOnGoToHomeTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/AutoEnterPipOnGoToHomeTest.kt
@@ -18,11 +18,16 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Postsubmit
+import android.view.Surface
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
import com.android.server.wm.flicker.annotation.Group3
import com.android.server.wm.flicker.dsl.FlickerBuilder
+import com.android.server.wm.flicker.helpers.setRotation
+import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
+import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule
+import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule.Companion.removeAllTasksButHome
import org.junit.Assume
import org.junit.FixMethodOrder
import org.junit.Test
@@ -59,19 +64,19 @@
*/
override val transition: FlickerBuilder.() -> Unit
get() = {
- setupAndTeardown(this)
setup {
- eachRun {
- pipApp.launchViaIntent(wmHelper)
- pipApp.enableAutoEnterForPipActivity()
- }
+ removeAllTasksButHome()
+ device.wakeUpAndGoToHomeScreen()
+ pipApp.launchViaIntent(wmHelper)
+ pipApp.enableAutoEnterForPipActivity()
}
teardown {
- eachRun {
- // close gracefully so that onActivityUnpinned() can be called before force exit
- pipApp.closePipWindow(wmHelper)
- pipApp.exit(wmHelper)
- }
+ // close gracefully so that onActivityUnpinned() can be called before force exit
+ pipApp.closePipWindow(wmHelper)
+
+ setRotation(Surface.ROTATION_0)
+ RemoveAllTasksButHomeRule.removeAllTasksButHome()
+ pipApp.exit(wmHelper)
}
transitions {
tapl.goHome()
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt
index 42aac57..bac6a0c 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipOnUserLeaveHintTest.kt
@@ -19,12 +19,16 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
+import android.view.Surface
import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
import com.android.server.wm.flicker.annotation.Group3
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
+import com.android.server.wm.flicker.helpers.setRotation
+import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
+import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule
import org.junit.Assume
import org.junit.FixMethodOrder
import org.junit.Test
@@ -60,17 +64,17 @@
*/
override val transition: FlickerBuilder.() -> Unit
get() = {
- setupAndTeardown(this)
setup {
- eachRun {
- pipApp.launchViaIntent(wmHelper)
- pipApp.enableEnterPipOnUserLeaveHint()
- }
+ RemoveAllTasksButHomeRule.removeAllTasksButHome()
+ device.wakeUpAndGoToHomeScreen()
+ device.wakeUpAndGoToHomeScreen()
+ pipApp.launchViaIntent(wmHelper)
+ pipApp.enableEnterPipOnUserLeaveHint()
}
teardown {
- eachRun {
- pipApp.exit(wmHelper)
- }
+ setRotation(Surface.ROTATION_0)
+ RemoveAllTasksButHomeRule.removeAllTasksButHome()
+ pipApp.exit(wmHelper)
}
transitions {
tapl.goHome()
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt
index b1b9736..c9e38e4 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipTest.kt
@@ -25,6 +25,9 @@
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.annotation.Group3
import com.android.server.wm.flicker.dsl.FlickerBuilder
+import com.android.server.wm.flicker.helpers.setRotation
+import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
+import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule
import com.android.server.wm.traces.common.ComponentNameMatcher
import org.junit.FixMethodOrder
import org.junit.Test
@@ -59,16 +62,15 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit
get() = {
- setupAndTeardown(this)
setup {
- eachRun {
- pipApp.launchViaIntent(wmHelper)
- }
+ RemoveAllTasksButHomeRule.removeAllTasksButHome()
+ device.wakeUpAndGoToHomeScreen()
+ pipApp.launchViaIntent(wmHelper)
}
teardown {
- eachRun {
- pipApp.exit(wmHelper)
- }
+ setRotation(Surface.ROTATION_0)
+ RemoveAllTasksButHomeRule.removeAllTasksButHome()
+ pipApp.exit(wmHelper)
}
transitions {
pipApp.clickEnterPipButton(wmHelper)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt
index 3bd2bf3..f6bb534 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/EnterPipToOtherOrientationTest.kt
@@ -29,7 +29,10 @@
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.entireScreenCovered
import com.android.server.wm.flicker.helpers.WindowUtils
+import com.android.server.wm.flicker.helpers.setRotation
+import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.navBarLayerPositionAtStartAndEnd
+import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule
import com.android.wm.shell.flicker.helpers.FixedAppHelper
import com.android.wm.shell.flicker.pip.PipTransition.BroadcastActionTrigger.Companion.ORIENTATION_LANDSCAPE
import com.android.wm.shell.flicker.pip.PipTransition.BroadcastActionTrigger.Companion.ORIENTATION_PORTRAIT
@@ -78,29 +81,28 @@
*/
override val transition: FlickerBuilder.() -> Unit
get() = {
- setupAndTeardown(this)
-
setup {
- eachRun {
- // Launch a portrait only app on the fullscreen stack
- testApp.launchViaIntent(
- wmHelper, stringExtras = mapOf(
- EXTRA_FIXED_ORIENTATION to ORIENTATION_PORTRAIT.toString()
- )
+ RemoveAllTasksButHomeRule.removeAllTasksButHome()
+ device.wakeUpAndGoToHomeScreen()
+
+ // Launch a portrait only app on the fullscreen stack
+ testApp.launchViaIntent(
+ wmHelper, stringExtras = mapOf(
+ EXTRA_FIXED_ORIENTATION to ORIENTATION_PORTRAIT.toString()
)
- // Launch the PiP activity fixed as landscape
- pipApp.launchViaIntent(
- wmHelper, stringExtras = mapOf(
- EXTRA_FIXED_ORIENTATION to ORIENTATION_LANDSCAPE.toString()
- )
+ )
+ // Launch the PiP activity fixed as landscape
+ pipApp.launchViaIntent(
+ wmHelper, stringExtras = mapOf(
+ EXTRA_FIXED_ORIENTATION to ORIENTATION_LANDSCAPE.toString()
)
- }
+ )
}
teardown {
- eachRun {
- pipApp.exit(wmHelper)
- testApp.exit(wmHelper)
- }
+ setRotation(Surface.ROTATION_0)
+ RemoveAllTasksButHomeRule.removeAllTasksButHome()
+ pipApp.exit(wmHelper)
+ testApp.exit(wmHelper)
}
transitions {
// Enter PiP, and assert that the PiP is within bounds now that the device is back
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipTransition.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipTransition.kt
index fd1fe65..183c06f 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipTransition.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipTransition.kt
@@ -33,14 +33,10 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition(eachRun = true) {
setup {
- eachRun {
- this.setRotation(testSpec.startRotation)
- }
+ this.setRotation(testSpec.startRotation)
}
teardown {
- eachRun {
- this.setRotation(Surface.ROTATION_0)
- }
+ this.setRotation(Surface.ROTATION_0)
}
}
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaExpandButtonClickTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaExpandButtonClickTest.kt
index 39a7017..53450de 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaExpandButtonClickTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaExpandButtonClickTest.kt
@@ -64,10 +64,8 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition(eachRun = true) {
setup {
- eachRun {
- // launch an app behind the pip one
- testApp.launchViaIntent(wmHelper)
- }
+ // launch an app behind the pip one
+ testApp.launchViaIntent(wmHelper)
}
transitions {
// This will bring PipApp to fullscreen
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaIntentTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaIntentTest.kt
index 421a6fc..034f623 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaIntentTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/ExitPipViaIntentTest.kt
@@ -64,10 +64,8 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition(eachRun = true) {
setup {
- eachRun {
- // launch an app behind the pip one
- testApp.launchViaIntent(wmHelper)
- }
+ // launch an app behind the pip one
+ testApp.launchViaIntent(wmHelper)
}
transitions {
// This will bring PipApp to fullscreen
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipDownShelfHeightChangeTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipDownShelfHeightChangeTest.kt
index d3e2ce15..de8c0093 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipDownShelfHeightChangeTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipDownShelfHeightChangeTest.kt
@@ -62,12 +62,8 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition(eachRun = false) {
teardown {
- eachRun {
- testApp.launchViaIntent(wmHelper)
- }
- test {
- testApp.exit(wmHelper)
- }
+ testApp.launchViaIntent(wmHelper)
+ testApp.exit(wmHelper)
}
transitions {
tapl.pressHome()
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipUpShelfHeightChangeTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipUpShelfHeightChangeTest.kt
index 3d64bbe..0b6e7ee 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipUpShelfHeightChangeTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipUpShelfHeightChangeTest.kt
@@ -72,12 +72,8 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition(eachRun = false) {
teardown {
- eachRun {
- tapl.pressHome()
- }
- test {
- testApp.exit(wmHelper)
- }
+ tapl.pressHome()
+ testApp.exit(wmHelper)
}
transitions {
testApp.launchViaIntent(wmHelper)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipKeyboardTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipKeyboardTest.kt
index be39fae..df6ba98 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipKeyboardTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipKeyboardTest.kt
@@ -59,16 +59,12 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition(eachRun = false) {
setup {
- test {
- imeApp.launchViaIntent(wmHelper)
- setRotation(testSpec.startRotation)
- }
+ imeApp.launchViaIntent(wmHelper)
+ setRotation(testSpec.startRotation)
}
teardown {
- test {
- imeApp.exit(wmHelper)
- setRotation(Surface.ROTATION_0)
- }
+ imeApp.exit(wmHelper)
+ setRotation(Surface.ROTATION_0)
}
transitions {
// open the soft keyboard
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipRotationTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipRotationTest.kt
index 4dc9858..fc0f0ee 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipRotationTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipRotationTest.kt
@@ -74,12 +74,8 @@
override val transition: FlickerBuilder.() -> Unit
get() = buildTransition(eachRun = false) {
setup {
- test {
- fixedApp.launchViaIntent(wmHelper)
- }
- eachRun {
- setRotation(testSpec.startRotation)
- }
+ fixedApp.launchViaIntent(wmHelper)
+ setRotation(testSpec.startRotation)
}
transitions {
setRotation(testSpec.endRotation)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt
index 9ade597..faf6afc 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/PipTransition.kt
@@ -23,7 +23,6 @@
import com.android.server.wm.flicker.dsl.FlickerBuilder
import com.android.server.wm.flicker.helpers.WindowUtils
import com.android.server.wm.flicker.helpers.setRotation
-import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen
import com.android.server.wm.flicker.rules.RemoveAllTasksButHomeRule.Companion.removeAllTasksButHome
import com.android.wm.shell.flicker.BaseTest
import com.android.wm.shell.flicker.helpers.PipAppHelper
@@ -57,28 +56,6 @@
}
/**
- * Gets a configuration that handles basic setup and teardown of pip tests
- */
- protected val setupAndTeardown: FlickerBuilder.() -> Unit
- get() = {
- setup {
- test {
- removeAllTasksButHome()
- device.wakeUpAndGoToHomeScreen()
- }
- }
- teardown {
- eachRun {
- setRotation(Surface.ROTATION_0)
- }
- test {
- removeAllTasksButHome()
- pipApp.exit(wmHelper)
- }
- }
- }
-
- /**
* Gets a configuration that handles basic setup and teardown of pip tests and that
* launches the Pip app for test
*
@@ -93,30 +70,27 @@
extraSpec: FlickerBuilder.() -> Unit = {}
): FlickerBuilder.() -> Unit {
return {
- setupAndTeardown(this)
-
setup {
- test {
- if (!eachRun) {
- pipApp.launchViaIntentAndWaitForPip(wmHelper, stringExtras = stringExtras)
- }
+ setRotation(Surface.ROTATION_0)
+ removeAllTasksButHome()
+
+ if (!eachRun) {
+ pipApp.launchViaIntentAndWaitForPip(wmHelper, stringExtras = stringExtras)
}
- eachRun {
- if (eachRun) {
- pipApp.launchViaIntentAndWaitForPip(wmHelper, stringExtras = stringExtras)
- }
+ if (eachRun) {
+ pipApp.launchViaIntentAndWaitForPip(wmHelper, stringExtras = stringExtras)
}
}
teardown {
- eachRun {
- if (eachRun) {
- pipApp.exit(wmHelper)
- }
+ setRotation(Surface.ROTATION_0)
+ removeAllTasksButHome()
+ pipApp.exit(wmHelper)
+
+ if (eachRun) {
+ pipApp.exit(wmHelper)
}
- test {
- if (!eachRun) {
- pipApp.exit(wmHelper)
- }
+ if (!eachRun) {
+ pipApp.exit(wmHelper)
}
}
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt
index d5de22f..acada4c 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/SetRequestedOrientationWhilePinnedTest.kt
@@ -61,33 +61,26 @@
override val transition: FlickerBuilder.() -> Unit
get() = {
setup {
- test {
- removeAllTasksButHome()
- device.wakeUpAndGoToHomeScreen()
- }
- eachRun {
- // Launch the PiP activity fixed as landscape.
- pipApp.launchViaIntent(wmHelper, stringExtras = mapOf(
- EXTRA_FIXED_ORIENTATION to ORIENTATION_LANDSCAPE.toString()))
- // Enter PiP.
- broadcastActionTrigger.doAction(Components.PipActivity.ACTION_ENTER_PIP)
- // System bar may fade out during fixed rotation.
- wmHelper.StateSyncBuilder()
- .withPipShown()
- .withRotation(Surface.ROTATION_0)
- .withNavOrTaskBarVisible()
- .withStatusBarVisible()
- .waitForAndVerify()
- }
+ removeAllTasksButHome()
+ device.wakeUpAndGoToHomeScreen()
+
+ // Launch the PiP activity fixed as landscape.
+ pipApp.launchViaIntent(wmHelper, stringExtras = mapOf(
+ EXTRA_FIXED_ORIENTATION to ORIENTATION_LANDSCAPE.toString()))
+ // Enter PiP.
+ broadcastActionTrigger.doAction(Components.PipActivity.ACTION_ENTER_PIP)
+ // System bar may fade out during fixed rotation.
+ wmHelper.StateSyncBuilder()
+ .withPipShown()
+ .withRotation(Surface.ROTATION_0)
+ .withNavOrTaskBarVisible()
+ .withStatusBarVisible()
+ .waitForAndVerify()
}
teardown {
- eachRun {
- pipApp.exit(wmHelper)
- setRotation(Surface.ROTATION_0)
- }
- test {
- removeAllTasksButHome()
- }
+ pipApp.exit(wmHelper)
+ setRotation(Surface.ROTATION_0)
+ removeAllTasksButHome()
}
transitions {
// Launch the activity back into fullscreen and ensure that it is now in landscape
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt
index 49b31d8..2acdfbf 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt
@@ -55,9 +55,7 @@
get() = {
super.transition(this)
setup {
- eachRun {
- SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, textEditApp)
- }
+ SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, textEditApp)
}
transitions {
SplitScreenHelper.copyContentInSplit(
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DismissSplitScreenByDivider.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DismissSplitScreenByDivider.kt
index 2d3a726..44157b8 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DismissSplitScreenByDivider.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DismissSplitScreenByDivider.kt
@@ -40,6 +40,7 @@
import org.junit.runner.RunWith
import org.junit.runners.MethodSorters
import org.junit.runners.Parameterized
+
/**
* Test dismiss split screen by dragging the divider bar.
*
@@ -57,9 +58,7 @@
get() = {
super.transition(this)
setup {
- eachRun {
- SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
- }
+ SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
}
transitions {
if (tapl.isTablet) {
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DismissSplitScreenByGoHome.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DismissSplitScreenByGoHome.kt
index df855bb..df83d70 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DismissSplitScreenByGoHome.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DismissSplitScreenByGoHome.kt
@@ -56,9 +56,7 @@
get() = {
super.transition(this)
setup {
- eachRun {
- SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
- }
+ SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
}
transitions {
tapl.goHome()
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DragDividerToResize.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DragDividerToResize.kt
index 47c1ca7..b77e8da 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DragDividerToResize.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DragDividerToResize.kt
@@ -55,9 +55,7 @@
get() = {
super.transition(this)
setup {
- eachRun {
- SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
- }
+ SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
}
transitions {
SplitScreenHelper.dragDividerToResizeAndWait(device, wmHelper)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromAllApps.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromAllApps.kt
index eebf5a2..3cd7471 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromAllApps.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromAllApps.kt
@@ -26,12 +26,14 @@
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.annotation.Group1
import com.android.server.wm.flicker.dsl.FlickerBuilder
+import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
+import com.android.wm.shell.flicker.SPLIT_SCREEN_DIVIDER_COMPONENT
import com.android.wm.shell.flicker.appWindowBecomesVisible
import com.android.wm.shell.flicker.appWindowIsVisibleAtEnd
import com.android.wm.shell.flicker.helpers.SplitScreenHelper
import com.android.wm.shell.flicker.layerBecomesVisible
import com.android.wm.shell.flicker.layerIsVisibleAtEnd
-import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisible
+import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisibleByDrag
import com.android.wm.shell.flicker.splitAppLayerBoundsIsVisibleAtEnd
import com.android.wm.shell.flicker.splitScreenDividerBecomesVisible
import org.junit.Assume
@@ -67,10 +69,8 @@
get() = {
super.transition(this)
setup {
- eachRun {
- tapl.goHome()
- primaryApp.launchViaIntent(wmHelper)
- }
+ tapl.goHome()
+ primaryApp.launchViaIntent(wmHelper)
}
transitions {
tapl.launchedAppState.taskbar
@@ -83,7 +83,20 @@
@Presubmit
@Test
- fun splitScreenDividerBecomesVisible() = testSpec.splitScreenDividerBecomesVisible()
+ fun splitScreenDividerBecomesVisible() {
+ Assume.assumeFalse(isShellTransitionsEnabled)
+ testSpec.splitScreenDividerBecomesVisible()
+ }
+
+ // TODO(b/245472831): Back to splitScreenDividerBecomesVisible after shell transition ready.
+ @Presubmit
+ @Test
+ fun splitScreenDividerIsVisibleAtEnd_ShellTransit() {
+ Assume.assumeTrue(isShellTransitionsEnabled)
+ testSpec.assertLayersEnd {
+ this.isVisible(SPLIT_SCREEN_DIVIDER_COMPONENT)
+ }
+ }
@Presubmit
@Test
@@ -100,8 +113,8 @@
@Presubmit
@Test
- fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisible(
- secondaryApp, landscapePosLeft = true, portraitPosTop = true)
+ fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisibleByDrag(
+ secondaryApp)
@Presubmit
@Test
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromNotification.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromNotification.kt
index d4cec3b..7db55ad 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromNotification.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromNotification.kt
@@ -28,11 +28,13 @@
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.annotation.Group1
import com.android.server.wm.flicker.dsl.FlickerBuilder
+import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
+import com.android.wm.shell.flicker.SPLIT_SCREEN_DIVIDER_COMPONENT
import com.android.wm.shell.flicker.appWindowIsVisibleAtEnd
import com.android.wm.shell.flicker.helpers.SplitScreenHelper
import com.android.wm.shell.flicker.layerBecomesVisible
import com.android.wm.shell.flicker.layerIsVisibleAtEnd
-import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisible
+import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisibleByDrag
import com.android.wm.shell.flicker.splitAppLayerBoundsIsVisibleAtEnd
import com.android.wm.shell.flicker.splitScreenDividerBecomesVisible
import org.junit.Assume
@@ -71,33 +73,42 @@
get() = {
super.transition(this)
setup {
- eachRun {
- // Send a notification
- sendNotificationApp.launchViaIntent(wmHelper)
- val sendNotification = device.wait(
- Until.findObject(By.text("Send Notification")),
- SplitScreenHelper.TIMEOUT_MS
- )
- sendNotification?.click() ?: error("Send notification button not found")
+ // Send a notification
+ sendNotificationApp.launchViaIntent(wmHelper)
+ val sendNotification = device.wait(
+ Until.findObject(By.text("Send Notification")),
+ SplitScreenHelper.TIMEOUT_MS
+ )
+ sendNotification?.click() ?: error("Send notification button not found")
- tapl.goHome()
- primaryApp.launchViaIntent(wmHelper)
- }
+ tapl.goHome()
+ primaryApp.launchViaIntent(wmHelper)
}
transitions {
SplitScreenHelper.dragFromNotificationToSplit(instrumentation, device, wmHelper)
SplitScreenHelper.waitForSplitComplete(wmHelper, primaryApp, sendNotificationApp)
}
teardown {
- eachRun {
- sendNotificationApp.exit(wmHelper)
- }
+ sendNotificationApp.exit(wmHelper)
}
}
@Presubmit
@Test
- fun splitScreenDividerBecomesVisible() = testSpec.splitScreenDividerBecomesVisible()
+ fun splitScreenDividerBecomesVisible() {
+ Assume.assumeFalse(isShellTransitionsEnabled)
+ testSpec.splitScreenDividerBecomesVisible()
+ }
+
+ // TODO(b/245472831): Back to splitScreenDividerBecomesVisible after shell transition ready.
+ @Presubmit
+ @Test
+ fun splitScreenDividerIsVisibleAtEnd_ShellTransit() {
+ Assume.assumeTrue(isShellTransitionsEnabled)
+ testSpec.assertLayersEnd {
+ this.isVisible(SPLIT_SCREEN_DIVIDER_COMPONENT)
+ }
+ }
@Presubmit
@Test
@@ -115,8 +126,8 @@
@Presubmit
@Test
- fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisible(
- sendNotificationApp, landscapePosLeft = true, portraitPosTop = true)
+ fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisibleByDrag(
+ sendNotificationApp)
@Presubmit
@Test
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromTaskbar.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromTaskbar.kt
index 28cad6d..8212412 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromTaskbar.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenByDragFromTaskbar.kt
@@ -26,12 +26,14 @@
import com.android.server.wm.flicker.FlickerTestParameterFactory
import com.android.server.wm.flicker.annotation.Group1
import com.android.server.wm.flicker.dsl.FlickerBuilder
+import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
+import com.android.wm.shell.flicker.SPLIT_SCREEN_DIVIDER_COMPONENT
import com.android.wm.shell.flicker.appWindowBecomesVisible
import com.android.wm.shell.flicker.appWindowIsVisibleAtEnd
import com.android.wm.shell.flicker.helpers.SplitScreenHelper
import com.android.wm.shell.flicker.layerBecomesVisible
import com.android.wm.shell.flicker.layerIsVisibleAtEnd
-import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisible
+import com.android.wm.shell.flicker.splitAppLayerBoundsBecomesVisibleByDrag
import com.android.wm.shell.flicker.splitAppLayerBoundsIsVisibleAtEnd
import com.android.wm.shell.flicker.splitScreenDividerBecomesVisible
import org.junit.Assume
@@ -68,13 +70,11 @@
get() = {
super.transition(this)
setup {
- eachRun {
- tapl.goHome()
- SplitScreenHelper.createShortcutOnHotseatIfNotExist(
- tapl, secondaryApp.appName
- )
- primaryApp.launchViaIntent(wmHelper)
- }
+ tapl.goHome()
+ SplitScreenHelper.createShortcutOnHotseatIfNotExist(
+ tapl, secondaryApp.appName
+ )
+ primaryApp.launchViaIntent(wmHelper)
}
transitions {
tapl.launchedAppState.taskbar
@@ -86,7 +86,20 @@
@Presubmit
@Test
- fun splitScreenDividerBecomesVisible() = testSpec.splitScreenDividerBecomesVisible()
+ fun splitScreenDividerBecomesVisible() {
+ Assume.assumeFalse(isShellTransitionsEnabled)
+ testSpec.splitScreenDividerBecomesVisible()
+ }
+
+ // TODO(b/245472831): Back to splitScreenDividerBecomesVisible after shell transition ready.
+ @Presubmit
+ @Test
+ fun splitScreenDividerIsVisibleAtEnd_ShellTransit() {
+ Assume.assumeTrue(isShellTransitionsEnabled)
+ testSpec.assertLayersEnd {
+ this.isVisible(SPLIT_SCREEN_DIVIDER_COMPONENT)
+ }
+ }
@Presubmit
@Test
@@ -103,8 +116,8 @@
@Presubmit
@Test
- fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisible(
- secondaryApp, landscapePosLeft = true, portraitPosTop = true)
+ fun secondaryAppBoundsBecomesVisible() = testSpec.splitAppLayerBoundsBecomesVisibleByDrag(
+ secondaryApp)
@Presubmit
@Test
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenFromOverview.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenFromOverview.kt
index 518486f..1868602 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenFromOverview.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/EnterSplitScreenFromOverview.kt
@@ -55,16 +55,14 @@
get() = {
super.transition(this)
setup {
- eachRun {
- tapl.workspace.switchToOverview().dismissAllTasks()
- primaryApp.launchViaIntent(wmHelper)
- secondaryApp.launchViaIntent(wmHelper)
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withAppTransitionIdle()
- .withHomeActivityVisible()
- .waitForAndVerify()
- }
+ tapl.workspace.switchToOverview().dismissAllTasks()
+ primaryApp.launchViaIntent(wmHelper)
+ secondaryApp.launchViaIntent(wmHelper)
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withAppTransitionIdle()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
}
transitions {
SplitScreenHelper.splitFromOverview(tapl)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SplitScreenBase.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SplitScreenBase.kt
index 81390b2..eab473c 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SplitScreenBase.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SplitScreenBase.kt
@@ -32,17 +32,13 @@
override val transition: FlickerBuilder.() -> Unit
get() = {
setup {
- test {
- tapl.setEnableRotation(true)
- setRotation(testSpec.startRotation)
- tapl.setExpectedRotation(testSpec.startRotation)
- }
+ tapl.setEnableRotation(true)
+ setRotation(testSpec.startRotation)
+ tapl.setExpectedRotation(testSpec.startRotation)
}
teardown {
- eachRun {
- primaryApp.exit(wmHelper)
- secondaryApp.exit(wmHelper)
- }
+ primaryApp.exit(wmHelper)
+ secondaryApp.exit(wmHelper)
}
}
}
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchAppByDoubleTapDivider.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchAppByDoubleTapDivider.kt
index 8a22d55a..d265f83 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchAppByDoubleTapDivider.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchAppByDoubleTapDivider.kt
@@ -55,9 +55,7 @@
get() = {
super.transition(this)
setup {
- eachRun {
- SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
- }
+ SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
}
transitions {
SplitScreenHelper.doubleTapDividerToSwitch(device)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromAnotherApp.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromAnotherApp.kt
index 80d5999..8b905ef 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromAnotherApp.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromAnotherApp.kt
@@ -55,14 +55,12 @@
get() = {
super.transition(this)
setup {
- eachRun {
- SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
+ SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
- thirdApp.launchViaIntent(wmHelper)
- wmHelper.StateSyncBuilder()
- .withWindowSurfaceAppeared(thirdApp)
- .waitForAndVerify()
- }
+ thirdApp.launchViaIntent(wmHelper)
+ wmHelper.StateSyncBuilder()
+ .withWindowSurfaceAppeared(thirdApp)
+ .waitForAndVerify()
}
transitions {
tapl.launchedAppState.quickSwitchToPreviousApp()
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromHome.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromHome.kt
index 79c917a..fcab702 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromHome.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromHome.kt
@@ -54,14 +54,12 @@
get() = {
super.transition(this)
setup {
- eachRun {
- SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
+ SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .waitForAndVerify()
- }
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
}
transitions {
tapl.workspace.quickSwitchToPreviousApp()
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromRecent.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromRecent.kt
index 166caa7..5364492c 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromRecent.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/SwitchBackToSplitFromRecent.kt
@@ -54,14 +54,12 @@
get() = {
super.transition(this)
setup {
- eachRun {
- SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
+ SplitScreenHelper.enterSplit(wmHelper, tapl, primaryApp, secondaryApp)
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .waitForAndVerify()
- }
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
}
transitions {
tapl.workspace.switchToOverview()
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index d8ed7ed..5b3aae3 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -597,7 +597,7 @@
<string name="guest_reset_guest" msgid="6110013010356013758">"கெஸ்ட் அமர்வை மீட்டமை"</string>
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"கெஸ்ட்டை மீட்டமைக்கவா?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"கெஸ்ட் பயனரை அகற்றவா?"</string>
- <string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"மீட்டமை"</string>
+ <string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"ரீசெட்"</string>
<string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"அகற்று"</string>
<string name="guest_resetting" msgid="7822120170191509566">"கெஸ்ட்டை மீட்டமைக்கிறது…"</string>
<string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"கெஸ்ட் அமர்வை ரீசெட் செய்யவா?"</string>
diff --git a/packages/SystemUI/res/values-sw600dp/config.xml b/packages/SystemUI/res/values-sw600dp/config.xml
index c0071cb..80628f9 100644
--- a/packages/SystemUI/res/values-sw600dp/config.xml
+++ b/packages/SystemUI/res/values-sw600dp/config.xml
@@ -35,9 +35,6 @@
<!-- How many lines to show in the security footer -->
<integer name="qs_security_footer_maxLines">1</integer>
- <!-- Determines whether to allow the nav bar handle to be forced to be opaque. -->
- <bool name="allow_force_nav_bar_handle_opaque">false</bool>
-
<bool name="config_use_large_screen_shade_header">true</bool>
<!-- Whether to show the side fps hint while on bouncer -->
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index ad8113a..a802723 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -587,9 +587,6 @@
when the double-press power gesture is used. Ignored if empty. -->
<string translatable="false" name="config_cameraGesturePackage"></string>
- <!-- Determines whether to allow the nav bar handle to be forced to be opaque. -->
- <bool name="allow_force_nav_bar_handle_opaque">true</bool>
-
<!-- Whether a transition of ACTIVITY_TYPE_DREAM to the home app should play a home sound
effect -->
<bool name="config_playHomeSoundAfterDream">false</bool>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl
index a030bf6..e77c650 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/ISystemUiProxy.aidl
@@ -42,13 +42,6 @@
void onOverviewShown(boolean fromHome) = 6;
/**
- * Control the {@param alpha} of the option nav bar button (back-button in 2 button mode
- * and home handle & background in gestural mode). The {@param animate} is currently only
- * supported for 2 button mode.
- */
- void setNavBarButtonAlpha(float alpha, boolean animate) = 19;
-
- /**
* Proxies motion events from the homescreen UI to the status bar. Only called when
* swipe down is detected on WORKSPACE. The sender guarantees the following order of events on
* the tracking pointer.
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
index 75e48d2..30947e8 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
@@ -35,7 +35,6 @@
import static com.android.internal.accessibility.common.ShortcutConstants.CHOOSER_PACKAGE_NAME;
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.HOME_BUTTON_LONG_PRESS_DURATION_MS;
-import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NAV_BAR_HANDLE_FORCE_OPAQUE;
import static com.android.systemui.navigationbar.NavBarHelper.transitionMode;
import static com.android.systemui.recents.OverviewProxyService.OverviewProxyListener;
import static com.android.systemui.shared.recents.utilities.Utilities.isTablet;
@@ -229,10 +228,7 @@
private Locale mLocale;
private int mLayoutDirection;
- private boolean mAllowForceNavBarHandleOpaque;
- private boolean mForceNavBarHandleOpaque;
private Optional<Long> mHomeButtonLongPressDurationMs;
- private boolean mIsCurrentUserSetup;
/** @see android.view.WindowInsetsController#setSystemBarsAppearance(int, int) */
private @Appearance int mAppearance;
@@ -379,37 +375,6 @@
}
@Override
- public void onNavBarButtonAlphaChanged(float alpha, boolean animate) {
- if (!mIsCurrentUserSetup) {
- // If the current user is not yet setup, then don't update any button alphas
- return;
- }
- if (QuickStepContract.isLegacyMode(mNavBarMode)) {
- // Don't allow the bar buttons to be affected by the alpha
- return;
- }
-
- ButtonDispatcher buttonDispatcher = null;
- boolean forceVisible = false;
- if (QuickStepContract.isGesturalMode(mNavBarMode)) {
- // Disallow home handle animations when in gestural
- animate = false;
- forceVisible = mAllowForceNavBarHandleOpaque && mForceNavBarHandleOpaque;
- buttonDispatcher = mView.getHomeHandle();
- if (getBarTransitions() != null) {
- getBarTransitions().setBackgroundOverrideAlpha(alpha);
- }
- } else if (QuickStepContract.isSwipeUpMode(mNavBarMode)) {
- buttonDispatcher = mView.getBackButton();
- }
- if (buttonDispatcher != null) {
- buttonDispatcher.setVisibility(
- (forceVisible || alpha > 0) ? View.VISIBLE : View.INVISIBLE);
- buttonDispatcher.setAlpha(forceVisible ? 1f : alpha, animate);
- }
- }
-
- @Override
public void onHomeRotationEnabled(boolean enabled) {
mView.getRotationButtonController().setHomeRotationEnabled(enabled);
}
@@ -456,15 +421,10 @@
new DeviceConfig.OnPropertiesChangedListener() {
@Override
public void onPropertiesChanged(DeviceConfig.Properties properties) {
- if (properties.getKeyset().contains(NAV_BAR_HANDLE_FORCE_OPAQUE)) {
- mForceNavBarHandleOpaque = properties.getBoolean(
- NAV_BAR_HANDLE_FORCE_OPAQUE, /* defaultValue = */ true);
- }
-
if (properties.getKeyset().contains(HOME_BUTTON_LONG_PRESS_DURATION_MS)) {
mHomeButtonLongPressDurationMs = Optional.of(
- properties.getLong(HOME_BUTTON_LONG_PRESS_DURATION_MS, 0)
- ).filter(duration -> duration != 0);
+ properties.getLong(HOME_BUTTON_LONG_PRESS_DURATION_MS, 0))
+ .filter(duration -> duration != 0);
if (mView != null) {
reconfigureHomeLongClick();
}
@@ -472,14 +432,6 @@
}
};
- private final DeviceProvisionedController.DeviceProvisionedListener mUserSetupListener =
- new DeviceProvisionedController.DeviceProvisionedListener() {
- @Override
- public void onUserSetupChanged() {
- mIsCurrentUserSetup = mDeviceProvisionedController.isCurrentUserSetup();
- }
- };
-
private final NotificationShadeDepthController.DepthListener mDepthListener =
new NotificationShadeDepthController.DepthListener() {
boolean mHasBlurs;
@@ -660,12 +612,6 @@
mCommandQueue.addCallback(this);
mLongPressHomeEnabled = mNavBarHelper.getLongPressHomeEnabled();
mNavBarHelper.init();
- mAllowForceNavBarHandleOpaque = mContext.getResources().getBoolean(
- R.bool.allow_force_nav_bar_handle_opaque);
- mForceNavBarHandleOpaque = mDeviceConfigProxy.getBoolean(
- DeviceConfig.NAMESPACE_SYSTEMUI,
- NAV_BAR_HANDLE_FORCE_OPAQUE,
- /* defaultValue = */ true);
mHomeButtonLongPressDurationMs = Optional.of(mDeviceConfigProxy.getLong(
DeviceConfig.NAMESPACE_SYSTEMUI,
HOME_BUTTON_LONG_PRESS_DURATION_MS,
@@ -685,8 +631,6 @@
// Respect the latest disabled-flags.
mCommandQueue.recomputeDisableFlags(mDisplayId, false);
- mIsCurrentUserSetup = mDeviceProvisionedController.isCurrentUserSetup();
- mDeviceProvisionedController.addCallback(mUserSetupListener);
mNotificationShadeDepthController.addListener(mDepthListener);
}
@@ -698,7 +642,6 @@
mNavBarHelper.removeNavTaskStateUpdater(mNavbarTaskbarStateUpdater);
mNavBarHelper.destroy();
- mDeviceProvisionedController.removeCallback(mUserSetupListener);
mNotificationShadeDepthController.removeListener(mDepthListener);
mDeviceConfigProxy.removeOnPropertiesChangedListener(mOnPropertiesChangedListener);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
index 99a6a4d..3788ad9 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
@@ -175,7 +175,6 @@
private boolean mBound;
private boolean mIsEnabled;
private int mCurrentBoundedUserId = -1;
- private float mNavBarButtonAlpha;
private boolean mInputFocusTransferStarted;
private float mInputFocusTransferStartY;
private long mInputFocusTransferStartMillis;
@@ -297,12 +296,6 @@
}
@Override
- public void setNavBarButtonAlpha(float alpha, boolean animate) {
- verifyCallerAndClearCallingIdentityPostMain("setNavBarButtonAlpha", () ->
- notifyNavBarButtonAlphaChanged(alpha, animate));
- }
-
- @Override
public void onAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {
verifyCallerAndClearCallingIdentityPostMain("onAssistantProgress", () ->
notifyAssistantProgress(progress));
@@ -610,9 +603,6 @@
mBackAnimation = backAnimation;
mUiEventLogger = uiEventLogger;
- // Assumes device always starts with back button until launcher tells it that it does not
- mNavBarButtonAlpha = 1.0f;
-
dumpManager.registerDumpable(getClass().getSimpleName(), this);
// Listen for nav bar mode changes
@@ -814,7 +804,6 @@
mConnectionCallbacks.add(listener);
}
listener.onConnectionChanged(mOverviewProxy != null);
- listener.onNavBarButtonAlphaChanged(mNavBarButtonAlpha, false);
}
@Override
@@ -844,17 +833,10 @@
if (mOverviewProxy != null) {
mOverviewProxy.asBinder().unlinkToDeath(mOverviewServiceDeathRcpt, 0);
mOverviewProxy = null;
- notifyNavBarButtonAlphaChanged(1f, false /* animate */);
notifyConnectionChanged();
}
}
- private void notifyNavBarButtonAlphaChanged(float alpha, boolean animate) {
- for (int i = mConnectionCallbacks.size() - 1; i >= 0; --i) {
- mConnectionCallbacks.get(i).onNavBarButtonAlphaChanged(alpha, animate);
- }
- }
-
private void notifyHomeRotationEnabled(boolean enabled) {
for (int i = mConnectionCallbacks.size() - 1; i >= 0; --i) {
mConnectionCallbacks.get(i).onHomeRotationEnabled(enabled);
@@ -1083,7 +1065,6 @@
pw.print(" mInputFocusTransferStartMillis="); pw.println(mInputFocusTransferStartMillis);
pw.print(" mWindowCornerRadius="); pw.println(mWindowCornerRadius);
pw.print(" mSupportsRoundedCornersOnWindows="); pw.println(mSupportsRoundedCornersOnWindows);
- pw.print(" mNavBarButtonAlpha="); pw.println(mNavBarButtonAlpha);
pw.print(" mActiveNavBarRegion="); pw.println(mActiveNavBarRegion);
pw.print(" mNavBarMode="); pw.println(mNavBarMode);
mSysUiState.dump(pw, args);
@@ -1098,8 +1079,6 @@
default void onQuickScrubStarted() {}
/** Notify the recents app (overview) is started by 3-button navigation. */
default void onToggleRecentApps() {}
- /** Notify changes in the nav bar button alpha */
- default void onNavBarButtonAlphaChanged(float alpha, boolean animate) {}
default void onHomeRotationEnabled(boolean enabled) {}
default void onTaskbarStatusUpdated(boolean visible, boolean stashed) {}
default void onTaskbarAutohideSuspend(boolean suspend) {}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
index f6c4a31..cb13fcf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
@@ -81,7 +81,6 @@
}
lateinit var root: View
- private var blurRoot: View? = null
private var keyguardAnimator: Animator? = null
private var notificationAnimator: Animator? = null
private var updateScheduled: Boolean = false
@@ -235,7 +234,7 @@
val opaque = scrimsVisible && !blursDisabledForAppLaunch
Trace.traceCounter(Trace.TRACE_TAG_APP, "shade_blur_radius", blur)
- blurUtils.applyBlur(blurRoot?.viewRootImpl ?: root.viewRootImpl, blur, opaque)
+ blurUtils.applyBlur(root.viewRootImpl, blur, opaque)
lastAppliedBlur = blur
wallpaperController.setNotificationShadeZoom(zoomOut)
listeners.forEach {
@@ -271,7 +270,6 @@
override fun onAnimationEnd(animation: Animator?) {
keyguardAnimator = null
wakeAndUnlockBlurRadius = 0f
- scheduleUpdate()
}
})
start()
@@ -302,7 +300,6 @@
override fun onDozeAmountChanged(linear: Float, eased: Float) {
wakeAndUnlockBlurRadius = blurUtils.blurRadiusOfRatio(eased)
- scheduleUpdate()
}
}
@@ -439,12 +436,11 @@
shadeAnimation.animateTo(blurUtils.blurRadiusOfRatio(targetBlurNormalized).toInt())
}
- private fun scheduleUpdate(viewToBlur: View? = null) {
+ private fun scheduleUpdate() {
if (updateScheduled) {
return
}
updateScheduled = true
- blurRoot = viewToBlur
choreographer.postFrameCallback(updateBlurCallback)
}
@@ -495,16 +491,11 @@
*/
private var pendingRadius = -1
- /**
- * View on {@link Surface} that wants depth.
- */
- private var view: View? = null
-
private var springAnimation = SpringAnimation(this, object :
FloatPropertyCompat<DepthAnimation>("blurRadius") {
override fun setValue(rect: DepthAnimation?, value: Float) {
radius = value
- scheduleUpdate(view)
+ scheduleUpdate()
}
override fun getValue(rect: DepthAnimation?): Float {
@@ -519,11 +510,10 @@
springAnimation.addEndListener { _, _, _, _ -> pendingRadius = -1 }
}
- fun animateTo(newRadius: Int, viewToBlur: View? = null) {
- if (pendingRadius == newRadius && view == viewToBlur) {
+ fun animateTo(newRadius: Int) {
+ if (pendingRadius == newRadius) {
return
}
- view = viewToBlur
pendingRadius = newRadius
springAnimation.animateToFinalPosition(newRadius.toFloat())
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
index 492c9e1..961b433 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
@@ -394,8 +394,6 @@
void fadeKeyguardAfterLaunchTransition(Runnable beforeFading,
Runnable endRunnable, Runnable cancelRunnable);
- void fadeKeyguardWhilePulsing();
-
void animateKeyguardUnoccluding();
void startLaunchTransitionTimeout();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
index 4cc67a0..7463dac 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -3005,19 +3005,6 @@
}
/**
- * Fades the content of the Keyguard while we are dozing and makes it invisible when finished
- * fading.
- */
- @Override
- public void fadeKeyguardWhilePulsing() {
- mNotificationPanelViewController.fadeOut(0, FADE_KEYGUARD_DURATION_PULSING,
- ()-> {
- hideKeyguard();
- mStatusBarKeyguardViewManager.onKeyguardFadedAway();
- }).start();
- }
-
- /**
* Plays the animation when an activity that was occluding Keyguard goes away.
*/
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
index 0603281..24ce5e9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
@@ -209,12 +209,8 @@
void updateDozing() {
Assert.isMainThread();
- // When in wake-and-unlock while pulsing, keep dozing state until fully unlocked.
- boolean
- dozing =
- mDozingRequested && mStatusBarStateController.getState() == StatusBarState.KEYGUARD
- || mBiometricUnlockControllerLazy.get().getMode()
- == BiometricUnlockController.MODE_WAKE_AND_UNLOCK_PULSING;
+ boolean dozing =
+ mDozingRequested && mStatusBarStateController.getState() == StatusBarState.KEYGUARD;
// When in wake-and-unlock we may not have received a change to StatusBarState
// but we still should not be dozing, manually set to false.
if (mBiometricUnlockControllerLazy.get().getMode()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index e106f81..985f3cd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -836,30 +836,24 @@
});
} else {
executeAfterKeyguardGoneAction();
- boolean wakeUnlockPulsing =
- mBiometricUnlockController.getMode() == MODE_WAKE_AND_UNLOCK_PULSING;
mCentralSurfaces.setKeyguardFadingAway(startTime, delay, fadeoutDuration);
mBiometricUnlockController.startKeyguardFadingAway();
hideBouncer(true /* destroyView */);
- if (wakeUnlockPulsing) {
- mCentralSurfaces.fadeKeyguardWhilePulsing();
+
+ boolean staying = mStatusBarStateController.leaveOpenOnKeyguardHide();
+ if (!staying) {
+ mNotificationShadeWindowController.setKeyguardFadingAway(true);
wakeAndUnlockDejank();
+ mCentralSurfaces.hideKeyguard();
+ // hide() will happen asynchronously and might arrive after the scrims
+ // were already hidden, this means that the transition callback won't
+ // be triggered anymore and StatusBarWindowController will be forever in
+ // the fadingAway state.
+ mCentralSurfaces.updateScrimController();
} else {
- boolean staying = mStatusBarStateController.leaveOpenOnKeyguardHide();
- if (!staying) {
- mNotificationShadeWindowController.setKeyguardFadingAway(true);
- wakeAndUnlockDejank();
- mCentralSurfaces.hideKeyguard();
- // hide() will happen asynchronously and might arrive after the scrims
- // were already hidden, this means that the transition callback won't
- // be triggered anymore and StatusBarWindowController will be forever in
- // the fadingAway state.
- mCentralSurfaces.updateScrimController();
- } else {
- mCentralSurfaces.hideKeyguard();
- mCentralSurfaces.finishKeyguardFadingAway();
- mBiometricUnlockController.finishKeyguardFadingAway();
- }
+ mCentralSurfaces.hideKeyguard();
+ mCentralSurfaces.finishKeyguardFadingAway();
+ mBiometricUnlockController.finishKeyguardFadingAway();
}
updateStates();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
index b166b73..6446fb5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
@@ -48,7 +48,6 @@
import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mockito
-import org.mockito.Mockito.`when`
import org.mockito.Mockito.any
import org.mockito.Mockito.anyFloat
import org.mockito.Mockito.anyString
@@ -56,6 +55,7 @@
import org.mockito.Mockito.never
import org.mockito.Mockito.reset
import org.mockito.Mockito.verify
+import org.mockito.Mockito.`when`
import org.mockito.junit.MockitoJUnit
@RunWith(AndroidTestingRunner::class)
@@ -139,7 +139,7 @@
notificationShadeDepthController.onPanelExpansionChanged(
PanelExpansionChangeEvent(
fraction = 1f, expanded = true, tracking = false, dragDownPxAmount = 0f))
- verify(shadeAnimation).animateTo(eq(maxBlur), any())
+ verify(shadeAnimation).animateTo(eq(maxBlur))
}
@Test
@@ -147,7 +147,7 @@
notificationShadeDepthController.onPanelExpansionChanged(
PanelExpansionChangeEvent(
fraction = 0.01f, expanded = false, tracking = false, dragDownPxAmount = 0f))
- verify(shadeAnimation).animateTo(eq(maxBlur), any())
+ verify(shadeAnimation).animateTo(eq(maxBlur))
}
@Test
@@ -157,7 +157,7 @@
notificationShadeDepthController.onPanelExpansionChanged(
PanelExpansionChangeEvent(
fraction = 0f, expanded = false, tracking = false, dragDownPxAmount = 0f))
- verify(shadeAnimation).animateTo(eq(0), any())
+ verify(shadeAnimation).animateTo(eq(0))
}
@Test
@@ -168,15 +168,15 @@
onPanelExpansionChanged_apliesBlur_ifShade()
clearInvocations(shadeAnimation)
notificationShadeDepthController.onPanelExpansionChanged(event)
- verify(shadeAnimation, never()).animateTo(anyInt(), any())
+ verify(shadeAnimation, never()).animateTo(anyInt())
notificationShadeDepthController.onPanelExpansionChanged(
event.copy(fraction = 0.9f, tracking = true))
- verify(shadeAnimation, never()).animateTo(anyInt(), any())
+ verify(shadeAnimation, never()).animateTo(anyInt())
notificationShadeDepthController.onPanelExpansionChanged(
event.copy(fraction = 0.8f, tracking = false))
- verify(shadeAnimation).animateTo(eq(0), any())
+ verify(shadeAnimation).animateTo(eq(0))
}
@Test
@@ -186,7 +186,7 @@
notificationShadeDepthController.onPanelExpansionChanged(
PanelExpansionChangeEvent(
fraction = 0.6f, expanded = true, tracking = true, dragDownPxAmount = 0f))
- verify(shadeAnimation).animateTo(eq(maxBlur), any())
+ verify(shadeAnimation).animateTo(eq(maxBlur))
}
@Test
@@ -212,7 +212,7 @@
statusBarState = StatusBarState.KEYGUARD
statusBarStateListener.onStateChanged(statusBarState)
- verify(shadeAnimation).animateTo(eq(0), any())
+ verify(shadeAnimation).animateTo(eq(0))
}
@Test
@@ -395,13 +395,13 @@
@Test
fun brightnessMirrorVisible_whenVisible() {
notificationShadeDepthController.brightnessMirrorVisible = true
- verify(brightnessSpring).animateTo(eq(maxBlur), any())
+ verify(brightnessSpring).animateTo(eq(maxBlur))
}
@Test
fun brightnessMirrorVisible_whenHidden() {
notificationShadeDepthController.brightnessMirrorVisible = false
- verify(brightnessSpring).animateTo(eq(0), any())
+ verify(brightnessSpring).animateTo(eq(0))
}
@Test
@@ -424,7 +424,7 @@
fun ignoreShadeBlurUntilHidden_whennNull_ignoresIfShadeHasNoBlur() {
`when`(shadeAnimation.radius).thenReturn(0f)
notificationShadeDepthController.blursDisabledForAppLaunch = true
- verify(shadeAnimation, never()).animateTo(anyInt(), any())
+ verify(shadeAnimation, never()).animateTo(anyInt())
}
private fun enableSplitShade() {
diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java
index 5393b2a..a6e5aa4 100644
--- a/services/core/java/com/android/server/Watchdog.java
+++ b/services/core/java/com/android/server/Watchdog.java
@@ -314,10 +314,8 @@
} else {
prefix = "Blocked in monitor " + mCurrentMonitor.getClass().getName();
}
- Thread thread = getThread();
- String threadIdentifier = thread.getName() + ", tid=" + thread.getId();
long latencySeconds = (SystemClock.uptimeMillis() - mStartTimeMillis) / 1000;
- return prefix + " on " + mName + " (" + threadIdentifier + ")"
+ return prefix + " on " + mName + " (" + getThread().getName() + ")"
+ " for " + latencySeconds + "s";
}
diff --git a/services/core/java/com/android/server/logcat/LogAccessDialogActivity.java b/services/core/java/com/android/server/logcat/LogAccessDialogActivity.java
index 98bae3d..811e96c 100644
--- a/services/core/java/com/android/server/logcat/LogAccessDialogActivity.java
+++ b/services/core/java/com/android/server/logcat/LogAccessDialogActivity.java
@@ -96,6 +96,7 @@
// show Alert
mAlert = mAlertDialog.create();
+ mAlert.getWindow().setHideOverlayWindows(true);
mAlert.show();
// set Alert Timeout
diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java
index bda7b82..7193587 100644
--- a/services/core/java/com/android/server/pm/DeletePackageHelper.java
+++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java
@@ -673,6 +673,18 @@
final String packageName = versionedPackage.getPackageName();
final long versionCode = versionedPackage.getLongVersionCode();
+ if (mPm.mProtectedPackages.isPackageDataProtected(userId, packageName)) {
+ mPm.mHandler.post(() -> {
+ try {
+ Slog.w(TAG, "Attempted to delete protected package: " + packageName);
+ observer.onPackageDeleted(packageName,
+ PackageManager.DELETE_FAILED_INTERNAL_ERROR, null);
+ } catch (RemoteException re) {
+ }
+ });
+ return;
+ }
+
try {
if (mPm.mInjector.getLocalService(ActivityTaskManagerInternal.class)
.isBaseOfLockedTask(packageName)) {
diff --git a/services/core/java/com/android/server/pm/UserManagerInternal.java b/services/core/java/com/android/server/pm/UserManagerInternal.java
index 6265584..b9a1195 100644
--- a/services/core/java/com/android/server/pm/UserManagerInternal.java
+++ b/services/core/java/com/android/server/pm/UserManagerInternal.java
@@ -352,10 +352,22 @@
* Returns the display id assigned to the user, or {@code Display.INVALID_DISPLAY} if the
* user is not assigned to any display.
*
- * <p>The current foreground user is associated with the main display, while other users would
- * only assigned to a display if they were started with
+ * <p>The current foreground user is associated with the
+ * {@link android.view.Display#DEFAULT_DISPLAY default display}, while other users would only be
+ * assigned to a display if they were started with
* {@code ActivityManager.startUserInBackgroundOnSecondaryDisplay()}. If the user is a profile
* and is running, it's assigned to its parent display.
*/
public abstract int getDisplayAssignedToUser(@UserIdInt int userId);
+
+ /**
+ * Returns the main user (i.e., not a profile) that is assigned to the display, or the
+ * {@link android.app.ActivityManager#getCurrentUser() current foreground user} if no user is
+ * associated with the display.
+ *
+ * <p>The {@link android.view.Display#DEFAULT_DISPLAY default display} is always assigned to
+ * the current foreground user, while other displays would be associated with the user that was
+ * started with {@code ActivityManager.startUserInBackgroundOnSecondaryDisplay()}.
+ */
+ public abstract @UserIdInt int getUserAssignedToDisplay(int displayId);
}
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 1e30757..6749ceb 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -1387,15 +1387,20 @@
@Override
public void setUserEnabled(@UserIdInt int userId) {
checkManageUsersPermission("enable user");
+ UserInfo info;
+ boolean wasUserDisabled = false;
synchronized (mPackagesLock) {
- UserInfo info;
synchronized (mUsersLock) {
info = getUserInfoLU(userId);
+ if (info != null && !info.isEnabled()) {
+ wasUserDisabled = true;
+ info.flags ^= UserInfo.FLAG_DISABLED;
+ writeUserLP(getUserDataLU(info.id));
+ }
}
- if (info != null && !info.isEnabled()) {
- info.flags ^= UserInfo.FLAG_DISABLED;
- writeUserLP(getUserDataLU(info.id));
- }
+ }
+ if (wasUserDisabled && info != null && info.isProfile()) {
+ sendProfileAddedBroadcast(info.profileGroupId, info.id);
}
}
@@ -1778,6 +1783,43 @@
}
}
+ @VisibleForTesting
+ int getUserAssignedToDisplay(int displayId) {
+ if (displayId == Display.DEFAULT_DISPLAY) {
+ return getCurrentUserId();
+ }
+
+ if (!mUsersOnSecondaryDisplaysEnabled) {
+ int currentUserId = getCurrentUserId();
+ Slogf.w(LOG_TAG, "getUsersAssignedToDisplay(%d) called with non-DEFAULT_DISPLAY on "
+ + "system that doesn't support that; returning current user (%d)", displayId,
+ currentUserId);
+ return currentUserId;
+ }
+
+ synchronized (mUsersOnSecondaryDisplays) {
+ for (int i = 0; i < mUsersOnSecondaryDisplays.size(); i++) {
+ if (mUsersOnSecondaryDisplays.valueAt(i) != displayId) {
+ continue;
+ }
+ int userId = mUsersOnSecondaryDisplays.keyAt(i);
+ if (!isProfileUnchecked(userId)) {
+ return userId;
+ } else if (DBG_MUMD) {
+ Slogf.d(LOG_TAG, "getUserAssignedToDisplay(%d): skipping user %d because it's "
+ + "a profile", displayId, userId);
+ }
+ }
+ }
+
+ int currentUserId = getCurrentUserId();
+ if (DBG_MUMD) {
+ Slogf.d(LOG_TAG, "getUserAssignedToDisplay(%d): no user assigned to display, returning "
+ + "current user (%d) instead", displayId, currentUserId);
+ }
+ return currentUserId;
+ }
+
/**
* Gets the current user id, calling {@link ActivityManagerInternal} directly (and without
* performing any permission check).
@@ -4830,7 +4872,9 @@
MetricsLogger.count(mContext, userInfo.isGuest() ? TRON_GUEST_CREATED
: (userInfo.isDemo() ? TRON_DEMO_CREATED : TRON_USER_CREATED), 1);
- if (!userInfo.isProfile()) {
+ if (userInfo.isProfile()) {
+ sendProfileAddedBroadcast(userInfo.profileGroupId, userInfo.id);
+ } else {
// If the user switch hasn't been explicitly toggled on or off by the user, turn it on.
if (android.provider.Settings.Global.getString(mContext.getContentResolver(),
android.provider.Settings.Global.USER_SWITCHER_ENABLED) == null) {
@@ -5430,6 +5474,17 @@
}
/**
+ * Send {@link Intent#ACTION_PROFILE_ADDED} broadcast when a user of type
+ * {@link UserInfo#isProfile()} is added. This broadcast is sent only to dynamic receivers
+ * created with {@link Context#registerReceiver}.
+ */
+ private void sendProfileAddedBroadcast(int parentUserId, int addedUserId) {
+ sendProfileBroadcast(
+ new Intent(Intent.ACTION_PROFILE_ADDED),
+ parentUserId, addedUserId);
+ }
+
+ /**
* Send {@link Intent#ACTION_PROFILE_REMOVED} broadcast when a user of type
* {@link UserInfo#isProfile()} is removed. Additionally sends
* {@link Intent#ACTION_MANAGED_PROFILE_REMOVED} broadcast if the profile is of type
@@ -5447,12 +5502,12 @@
if (Objects.equals(userType, UserManager.USER_TYPE_PROFILE_MANAGED)) {
sendManagedProfileRemovedBroadcast(parentUserId, removedUserId);
}
- sendProfileBroadcastToRegisteredReceivers(
+ sendProfileBroadcast(
new Intent(Intent.ACTION_PROFILE_REMOVED),
parentUserId, removedUserId);
}
- private void sendProfileBroadcastToRegisteredReceivers(Intent intent,
+ private void sendProfileBroadcast(Intent intent,
int parentUserId, int userId) {
final UserHandle parentHandle = UserHandle.of(parentUserId);
intent.putExtra(Intent.EXTRA_USER, UserHandle.of(userId));
@@ -5463,7 +5518,7 @@
private void sendManagedProfileRemovedBroadcast(int parentUserId, int removedUserId) {
Intent managedProfileIntent = new Intent(Intent.ACTION_MANAGED_PROFILE_REMOVED);
- managedProfileIntent.putExtra(Intent.EXTRA_USER, new UserHandle(removedUserId));
+ managedProfileIntent.putExtra(Intent.EXTRA_USER, UserHandle.of(removedUserId));
managedProfileIntent.putExtra(Intent.EXTRA_USER_HANDLE, removedUserId);
final UserHandle parentHandle = UserHandle.of(parentUserId);
getDevicePolicyManagerInternal().broadcastIntentToManifestReceivers(
@@ -6827,6 +6882,11 @@
public int getDisplayAssignedToUser(int userId) {
return UserManagerService.this.getDisplayAssignedToUser(userId);
}
+
+ @Override
+ public int getUserAssignedToDisplay(int displayId) {
+ return UserManagerService.this.getUserAssignedToDisplay(displayId);
+ }
} // class LocalService
/**
diff --git a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java
index 88b4a94..23872d4f 100644
--- a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java
@@ -46,7 +46,7 @@
* Legacy permission manager service.
*/
public class LegacyPermissionManagerService extends ILegacyPermissionManager.Stub {
- private static final String TAG = "PackageManager";
+ private static final String TAG = "PermissionManager";
/** Injector that can be used to facilitate testing. */
private final Injector mInjector;
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
index c05d5ce..4c095fb 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
@@ -168,7 +168,7 @@
*/
public class PermissionManagerServiceImpl implements PermissionManagerServiceInterface {
- private static final String TAG = "PackageManager";
+ private static final String TAG = "PermissionManager";
private static final String LOG_TAG = PermissionManagerServiceImpl.class.getSimpleName();
private static final String SKIP_KILL_APP_REASON_NOTIFICATION_TEST = "skip permission revoke "
diff --git a/services/core/java/com/android/server/wm/ActivityStartController.java b/services/core/java/com/android/server/wm/ActivityStartController.java
index 037cd8e..d131457 100644
--- a/services/core/java/com/android/server/wm/ActivityStartController.java
+++ b/services/core/java/com/android/server/wm/ActivityStartController.java
@@ -387,6 +387,14 @@
callingUid, realCallingUid, UserHandle.USER_NULL);
final SparseArray<String> startingUidPkgs = new SparseArray<>();
final long origId = Binder.clearCallingIdentity();
+
+ SafeActivityOptions bottomOptions = null;
+ if (options != null) {
+ // To ensure the first N-1 activities (N == total # of activities) are also launched
+ // into the correct display, use a copy of the passed-in options (keeping only
+ // display-related info) for these activities.
+ bottomOptions = options.selectiveCloneDisplayOptions();
+ }
try {
intents = ArrayUtils.filterNotNull(intents, Intent[]::new);
final ActivityStarter[] starters = new ActivityStarter[intents.length];
@@ -435,7 +443,7 @@
final boolean top = i == intents.length - 1;
final SafeActivityOptions checkedOptions = top
? options
- : null;
+ : bottomOptions;
starters[i] = obtainStarter(intent, reason)
.setIntentGrants(intentGrants)
.setCaller(caller)
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index b10e420..7471993 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -1618,24 +1618,6 @@
}
config = new Configuration();
computeScreenConfiguration(config);
- } else if (!(mTransitionController.isCollecting(this)
- // If waiting for a remote display change, don't prematurely update configuration.
- || mRemoteDisplayChangeController.isWaitingForRemoteDisplayChange())) {
- // No obvious action we need to take, but if our current state mismatches the
- // activity manager's, update it, disregarding font scale, which should remain set
- // to the value of the previous configuration.
- // Here we're calling Configuration#unset() instead of setToDefaults() because we
- // need to keep override configs clear of non-empty values (e.g. fontSize).
- final Configuration currentConfig = getRequestedOverrideConfiguration();
- mTmpConfiguration.unset();
- mTmpConfiguration.updateFrom(currentConfig);
- computeScreenConfiguration(mTmpConfiguration);
- if (currentConfig.diff(mTmpConfiguration) != 0) {
- mWaitingForConfig = true;
- setLayoutNeeded();
- mDisplayRotation.prepareNormalRotationAnimation();
- config = new Configuration(mTmpConfiguration);
- }
}
return config;
diff --git a/services/core/java/com/android/server/wm/SafeActivityOptions.java b/services/core/java/com/android/server/wm/SafeActivityOptions.java
index d92a1f4..a638784 100644
--- a/services/core/java/com/android/server/wm/SafeActivityOptions.java
+++ b/services/core/java/com/android/server/wm/SafeActivityOptions.java
@@ -118,6 +118,34 @@
}
/**
+ * To ensure that two activities, one using this object, and the other using the
+ * SafeActivityOptions returned from this function, are launched into the same display through
+ * ActivityStartController#startActivities, all display-related information, i.e.
+ * displayAreaToken, launchDisplayId and callerDisplayId, are cloned.
+ */
+ @Nullable SafeActivityOptions selectiveCloneDisplayOptions() {
+ final ActivityOptions options = cloneLaunchingDisplayOptions(mOriginalOptions);
+ final ActivityOptions callerOptions = cloneLaunchingDisplayOptions(mCallerOptions);
+ if (options == null && callerOptions == null) {
+ return null;
+ }
+
+ final SafeActivityOptions safeOptions = new SafeActivityOptions(options,
+ mOriginalCallingPid, mOriginalCallingUid);
+ safeOptions.mCallerOptions = callerOptions;
+ safeOptions.mRealCallingPid = mRealCallingPid;
+ safeOptions.mRealCallingUid = mRealCallingUid;
+ return safeOptions;
+ }
+
+ private ActivityOptions cloneLaunchingDisplayOptions(ActivityOptions options) {
+ return options == null ? null : ActivityOptions.makeBasic()
+ .setLaunchTaskDisplayArea(options.getLaunchTaskDisplayArea())
+ .setLaunchDisplayId(options.getLaunchDisplayId())
+ .setCallerDisplayId((options.getCallerDisplayId()));
+ }
+
+ /**
* Overrides options with options from a caller and records {@link Binder#getCallingPid}/
* {@link Binder#getCallingUid}. Thus, calling identity MUST NOT be cleared when calling this
* method.
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index c9fa84c..89a2809 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -10220,6 +10220,11 @@
ApplicationInfo applicationInfo = mIPackageManager.getApplicationInfo(
enabledPackage, PackageManager.MATCH_UNINSTALLED_PACKAGES,
userIdToCheck);
+
+ if (applicationInfo == null) {
+ return false;
+ }
+
systemService = (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
} catch (RemoteException e) {
Slogf.i(LOG_TAG, "Can't talk to package managed", e);
@@ -15408,24 +15413,7 @@
}
}
- final String[] feature_allow =
- { DevicePolicyManager.ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED };
- final String[] feature_disallow =
- { DevicePolicyManager.ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED };
-
- boolean compatible = true;
- for (Account account : accounts) {
- if (hasAccountFeatures(am, account, feature_disallow)) {
- Slogf.e(LOG_TAG, "%s has %s", account, feature_disallow[0]);
- compatible = false;
- break;
- }
- if (!hasAccountFeatures(am, account, feature_allow)) {
- Slogf.e(LOG_TAG, "%s doesn't have %s", account, feature_allow[0]);
- compatible = false;
- break;
- }
- }
+ boolean compatible = !hasIncompatibleAccounts(am, accounts);
if (compatible) {
Slogf.w(LOG_TAG, "All accounts are compatible");
} else {
@@ -15435,6 +15423,27 @@
});
}
+ private boolean hasIncompatibleAccounts(AccountManager am, Account[] accounts) {
+ // TODO(b/244284408): Add test
+ final String[] feature_allow =
+ { DevicePolicyManager.ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_ALLOWED };
+ final String[] feature_disallow =
+ { DevicePolicyManager.ACCOUNT_FEATURE_DEVICE_OR_PROFILE_OWNER_DISALLOWED };
+
+ for (Account account : accounts) {
+ if (hasAccountFeatures(am, account, feature_disallow)) {
+ Slogf.e(LOG_TAG, "%s has %s", account, feature_disallow[0]);
+ return true;
+ }
+ if (!hasAccountFeatures(am, account, feature_allow)) {
+ Slogf.e(LOG_TAG, "%s doesn't have %s", account, feature_allow[0]);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
private boolean hasAccountFeatures(AccountManager am, Account account, String[] features) {
try {
return am.hasFeatures(account, features, null, null).getResult();
@@ -18698,7 +18707,10 @@
}
AccountManager am = AccountManager.get(mContext);
Account[] accounts = am.getAccounts();
- return accounts.length == 0;
+ if (accounts.length == 0) {
+ return true;
+ }
+ return !hasIncompatibleAccounts(am, accounts);
}
private void setBypassDevicePolicyManagementRoleQualificationStateInternal(
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerInternalTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerInternalTest.java
index 1cff6855..86a5c90 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerInternalTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerInternalTest.java
@@ -229,4 +229,9 @@
protected int getDisplayAssignedToUser(int userId) {
return mUmi.getDisplayAssignedToUser(userId);
}
+
+ @Override
+ protected int getUserAssignedToDisplay(int displayId) {
+ return mUmi.getUserAssignedToDisplay(displayId);
+ }
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceOrInternalTestCase.java b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceOrInternalTestCase.java
index 4f61b8f..991053a1 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceOrInternalTestCase.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceOrInternalTestCase.java
@@ -194,6 +194,7 @@
protected abstract boolean isUserVisible(int userId);
protected abstract boolean isUserVisibleOnDisplay(int userId, int displayId);
protected abstract int getDisplayAssignedToUser(int userId);
+ protected abstract int getUserAssignedToDisplay(int displayId);
/////////////////////////////////
// Tests for the above methods //
@@ -427,6 +428,67 @@
// NOTE: we don't need to add tests for profiles (started / stopped profiles of bg user), as
// getDisplayAssignedToUser() for bg users relies only on the user / display assignments
+ @Test
+ public void testGetUserAssignedToDisplay_invalidDisplay() {
+ mockCurrentUser(USER_ID);
+
+ assertWithMessage("getUserAssignedToDisplay(%s)", INVALID_DISPLAY)
+ .that(getUserAssignedToDisplay(INVALID_DISPLAY)).isEqualTo(USER_ID);
+ }
+
+ @Test
+ public void testGetUserAssignedToDisplay_defaultDisplay() {
+ mockCurrentUser(USER_ID);
+
+ assertWithMessage("getUserAssignedToDisplay(%s)", DEFAULT_DISPLAY)
+ .that(getUserAssignedToDisplay(DEFAULT_DISPLAY)).isEqualTo(USER_ID);
+ }
+
+ @Test
+ public void testGetUserAssignedToDisplay_secondaryDisplay() {
+ mockCurrentUser(USER_ID);
+
+ assertWithMessage("getUserAssignedToDisplay(%s)", SECONDARY_DISPLAY_ID)
+ .that(getUserAssignedToDisplay(SECONDARY_DISPLAY_ID)).isEqualTo(USER_ID);
+ }
+
+ @Test
+ public void testGetUserAssignedToDisplay_mumd_bgUserOnSecondaryDisplay() {
+ enableUsersOnSecondaryDisplays();
+ mockCurrentUser(OTHER_USER_ID);
+ assignUserToDisplay(USER_ID, SECONDARY_DISPLAY_ID);
+
+ assertWithMessage("getUserAssignedToDisplay(%s)", SECONDARY_DISPLAY_ID)
+ .that(getUserAssignedToDisplay(SECONDARY_DISPLAY_ID)).isEqualTo(USER_ID);
+ }
+
+ @Test
+ public void testGetUserAssignedToDisplay_mumd_noUserOnSecondaryDisplay() {
+ enableUsersOnSecondaryDisplays();
+ mockCurrentUser(USER_ID);
+
+ assertWithMessage("getUserAssignedToDisplay(%s)", SECONDARY_DISPLAY_ID)
+ .that(getUserAssignedToDisplay(SECONDARY_DISPLAY_ID)).isEqualTo(USER_ID);
+ }
+
+ // TODO(b/244644281): scenario below shouldn't happen on "real life", as the profile cannot be
+ // started on secondary display if its parent isn't, so we might need to remove (or refactor
+ // this test) if/when the underlying logic changes
+ @Test
+ public void testGetUserAssignedToDisplay_mumd_profileOnSecondaryDisplay() {
+ enableUsersOnSecondaryDisplays();
+ addDefaultProfileAndParent();
+ mockCurrentUser(USER_ID);
+ assignUserToDisplay(PROFILE_USER_ID, SECONDARY_DISPLAY_ID);
+
+ assertWithMessage("getUserAssignedToDisplay(%s)", SECONDARY_DISPLAY_ID)
+ .that(getUserAssignedToDisplay(SECONDARY_DISPLAY_ID)).isEqualTo(USER_ID);
+ }
+
+ // NOTE: we don't need to add tests for profiles (started / stopped profiles of bg user), as
+ // getUserAssignedToDisplay() for bg users relies only on the user / display assignments
+
+
///////////////////////////////////////////
// Helper methods exposed to sub-classes //
///////////////////////////////////////////
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
index b335a34..8388a70 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
@@ -102,4 +102,9 @@
protected int getDisplayAssignedToUser(int userId) {
return mUms.getDisplayAssignedToUser(userId);
}
+
+ @Override
+ protected int getUserAssignedToDisplay(int displayId) {
+ return mUms.getUserAssignedToDisplay(displayId);
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 6ed8460..333be7b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -2991,6 +2991,7 @@
// Add a decor insets provider window.
final WindowState navbar = createNavBarWithProvidedInsets(squareDisplay);
squareDisplay.getDisplayPolicy().updateDecorInsetsInfoIfNeeded(navbar);
+ squareDisplay.sendNewConfiguration();
final Task task = new TaskBuilder(mSupervisor).setDisplay(squareDisplay).build();
// create a fixed portrait activity
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
index 20b1120..2fccd64 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
@@ -220,10 +220,7 @@
// Check that changes are reported
Configuration c = new Configuration(newDisp1.getRequestedOverrideConfiguration());
c.windowConfiguration.setBounds(new Rect(0, 0, 1000, 1300));
- newDisp1.onRequestedOverrideConfigurationChanged(c);
- mAtm.mRootWindowContainer.ensureVisibilityAndConfig(null /* starting */,
- newDisp1.mDisplayId, false /* markFrozenIfConfigChanged */,
- false /* deferResume */);
+ newDisp1.performDisplayOverrideConfigUpdate(c);
assertEquals(0, added.size());
assertEquals(1, changed.size());
assertEquals(0, removed.size());
diff --git a/services/tests/wmtests/src/com/android/server/wm/SafeActivityOptionsTest.java b/services/tests/wmtests/src/com/android/server/wm/SafeActivityOptionsTest.java
index 7111852..e57ad5d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SafeActivityOptionsTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SafeActivityOptionsTest.java
@@ -17,9 +17,12 @@
package com.android.server.wm;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.mockito.Mockito.mock;
import android.app.ActivityOptions;
import android.platform.test.annotations.Presubmit;
+import android.window.WindowContainerToken;
import androidx.test.filters.MediumTest;
@@ -43,4 +46,21 @@
final ActivityOptions result = options.mergeActivityOptions(opts1, opts2);
assertEquals(6, result.getLaunchDisplayId());
}
+
+ @Test
+ public void test_selectiveCloneDisplayOptions() {
+ final WindowContainerToken token = mock(WindowContainerToken.class);
+ final int launchDisplayId = 5;
+ final int callerDisplayId = 6;
+
+ final SafeActivityOptions clone = new SafeActivityOptions(ActivityOptions.makeBasic()
+ .setLaunchTaskDisplayArea(token)
+ .setLaunchDisplayId(launchDisplayId)
+ .setCallerDisplayId(callerDisplayId))
+ .selectiveCloneDisplayOptions();
+
+ assertSame(clone.getOriginalOptions().getLaunchTaskDisplayArea(), token);
+ assertEquals(clone.getOriginalOptions().getLaunchDisplayId(), launchDisplayId);
+ assertEquals(clone.getOriginalOptions().getCallerDisplayId(), callerDisplayId);
+ }
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
index 8df3548..1e798f3 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
@@ -58,9 +58,7 @@
fun buildFlicker(): FlickerBuilder {
return FlickerBuilder(instrumentation).apply {
setup {
- test {
- testSpec.setIsTablet(wmHelper.currentState.wmState.isTablet)
- }
+ testSpec.setIsTablet(wmHelper.currentState.wmState.isTablet)
}
transition()
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/activityembedding/OpenActivityEmbeddingPlaceholderSplit.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/activityembedding/OpenActivityEmbeddingPlaceholderSplit.kt
index 1a40f82..34544ea 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/activityembedding/OpenActivityEmbeddingPlaceholderSplit.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/activityembedding/OpenActivityEmbeddingPlaceholderSplit.kt
@@ -49,21 +49,15 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- }
- eachRun {
- testApp.launchViaIntent(wmHelper)
- }
+ tapl.setExpectedRotationCheckEnabled(false)
+ testApp.launchViaIntent(wmHelper)
}
transitions {
testApp.launchPlaceholderSplit(wmHelper)
}
teardown {
- test {
- tapl.goHome()
- testApp.exit(wmHelper)
- }
+ tapl.goHome()
+ testApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt
index 55d4129..1322a1c 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt
@@ -71,9 +71,7 @@
get() = {
super.transition(this)
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- }
+ tapl.setExpectedRotationCheckEnabled(false)
}
transitions {
// Can't use TAPL at the moment because of rotation test issues
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt
index cb197cd..f296d97 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt
@@ -36,18 +36,12 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotation(testSpec.startRotation)
- }
- eachRun {
- testApp.launchViaIntent(wmHelper)
- this.setRotation(testSpec.startRotation)
- }
+ tapl.setExpectedRotation(testSpec.startRotation)
+ testApp.launchViaIntent(wmHelper)
+ this.setRotation(testSpec.startRotation)
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt
index 725c10a..479ac8e 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt
@@ -57,14 +57,10 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- eachRun {
- testApp.launchViaIntent(wmHelper)
- }
+ testApp.launchViaIntent(wmHelper)
}
teardown {
- eachRun {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
testApp.closeIME(wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt
index 8832686..07b52a6 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt
@@ -57,17 +57,11 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- }
- eachRun {
- testApp.launchViaIntent(wmHelper)
- }
+ tapl.setExpectedRotationCheckEnabled(false)
+ testApp.launchViaIntent(wmHelper)
}
teardown {
- eachRun {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
tapl.goHome()
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt
index 71e0aa1..fec7727 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeEditorPopupDialogTest.kt
@@ -46,13 +46,9 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- }
- eachRun {
- imeTestApp.launchViaIntent(wmHelper)
- imeTestApp.openIME(wmHelper)
- }
+ tapl.setExpectedRotationCheckEnabled(false)
+ imeTestApp.launchViaIntent(wmHelper)
+ imeTestApp.openIME(wmHelper)
}
transitions {
imeTestApp.dismissDialog(wmHelper)
@@ -61,13 +57,11 @@
.waitForAndVerify()
}
teardown {
- eachRun {
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .waitForAndVerify()
- imeTestApp.exit(wmHelper)
- }
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
+ imeTestApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToAppTest.kt
index 0f91fd5..50596f1 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToAppTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToAppTest.kt
@@ -50,17 +50,11 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- testApp.launchViaIntent(wmHelper)
- }
- eachRun {
- testApp.openIME(wmHelper)
- }
+ testApp.launchViaIntent(wmHelper)
+ testApp.openIME(wmHelper)
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
testApp.closeIME(wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt
index 007a4f1..17eb8f9 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt
@@ -49,13 +49,9 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- }
- eachRun {
- testApp.launchViaIntent(wmHelper)
- testApp.openIME(wmHelper)
- }
+ tapl.setExpectedRotationCheckEnabled(false)
+ testApp.launchViaIntent(wmHelper)
+ testApp.openIME(wmHelper)
}
transitions {
tapl.goHome()
@@ -65,9 +61,7 @@
.waitForAndVerify()
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt
index 216e0eda..f0776c1 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeAndDialogThemeAppTest.kt
@@ -55,22 +55,18 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- eachRun {
- testApp.launchViaIntent(wmHelper)
- wmHelper.StateSyncBuilder()
- .withImeShown()
- .waitForAndVerify()
- testApp.startDialogThemedActivity(wmHelper)
- // Verify IME insets isn't visible on dialog since it's non-IME focusable window
- assertFalse(testApp.getInsetsVisibleFromDialog(ime()))
- assertTrue(testApp.getInsetsVisibleFromDialog(statusBars()))
- assertTrue(testApp.getInsetsVisibleFromDialog(navigationBars()))
- }
+ testApp.launchViaIntent(wmHelper)
+ wmHelper.StateSyncBuilder()
+ .withImeShown()
+ .waitForAndVerify()
+ testApp.startDialogThemedActivity(wmHelper)
+ // Verify IME insets isn't visible on dialog since it's non-IME focusable window
+ assertFalse(testApp.getInsetsVisibleFromDialog(ime()))
+ assertTrue(testApp.getInsetsVisibleFromDialog(statusBars()))
+ assertTrue(testApp.getInsetsVisibleFromDialog(navigationBars()))
}
teardown {
- eachRun {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
testApp.dismissDialog(wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt
index 868290e..85e9e75 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/LaunchAppShowImeOnStartTest.kt
@@ -74,16 +74,12 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- eachRun {
- initializeApp.launchViaIntent(wmHelper)
- this.setRotation(testSpec.startRotation)
- }
+ initializeApp.launchViaIntent(wmHelper)
+ this.setRotation(testSpec.startRotation)
}
teardown {
- eachRun {
- initializeApp.exit(wmHelper)
- testApp.exit(wmHelper)
- }
+ initializeApp.exit(wmHelper)
+ testApp.exit(wmHelper)
}
transitions {
testApp.launchViaIntent(wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowAndCloseTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowAndCloseTest.kt
index 16c23b9..d42a6c3 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowAndCloseTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowAndCloseTest.kt
@@ -52,19 +52,15 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- eachRun {
- simpleApp.launchViaIntent(wmHelper)
- testApp.launchViaIntent(wmHelper)
- testApp.openIME(wmHelper)
- }
+ simpleApp.launchViaIntent(wmHelper)
+ testApp.launchViaIntent(wmHelper)
+ testApp.openIME(wmHelper)
}
transitions {
testApp.finishActivity(wmHelper)
}
teardown {
- test {
- simpleApp.exit(wmHelper)
- }
+ simpleApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt
index e587492..c41c659 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt
@@ -54,20 +54,16 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- }
- test {
- // Launch the activity with expecting IME will be shown.
- imeTestApp.launchViaIntent(wmHelper)
- }
- eachRun {
- // Swiping out the IME activity to home.
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .waitForAndVerify()
- }
+ tapl.setExpectedRotationCheckEnabled(false)
+
+ // Launch the activity with expecting IME will be shown.
+ imeTestApp.launchViaIntent(wmHelper)
+
+ // Swiping out the IME activity to home.
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
}
transitions {
// Bring the exist IME activity to the front in landscape mode device rotation.
@@ -75,9 +71,7 @@
imeTestApp.launchViaIntent(wmHelper)
}
teardown {
- test {
- imeTestApp.exit(wmHelper)
- }
+ imeTestApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt
index c1f17f3..84b0f60 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt
@@ -48,20 +48,14 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- testApp.launchViaIntent(wmHelper)
- }
+ testApp.launchViaIntent(wmHelper)
}
transitions {
testApp.openIME(wmHelper)
}
teardown {
- eachRun {
- testApp.closeIME(wmHelper)
- }
- test {
- testApp.exit(wmHelper)
- }
+ testApp.closeIME(wmHelper)
+ testApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt
index 5fd9442..1af8820 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt
@@ -57,9 +57,7 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- eachRun {
- imeTestApp.launchViaIntent(wmHelper)
- }
+ imeTestApp.launchViaIntent(wmHelper)
}
transitions {
device.pressRecentApps()
@@ -69,13 +67,11 @@
builder.waitForAndVerify()
}
teardown {
- test {
- device.pressHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .waitForAndVerify()
- imeTestApp.exit(wmHelper)
- }
+ device.pressHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
+ imeTestApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt
index 0281a60..f7e5b23 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt
@@ -52,17 +52,13 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
testApp.launchViaIntent(wmHelper)
testApp.openIME(wmHelper)
- }
- eachRun {
this.setRotation(testSpec.startRotation)
device.pressRecentApps()
wmHelper.StateSyncBuilder()
.withRecentsActivityVisible()
.waitForAndVerify()
- }
}
transitions {
device.reopenAppFromOverview(wmHelper)
@@ -72,9 +68,7 @@
.waitForAndVerify()
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt
index 85bf6d7..b75183d 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt
@@ -64,33 +64,27 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- }
- eachRun {
- this.setRotation(testSpec.startRotation)
- testApp.launchViaIntent(wmHelper)
- wmHelper.StateSyncBuilder()
- .withFullScreenApp(testApp)
- .waitForAndVerify()
+ tapl.setExpectedRotationCheckEnabled(false)
+ this.setRotation(testSpec.startRotation)
+ testApp.launchViaIntent(wmHelper)
+ wmHelper.StateSyncBuilder()
+ .withFullScreenApp(testApp)
+ .waitForAndVerify()
- imeTestApp.launchViaIntent(wmHelper)
- wmHelper.StateSyncBuilder()
- .withFullScreenApp(imeTestApp)
- .waitForAndVerify()
+ imeTestApp.launchViaIntent(wmHelper)
+ wmHelper.StateSyncBuilder()
+ .withFullScreenApp(imeTestApp)
+ .waitForAndVerify()
- imeTestApp.openIME(wmHelper)
- }
+ imeTestApp.openIME(wmHelper)
}
teardown {
- eachRun {
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .waitForAndVerify()
- testApp.exit(wmHelper)
- imeTestApp.exit(wmHelper)
- }
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
+ testApp.exit(wmHelper)
+ imeTestApp.exit(wmHelper)
}
transitions {
// [Step1]: Swipe right from imeTestApp to testApp task
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt
index eb9acc4..08d7be2 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/ActivitiesTransitionTest.kt
@@ -62,15 +62,11 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotation(testSpec.startRotation)
- testApp.launchViaIntent(wmHelper)
- }
+ tapl.setExpectedRotation(testSpec.startRotation)
+ testApp.launchViaIntent(wmHelper)
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
testApp.openSecondActivity(device, wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest.kt
index 3ff59e9..5eba78c 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest.kt
@@ -52,21 +52,15 @@
get() = {
super.transition(this)
setup {
- test{
- tapl.setExpectedRotationCheckEnabled(false)
- }
- eachRun {
- // 1. Open camera - cold -> close it first
- cameraApp.exit(wmHelper)
- cameraApp.launchViaIntent(wmHelper)
- // 2. Press home button (button nav mode) / swipe up to home (gesture nav mode)
- tapl.goHome()
- }
+ tapl.setExpectedRotationCheckEnabled(false)
+ // 1. Open camera - cold -> close it first
+ cameraApp.exit(wmHelper)
+ cameraApp.launchViaIntent(wmHelper)
+ // 2. Press home button (button nav mode) / swipe up to home (gesture nav mode)
+ tapl.goHome()
}
teardown {
- eachRun {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
testApp.launchViaIntent(wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt
index accf8af..354964d 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt
@@ -62,16 +62,12 @@
get() = {
super.transition(this)
setup {
- eachRun {
- tapl.setExpectedRotation(Surface.ROTATION_0)
- RemoveAllTasksButHomeRule.removeAllTasksButHome()
- this.setRotation(testSpec.startRotation)
- }
+ tapl.setExpectedRotation(Surface.ROTATION_0)
+ RemoveAllTasksButHomeRule.removeAllTasksButHome()
+ this.setRotation(testSpec.startRotation)
}
teardown {
- eachRun {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
tapl.goHome()
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt
index cd01f74..2c77668 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt
@@ -64,15 +64,11 @@
get() = {
super.transition(this)
setup {
- eachRun {
- removeAllTasksButHome()
- this.setRotation(testSpec.startRotation)
- }
+ removeAllTasksButHome()
+ this.setRotation(testSpec.startRotation)
}
teardown {
- eachRun {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
testApp.launchViaIntent(wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt
index b3db5b70..b70bdd7 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt
@@ -64,12 +64,10 @@
// Needs to run at the end of the setup, so after the setup defined in super.transition
setup {
- eachRun {
- device.sleep()
- wmHelper.StateSyncBuilder()
- .withoutTopVisibleAppWindows()
- .waitForAndVerify()
- }
+ device.sleep()
+ wmHelper.StateSyncBuilder()
+ .withoutTopVisibleAppWindows()
+ .waitForAndVerify()
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt
index 8c1d244..48602c4 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt
@@ -68,12 +68,10 @@
// Needs to run at the end of the setup, so after the setup defined in super.transition
setup {
- eachRun {
- device.sleep()
- wmHelper.StateSyncBuilder()
- .withoutTopVisibleAppWindows()
- .waitForAndVerify()
- }
+ device.sleep()
+ wmHelper.StateSyncBuilder()
+ .withoutTopVisibleAppWindows()
+ .waitForAndVerify()
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt
index caf2e2d..83350ea 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt
@@ -59,26 +59,22 @@
super.transition(this)
setup {
- eachRun {
- device.wakeUpAndGoToHomeScreen()
+ device.wakeUpAndGoToHomeScreen()
- // Launch an activity that is shown when the device is locked
- showWhenLockedApp.launchViaIntent(wmHelper)
- wmHelper.StateSyncBuilder()
- .withFullScreenApp(showWhenLockedApp)
- .waitForAndVerify()
+ // Launch an activity that is shown when the device is locked
+ showWhenLockedApp.launchViaIntent(wmHelper)
+ wmHelper.StateSyncBuilder()
+ .withFullScreenApp(showWhenLockedApp)
+ .waitForAndVerify()
- device.sleep()
- wmHelper.StateSyncBuilder()
- .withoutTopVisibleAppWindows()
- .waitForAndVerify()
- }
+ device.sleep()
+ wmHelper.StateSyncBuilder()
+ .withoutTopVisibleAppWindows()
+ .waitForAndVerify()
}
teardown {
- test {
- showWhenLockedApp.exit(wmHelper)
- }
+ showWhenLockedApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt
index ecc60b8..f574c9e 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockTransition.kt
@@ -39,17 +39,13 @@
override val transition: FlickerBuilder.() -> Unit = {
super.transition(this)
setup {
- eachRun {
- device.sleep()
- wmHelper.StateSyncBuilder()
- .withoutTopVisibleAppWindows()
- .waitForAndVerify()
- }
+ device.sleep()
+ wmHelper.StateSyncBuilder()
+ .withoutTopVisibleAppWindows()
+ .waitForAndVerify()
}
teardown {
- eachRun {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
testApp.launchViaIntent(wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt
index e744d44..24f2ae9 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt
@@ -51,13 +51,11 @@
super.transition(this)
setup {
- eachRun {
- // Close the app that posted the notification to trigger a cold start next time
- // it is open - can't just kill it because that would remove the notification.
- tapl.goHome()
- tapl.workspace.switchToOverview()
- tapl.overview.dismissAllTasks()
- }
+ // Close the app that posted the notification to trigger a cold start next time
+ // it is open - can't just kill it because that would remove the notification.
+ tapl.goHome()
+ tapl.workspace.switchToOverview()
+ tapl.overview.dismissAllTasks()
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt
index 4ea4243..77f28f6 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt
@@ -67,21 +67,17 @@
override val transition: FlickerBuilder.() -> Unit
get() = {
setup {
- test {
- device.wakeUpAndGoToHomeScreen()
- this.setRotation(testSpec.startRotation)
- }
- eachRun {
- testApp.launchViaIntent(wmHelper)
- wmHelper.StateSyncBuilder()
- .withFullScreenApp(testApp)
- .waitForAndVerify()
- testApp.postNotification(wmHelper)
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .waitForAndVerify()
- }
+ device.wakeUpAndGoToHomeScreen()
+ this.setRotation(testSpec.startRotation)
+ testApp.launchViaIntent(wmHelper)
+ wmHelper.StateSyncBuilder()
+ .withFullScreenApp(testApp)
+ .waitForAndVerify()
+ testApp.postNotification(wmHelper)
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
}
transitions {
@@ -125,9 +121,7 @@
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt
index a3dd0cb..bc86cdf 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt
@@ -69,27 +69,23 @@
get() = {
super.transition(this)
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- testApp.launchViaIntent(wmHelper)
+ tapl.setExpectedRotationCheckEnabled(false)
+ testApp.launchViaIntent(wmHelper)
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
+ // By default, launcher doesn't rotate on phones, but rotates on tablets
+ if (testSpec.isTablet) {
+ tapl.setExpectedRotation(testSpec.startRotation)
+ } else {
+ tapl.setExpectedRotation(Surface.ROTATION_0)
}
- eachRun {
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .waitForAndVerify()
- // By default, launcher doesn't rotate on phones, but rotates on tablets
- if (testSpec.isTablet) {
- tapl.setExpectedRotation(testSpec.startRotation)
- } else {
- tapl.setExpectedRotation(Surface.ROTATION_0)
- }
- tapl.workspace.switchToOverview()
- wmHelper.StateSyncBuilder()
- .withRecentsActivityVisible()
- .waitForAndVerify()
- this.setRotation(testSpec.startRotation)
- }
+ tapl.workspace.switchToOverview()
+ wmHelper.StateSyncBuilder()
+ .withRecentsActivityVisible()
+ .waitForAndVerify()
+ this.setRotation(testSpec.startRotation)
}
transitions {
tapl.overview.currentTask.open()
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt
index 8658c03..face7da 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppTransition.kt
@@ -36,16 +36,12 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotation(testSpec.startRotation)
- device.wakeUpAndGoToHomeScreen()
- this.setRotation(testSpec.startRotation)
- }
+ tapl.setExpectedRotation(testSpec.startRotation)
+ device.wakeUpAndGoToHomeScreen()
+ this.setRotation(testSpec.startRotation)
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt
index 4f69f01..8077398 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt
@@ -65,22 +65,16 @@
get() = {
super.transition(this)
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- testApp.launchViaIntent(wmHelper)
- }
- eachRun {
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .waitForAndVerify()
- this.setRotation(testSpec.startRotation)
- }
+ tapl.setExpectedRotationCheckEnabled(false)
+ testApp.launchViaIntent(wmHelper)
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .waitForAndVerify()
+ this.setRotation(testSpec.startRotation)
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
testApp.launchViaIntent(wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt
index 5f342a0..26f46cd 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt
@@ -65,14 +65,10 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- eachRun {
- testApp.launchViaIntent(wmHelper)
- }
+ testApp.launchViaIntent(wmHelper)
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
testApp.openNewTask(device, wmHelper)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt
index aaace59..a1df1df 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt
@@ -69,15 +69,11 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotation(testSpec.startRotation)
- }
- eachRun {
- testApp1.launchViaIntent(wmHelper)
- testApp2.launchViaIntent(wmHelper)
- startDisplayBounds = wmHelper.currentState.layerState
- .physicalDisplayBounds ?: error("Display not found")
- }
+ tapl.setExpectedRotation(testSpec.startRotation)
+ testApp1.launchViaIntent(wmHelper)
+ testApp2.launchViaIntent(wmHelper)
+ startDisplayBounds = wmHelper.currentState.layerState
+ .physicalDisplayBounds ?: error("Display not found")
}
transitions {
tapl.launchedAppState.quickSwitchToPreviousApp()
@@ -89,10 +85,8 @@
}
teardown {
- test {
- testApp1.exit(wmHelper)
- testApp2.exit(wmHelper)
- }
+ testApp1.exit(wmHelper)
+ testApp2.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt
index bb656e8..5ab9f14 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt
@@ -69,10 +69,8 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
tapl.setExpectedRotation(testSpec.startRotation)
- }
- eachRun {
+
testApp1.launchViaIntent(wmHelper)
testApp2.launchViaIntent(wmHelper)
tapl.launchedAppState.quickSwitchToPreviousApp()
@@ -83,7 +81,6 @@
.waitForAndVerify()
startDisplayBounds = wmHelper.currentState.layerState
.physicalDisplayBounds ?: error("Display not found")
- }
}
transitions {
tapl.launchedAppState.quickSwitchToPreviousAppSwipeLeft()
@@ -95,10 +92,8 @@
}
teardown {
- test {
- testApp1.exit(wmHelper)
- testApp2.exit(wmHelper)
- }
+ testApp1.exit(wmHelper)
+ testApp2.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt
index 13c9e2b..00e6023 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt
@@ -60,24 +60,19 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- test {
- tapl.setExpectedRotationCheckEnabled(false)
- }
- test {
- tapl.setExpectedRotation(testSpec.startRotation)
- }
+ tapl.setExpectedRotationCheckEnabled(false)
- eachRun {
- testApp.launchViaIntent(wmHelper)
- tapl.goHome()
- wmHelper.StateSyncBuilder()
- .withHomeActivityVisible()
- .withWindowSurfaceDisappeared(testApp)
- .waitForAndVerify()
+ tapl.setExpectedRotation(testSpec.startRotation)
- startDisplayBounds = wmHelper.currentState.layerState
- .physicalDisplayBounds ?: error("Display not found")
- }
+ testApp.launchViaIntent(wmHelper)
+ tapl.goHome()
+ wmHelper.StateSyncBuilder()
+ .withHomeActivityVisible()
+ .withWindowSurfaceDisappeared(testApp)
+ .waitForAndVerify()
+
+ startDisplayBounds = wmHelper.currentState.layerState
+ .physicalDisplayBounds ?: error("Display not found")
}
transitions {
tapl.workspace.quickSwitchToPreviousApp()
@@ -87,11 +82,8 @@
.withStatusBarVisible()
.waitForAndVerify()
}
-
teardown {
- eachRun {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt
index e6c1eac..d09507f 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt
@@ -80,9 +80,7 @@
get() = {
super.transition(this)
setup {
- test {
- testApp.launchViaIntent(wmHelper)
- }
+ testApp.launchViaIntent(wmHelper)
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/RotationTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/RotationTransition.kt
index 7e159d4..afe2ea6 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/RotationTransition.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/RotationTransition.kt
@@ -34,14 +34,10 @@
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
setup {
- eachRun {
- this.setRotation(testSpec.startRotation)
- }
+ this.setRotation(testSpec.startRotation)
}
teardown {
- test {
- testApp.exit(wmHelper)
- }
+ testApp.exit(wmHelper)
}
transitions {
this.setRotation(testSpec.endRotation)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
index 07c2130..16ad630 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
@@ -87,15 +87,13 @@
get() = {
super.transition(this)
setup {
- test {
- testApp.launchViaIntent(
- wmHelper,
- stringExtras = mapOf(
- ActivityOptions.EXTRA_STARVE_UI_THREAD
- to testSpec.starveUiThread.toString()
- )
+ testApp.launchViaIntent(
+ wmHelper,
+ stringExtras = mapOf(
+ ActivityOptions.EXTRA_STARVE_UI_THREAD
+ to testSpec.starveUiThread.toString()
)
- }
+ )
}
}