Merge "Fix EnterSplitScreenTest app helper"

This commit is contained in:
TreeHugger Robot
2022-09-26 15:16:09 +00:00
committed by Android (Google) Code Review
7 changed files with 11 additions and 115 deletions

View File

@@ -114,14 +114,14 @@ fun FlickerTestParameter.splitAppLayerBoundsBecomesVisibleByDrag(
) {
assertLayers {
if (isShellTransitionsEnabled) {
this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component))
this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component), isOptional = true)
.then()
.isInvisible(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component))
.then()
// TODO(b/245472831): Verify the component should snap to divider.
.isVisible(component)
} else {
this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component))
this.notContains(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component), isOptional = true)
.then()
.isInvisible(SPLIT_SCREEN_DIVIDER_COMPONENT.or(component))
.then()

View File

@@ -21,8 +21,6 @@ import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
import android.view.WindowManagerPolicyConstants
import androidx.test.filters.RequiresDevice
import androidx.test.uiautomator.By
import androidx.test.uiautomator.Until
import com.android.server.wm.flicker.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.FlickerTestParameter
import com.android.server.wm.flicker.FlickerTestParameterFactory
@@ -73,12 +71,7 @@ class EnterSplitScreenByDragFromNotification(
setup {
// Send a notification
sendNotificationApp.launchViaIntent(wmHelper)
val sendNotification = device.wait(
Until.findObject(By.text("Send Notification")),
SplitScreenUtils.TIMEOUT_MS
)
sendNotification?.click() ?: error("Send notification button not found")
sendNotificationApp.postNotification(wmHelper)
tapl.goHome()
primaryApp.launchViaIntent(wmHelper)
}

View File

@@ -41,7 +41,7 @@ import com.android.server.wm.traces.parser.windowmanager.WindowManagerStateHelpe
import com.android.wm.shell.flicker.SYSTEM_UI_PACKAGE_NAME
internal object SplitScreenUtils {
internal const val TIMEOUT_MS = 3_000L
private const val TIMEOUT_MS = 3_000L
private const val DRAG_DURATION_MS = 1_000L
private const val NOTIFICATION_SCROLLER = "notification_stack_scroller"
private const val DIVIDER_BAR = "docked_divider_handle"
@@ -52,7 +52,7 @@ internal object SplitScreenUtils {
private val notificationScrollerSelector: BySelector
get() = By.res(SYSTEM_UI_PACKAGE_NAME, NOTIFICATION_SCROLLER)
private val notificationContentSelector: BySelector
get() = By.text("Notification content")
get() = By.text("Flicker Test Notification")
private val dividerBarSelector: BySelector
get() = By.res(SYSTEM_UI_PACKAGE_NAME, DIVIDER_BAR)
@@ -140,14 +140,14 @@ internal object SplitScreenUtils {
// Pull down the notifications
device.swipe(
displayBounds.centerX(), 5,
displayBounds.centerX(), displayBounds.bottom, 20 /* steps */
displayBounds.centerX(), displayBounds.bottom, 50 /* steps */
)
SystemClock.sleep(TIMEOUT_MS)
// Find the target notification
val notificationScroller = device.wait(
Until.findObject(notificationScrollerSelector), TIMEOUT_MS
)
) ?: error ("Unable to find view $notificationScrollerSelector")
var notificationContent = notificationScroller.findObject(notificationContentSelector)
while (notificationContent == null) {

View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2022 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/black">
<Button
android:id="@+id/button_send_notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Send Notification" />
</RelativeLayout>

View File

@@ -177,12 +177,6 @@ public class ActivityOptions {
}
}
public static class SendNotificationActivity {
public static final String LABEL = "SendNotificationActivity";
public static final ComponentName COMPONENT = new ComponentName(FLICKER_APP_PACKAGE,
FLICKER_APP_PACKAGE + ".SendNotificationActivity");
}
public static class Bubbles {
public static class LaunchBubble {
public static final String LABEL = "LaunchBubbleActivity";

View File

@@ -50,12 +50,12 @@ public class NotificationActivity extends Activity {
Intent resultIntent = new Intent(this, NotificationActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntentWithParentStack(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(0,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, NotificationActivity.class),
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
Notification.Builder builder = new Notification.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setWhen(System.currentTimeMillis())
.setContentTitle("Flicker Test Notification")
.setContentText("Flicker Test Notification")
// Set the intent that will fire when the user taps the notification

View File

@@ -1,61 +0,0 @@
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.wm.flicker.testapp;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class SendNotificationActivity extends Activity {
private NotificationManager mNotificationManager;
private String mChannelId = "Channel id";
private String mChannelName = "Channel name";
private NotificationChannel mChannel;
private int mNotifyId = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);
findViewById(R.id.button_send_notification).setOnClickListener(this::sendNotification);
mChannel = new NotificationChannel(mChannelId, mChannelName,
NotificationManager.IMPORTANCE_DEFAULT);
mNotificationManager = getSystemService(NotificationManager.class);
mNotificationManager.createNotificationChannel(mChannel);
}
private void sendNotification(View v) {
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, SendNotificationActivity.class),
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
Notification notification = new Notification.Builder(this, mChannelId)
.setContentTitle("Notification App")
.setContentText("Notification content")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.ic_message)
.setContentIntent(pendingIntent)
.build();
mNotificationManager.notify(mNotifyId, notification);
}
}