From d0b9c59839601897a301117e7e4875eadd231205 Mon Sep 17 00:00:00 2001 From: Brian Isganitis Date: Fri, 11 Aug 2023 17:43:28 -0400 Subject: [PATCH] Add TAPL APIs for search web suggestions. Design doc: go/toasty-taskbar-tapl Test: Compiles Bug: 295366997 Flag: not needed Change-Id: I4f11a9a0c99a736a499ab498b05b20996e1dc59b --- tests/AndroidManifest-common.xml | 9 +++ .../launcher3/tapl/SearchResultFromQsb.java | 18 +++--- .../tapl/SearchResultFromTaskbarQsb.java | 10 ++++ .../launcher3/tapl/SearchWebSuggestion.java | 57 +++++++++++++++++++ .../tapl/TaskbarSearchWebSuggestion.java | 45 +++++++++++++++ 5 files changed, 131 insertions(+), 8 deletions(-) create mode 100644 tests/tapl/com/android/launcher3/tapl/SearchWebSuggestion.java create mode 100644 tests/tapl/com/android/launcher3/tapl/TaskbarSearchWebSuggestion.java diff --git a/tests/AndroidManifest-common.xml b/tests/AndroidManifest-common.xml index bb61fbe440..ee151bbeb4 100644 --- a/tests/AndroidManifest-common.xml +++ b/tests/AndroidManifest-common.xml @@ -345,6 +345,15 @@ + + + + + + goldenGateResults = + public SearchWebSuggestion findWebSuggestion(String text) { + ArrayList webSuggestions = new ArrayList<>(mLauncher.waitForObjectsInContainer( mLauncher.waitForSystemLauncherObject(SEARCH_CONTAINER_RES_ID), By.clazz(TextView.class))); - boolean found = false; - for(UiObject2 uiObject: goldenGateResults) { + for (UiObject2 uiObject: webSuggestions) { String currentString = uiObject.getText(); if (currentString.equals(text)) { - found = true; + return createWebSuggestion(uiObject); } } - if (!found) { - throw new IllegalStateException("Web suggestion title: " + text + " not found"); - } + mLauncher.fail("Web suggestion title: " + text + " not found"); + return null; + } + + protected SearchWebSuggestion createWebSuggestion(UiObject2 webSuggestion) { + return new SearchWebSuggestion(mLauncher, webSuggestion); } /** Find the total amount of views being displayed and return the size */ diff --git a/tests/tapl/com/android/launcher3/tapl/SearchResultFromTaskbarQsb.java b/tests/tapl/com/android/launcher3/tapl/SearchResultFromTaskbarQsb.java index c267c9e5b3..6c6ab05ac3 100644 --- a/tests/tapl/com/android/launcher3/tapl/SearchResultFromTaskbarQsb.java +++ b/tests/tapl/com/android/launcher3/tapl/SearchResultFromTaskbarQsb.java @@ -35,4 +35,14 @@ public class SearchResultFromTaskbarQsb extends SearchResultFromQsb { protected TaskbarAppIcon createAppIcon(UiObject2 icon) { return new TaskbarAppIcon(mLauncher, icon); } + + @Override + public TaskbarSearchWebSuggestion findWebSuggestion(String text) { + return (TaskbarSearchWebSuggestion) super.findWebSuggestion(text); + } + + @Override + protected TaskbarSearchWebSuggestion createWebSuggestion(UiObject2 webSuggestion) { + return new TaskbarSearchWebSuggestion(mLauncher, webSuggestion); + } } diff --git a/tests/tapl/com/android/launcher3/tapl/SearchWebSuggestion.java b/tests/tapl/com/android/launcher3/tapl/SearchWebSuggestion.java new file mode 100644 index 0000000000..e4dec98a71 --- /dev/null +++ b/tests/tapl/com/android/launcher3/tapl/SearchWebSuggestion.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2023 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.launcher3.tapl; + +import androidx.test.uiautomator.UiObject2; + +import com.android.launcher3.testing.shared.TestProtocol; + +import java.util.regex.Pattern; + +/** + * Operations on a search web suggestion from a qsb. + */ +public class SearchWebSuggestion extends Launchable { + + private static final Pattern LONG_CLICK_EVENT = Pattern.compile("onAllAppsItemLongClick"); + + SearchWebSuggestion(LauncherInstrumentation launcher, UiObject2 object) { + super(launcher, object); + } + + @Override + protected void expectActivityStartEvents() { + } + + @Override + protected String launchableType() { + return "search web suggestion"; + } + + @Override + protected void waitForLongPressConfirmation() { + mLauncher.waitForLauncherObject("popup_container"); + } + + @Override + protected void addExpectedEventsForLongClick() { + mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, getLongClickEvent()); + } + + protected Pattern getLongClickEvent() { + return LONG_CLICK_EVENT; + } +} diff --git a/tests/tapl/com/android/launcher3/tapl/TaskbarSearchWebSuggestion.java b/tests/tapl/com/android/launcher3/tapl/TaskbarSearchWebSuggestion.java new file mode 100644 index 0000000000..cd8ce42f49 --- /dev/null +++ b/tests/tapl/com/android/launcher3/tapl/TaskbarSearchWebSuggestion.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2023 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.launcher3.tapl; + +import androidx.test.uiautomator.UiObject2; + +import java.util.regex.Pattern; + +/** + * Operations on a search web suggestion from the Taskbar qsb. + */ +public class TaskbarSearchWebSuggestion extends SearchWebSuggestion implements + SplitscreenDragSource { + + private static final Pattern LONG_CLICK_EVENT = Pattern.compile("onTaskbarItemLongClick"); + + TaskbarSearchWebSuggestion(LauncherInstrumentation launcher, + UiObject2 object) { + super(launcher, object); + } + + @Override + protected Pattern getLongClickEvent() { + return LONG_CLICK_EVENT; + } + + /** This method requires public access, however should not be called in tests. */ + @Override + public Launchable getLaunchable() { + return this; + } +}