Check SearchManager presence and state for disable of SearchManager tests
BUG: 30075369
Change-Id: I9d3d27321472e174825962c80f34b742b073f2b0
diff --git a/tests/app/src/android/app/cts/SearchManagerTest.java b/tests/app/src/android/app/cts/SearchManagerTest.java
index 13a8073..b1b5623 100644
--- a/tests/app/src/android/app/cts/SearchManagerTest.java
+++ b/tests/app/src/android/app/cts/SearchManagerTest.java
@@ -16,11 +16,11 @@
package android.app.cts;
+import android.app.SearchManager;
import android.app.stubs.CTSActivityTestCaseBase;
import android.app.stubs.SearchManagerStubActivity;
import android.content.Context;
import android.content.Intent;
-import android.content.pm.PackageManager;
public class SearchManagerTest extends CTSActivityTestCaseBase {
@@ -33,7 +33,7 @@
}
public void testStopSearch() throws InterruptedException {
- if (isTelevision()) {
+ if (!hasGlobalSearchActivity()) {
return;
}
SearchManagerStubActivity.setCTSResult(this);
@@ -42,7 +42,7 @@
}
public void testSetOnDismissListener() throws InterruptedException {
- if (isTelevision()) {
+ if (!hasGlobalSearchActivity()) {
return;
}
SearchManagerStubActivity.setCTSResult(this);
@@ -51,7 +51,7 @@
}
public void testSetOnCancelListener() throws InterruptedException {
- if (isTelevision()) {
+ if (!hasGlobalSearchActivity()) {
return;
}
SearchManagerStubActivity.setCTSResult(this);
@@ -59,10 +59,18 @@
waitForResult();
}
- private boolean isTelevision() {
+ private boolean hasGlobalSearchActivity() {
Context context = getInstrumentation().getTargetContext();
- PackageManager pm = context.getPackageManager();
- return pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)
- || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
+ SearchManager searchManager =
+ (SearchManager) context.getSystemService(Context.SEARCH_SERVICE);
+ if (searchManager == null) {
+ return false;
+ }
+ try {
+ return searchManager.getGlobalSearchActivity() != null;
+ } catch (NullPointerException e) {
+ // Means there is no internal search service.
+ return false;
+ }
}
}