Merge "Add SplitScreenUtils#enterSplitViaIntent for FlickerTests" into udc-qpr-dev

This commit is contained in:
TreeHugger Robot
2023-06-21 15:24:50 +00:00
committed by Android (Google) Code Review
5 changed files with 33 additions and 2 deletions

View File

@@ -39,6 +39,7 @@ import com.android.server.wm.flicker.helpers.NonResizeableAppHelper
import com.android.server.wm.flicker.helpers.NotificationAppHelper
import com.android.server.wm.flicker.helpers.SimpleAppHelper
import com.android.server.wm.flicker.testapp.ActivityOptions
import com.android.server.wm.flicker.testapp.ActivityOptions.SplitScreen.Primary
import com.android.wm.shell.flicker.LAUNCHER_UI_PACKAGE_NAME
import com.android.wm.shell.flicker.SYSTEM_UI_PACKAGE_NAME
import org.junit.Assert.assertNotNull
@@ -112,6 +113,17 @@ internal object SplitScreenUtils {
waitForSplitComplete(wmHelper, primaryApp, secondaryApp)
}
fun enterSplitViaIntent(
wmHelper: WindowManagerStateHelper,
primaryApp: StandardAppHelper,
secondaryApp: StandardAppHelper
) {
val stringExtras = mapOf(Primary.EXTRA_LAUNCH_ADJACENT to "true")
primaryApp.launchViaIntent(wmHelper, null, null,
stringExtras)
waitForSplitComplete(wmHelper, primaryApp, secondaryApp)
}
fun splitFromOverview(tapl: LauncherInstrumentation, device: UiDevice) {
// Note: The initial split position in landscape is different between tablet and phone.
// In landscape, tablet will let the first app split to right side, and phone will

View File

@@ -52,7 +52,6 @@ class UnlockKeyguardToSplitScreen(override val flicker: LegacyFlickerTest) :
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit
get() = {
defaultSetup(this)
defaultTeardown(this)
thisTransition(this)
}

View File

@@ -37,7 +37,7 @@ open class UnlockKeyguardToSplitScreenBenchmark(override val flicker: LegacyFlic
SplitScreenBase(flicker) {
protected val thisTransition: FlickerBuilder.() -> Unit
get() = {
setup { SplitScreenUtils.enterSplit(wmHelper, tapl, device, primaryApp, secondaryApp) }
setup { SplitScreenUtils.enterSplitViaIntent(wmHelper, primaryApp, secondaryApp) }
transitions {
device.sleep()
wmHelper.StateSyncBuilder().withAppTransitionIdle().waitForAndVerify()

View File

@@ -186,6 +186,8 @@ public class ActivityOptions {
public static final String LABEL = "SplitScreenPrimaryActivity";
public static final ComponentName COMPONENT = new ComponentName(FLICKER_APP_PACKAGE,
FLICKER_APP_PACKAGE + ".SplitScreenActivity");
public static final String EXTRA_LAUNCH_ADJACENT = "launch_adjacent";
}
public static class Secondary {

View File

@@ -16,9 +16,14 @@
package com.android.server.wm.flicker.testapp;
import static com.android.server.wm.flicker.testapp.ActivityOptions.SplitScreen.Primary.EXTRA_LAUNCH_ADJACENT;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.Nullable;
public class SplitScreenActivity extends Activity {
@Override
@@ -26,4 +31,17 @@ public class SplitScreenActivity extends Activity {
super.onCreate(icicle);
setContentView(R.layout.activity_splitscreen);
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
final boolean startSecondaryActivity = getIntent().hasExtra(EXTRA_LAUNCH_ADJACENT);
if (startSecondaryActivity) {
final Intent intent = new Intent(this, SplitScreenSecondaryActivity.class);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);
}
}
}