summaryrefslogtreecommitdiff
path: root/src_plugins
diff options
context:
space:
mode:
author Hyunyoung Song <hyunyoungs@google.com> 2020-08-24 16:38:02 -0700
committer Hyunyoung Song <hyunyoungs@google.com> 2020-08-28 23:58:23 -0700
commit5191fe9ba04f141a95692a242ec499a53f93b117 (patch)
tree373432209be22fef9c8c14f3cdcb939501f1d3cd /src_plugins
parent767470e75622f034f6b69977104a86b42b932a37 (diff)
SearchTarget/SearchTargetEvent API
Bug: 165869384 Bug: 161599758 TL;DR;; Also introduce some additional methods for - all apps start and stop - metrics logging Change-Id: I666ff5a27a5f8befdb0db483ebb07344a90e96bc
Diffstat (limited to 'src_plugins')
-rw-r--r--src_plugins/com/android/systemui/plugins/AllAppsSearchPlugin.java25
-rw-r--r--src_plugins/com/android/systemui/plugins/OWNERS4
-rw-r--r--src_plugins/com/android/systemui/plugins/shared/SearchTarget.java99
-rw-r--r--src_plugins/com/android/systemui/plugins/shared/SearchTargetEvent.java39
4 files changed, 157 insertions, 10 deletions
diff --git a/src_plugins/com/android/systemui/plugins/AllAppsSearchPlugin.java b/src_plugins/com/android/systemui/plugins/AllAppsSearchPlugin.java
index be20e2dbe6..9949678458 100644
--- a/src_plugins/com/android/systemui/plugins/AllAppsSearchPlugin.java
+++ b/src_plugins/com/android/systemui/plugins/AllAppsSearchPlugin.java
@@ -16,9 +16,9 @@
package com.android.systemui.plugins;
-import android.os.Bundle;
-
import com.android.systemui.plugins.annotations.ProvidesInterface;
+import com.android.systemui.plugins.shared.SearchTarget;
+import com.android.systemui.plugins.shared.SearchTargetEvent;
import java.util.List;
import java.util.function.Consumer;
@@ -29,15 +29,28 @@ import java.util.function.Consumer;
@ProvidesInterface(action = AllAppsSearchPlugin.ACTION, version = AllAppsSearchPlugin.VERSION)
public interface AllAppsSearchPlugin extends Plugin {
String ACTION = "com.android.systemui.action.PLUGIN_ALL_APPS_SEARCH_ACTIONS";
- int VERSION = 4;
+ int VERSION = 5;
+
+
+ /**
+ * Send signal when user enters all apps.
+ */
+ void startAllAppsSession();
/**
* Send signal when user starts typing.
*/
- void startedTyping();
+ void startedSearchSession();
/**
* Send over the query and get the search results.
*/
- void performSearch(String query, Consumer<List<Bundle>> results);
-}
+ void performSearch(String query, Consumer<List<SearchTarget>> results);
+
+ void onClick(boolean isTouch, SearchTargetEvent event);
+
+ /**
+ * Send signal when user exits all apps.
+ */
+ void endAllAppsSession();
+} \ No newline at end of file
diff --git a/src_plugins/com/android/systemui/plugins/OWNERS b/src_plugins/com/android/systemui/plugins/OWNERS
deleted file mode 100644
index 0514999392..0000000000
--- a/src_plugins/com/android/systemui/plugins/OWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-# When changing interface for this plugin OR when increasing version code, please add Alex
-# Only add other owners if Alex is not available
-per-file AllAppsSearchPlugin.java, globs = set noparent
-per-file AllAppsSearchPlugin.java = alexmang@google.com, hyunyoungs@google.com, sunnygoyal@google.com, twickham@google.com
diff --git a/src_plugins/com/android/systemui/plugins/shared/SearchTarget.java b/src_plugins/com/android/systemui/plugins/shared/SearchTarget.java
new file mode 100644
index 0000000000..913fc0ed7c
--- /dev/null
+++ b/src_plugins/com/android/systemui/plugins/shared/SearchTarget.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2020 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.systemui.plugins.shared;
+
+import android.content.pm.ShortcutInfo;
+import android.os.Bundle;
+
+import java.util.List;
+
+/**
+ * Used to return all apps search targets.
+ */
+public class SearchTarget implements Comparable<SearchTarget> {
+
+ public enum ViewType {
+ TOP_HIT(0),
+ HERO(1),
+ DETAIL(2),
+ ROW(3),
+ ROW_WITH_BUTTON(4),
+ SLICE(5);
+
+ private final int mId;
+ ViewType(int id) {
+ mId = id;
+ }
+
+ public int get() {
+ return mId;
+ }
+ }
+
+ public enum ItemType {
+ PLAY_RESULTS(0, "Play Store", ViewType.DETAIL),
+ SETTINGS_ROW(1, "Settings", ViewType.ROW),
+ SETTINGS_SLICE(2, "Settings", ViewType.SLICE),
+ APP(3, "", ViewType.TOP_HIT),
+ APP_HERO(4, "", ViewType.HERO);
+
+ private final int mId;
+ private final String mTitle;
+ private final ViewType mViewType;
+
+ ItemType(int id, String title, ViewType type) {
+ mId = id;
+ mTitle = title;
+ mViewType = type;
+ }
+
+ public ViewType getViewType() {
+ return mViewType;
+ }
+
+ public String getTitle() {
+ return mTitle;
+ }
+
+ public int getId() {
+ return mId;
+ }
+ }
+
+ public ItemType type;
+ public List<ShortcutInfo> shortcuts;
+ public Bundle bundle;
+ public float score;
+
+ /**
+ * Constructor to create the search target. Bundle is currently temporary to hold
+ * search target primitives that cannot be expressed as java primitive objects
+ * or AOSP native objects.
+ *
+ */
+ public SearchTarget(ItemType itemType, List<ShortcutInfo> shortcuts,
+ Bundle bundle, float score) {
+ this.type = itemType;
+ this.shortcuts = shortcuts;
+ this.bundle = bundle;
+ this.score = score;
+ }
+
+ @Override
+ public int compareTo(SearchTarget o) {
+ return Float.compare(o.score, score);
+ }
+}
diff --git a/src_plugins/com/android/systemui/plugins/shared/SearchTargetEvent.java b/src_plugins/com/android/systemui/plugins/shared/SearchTargetEvent.java
new file mode 100644
index 0000000000..00aacd0543
--- /dev/null
+++ b/src_plugins/com/android/systemui/plugins/shared/SearchTargetEvent.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2020 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.systemui.plugins.shared;
+
+import android.content.pm.ShortcutInfo;
+import android.os.Bundle;
+
+/**
+ * Event used for the feedback loop to the plugin. (and future aiai)
+ */
+public class SearchTargetEvent {
+ public SearchTarget.ItemType type;
+ public ShortcutInfo shortcut;
+ public Bundle bundle;
+ public float score;
+
+ public SearchTargetEvent(SearchTarget.ItemType itemType,
+ ShortcutInfo shortcut,
+ Bundle bundle,
+ float score) {
+ this.type = itemType;
+ this.shortcut = shortcut;
+ this.bundle = bundle;
+ this.score = score;
+ }
+}