1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.server.wm.flicker.helpers
18 
19 import android.app.Instrumentation
20 import android.tools.device.apphelpers.StandardAppHelper
21 import android.tools.helpers.FIND_TIMEOUT
22 import android.tools.traces.component.ComponentNameMatcher
23 import android.tools.traces.parsers.WindowManagerStateHelper
24 import android.tools.traces.parsers.toFlickerComponent
25 import androidx.test.uiautomator.By
26 import androidx.test.uiautomator.Until
27 import com.android.server.wm.flicker.testapp.ActivityOptions
28 
29 class NotificationAppHelper
30 @JvmOverloads
31 constructor(
32     instr: Instrumentation,
33     launcherName: String = ActivityOptions.Notification.LABEL,
34     component: ComponentNameMatcher = ActivityOptions.Notification.COMPONENT.toFlickerComponent()
35 ) : StandardAppHelper(instr, launcherName, component) {
postNotificationnull36     fun postNotification(wmHelper: WindowManagerStateHelper) {
37         val button =
38             uiDevice.wait(Until.findObject(By.res(packageName, "post_notification")), FIND_TIMEOUT)
39 
40         requireNotNull(button) {
41             "Post notification button not found, this usually happens when the device " +
42                 "was left in an unknown state (e.g. in split screen)"
43         }
44         button.click()
45 
46         uiDevice.wait(Until.findObject(By.text("Flicker Test Notification")), FIND_TIMEOUT)
47             ?: error("Flicker Notification not found")
48         wmHelper.StateSyncBuilder().withAppTransitionIdle().waitForAndVerify()
49     }
50 }
51