summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/test-current.txt1
-rw-r--r--core/java/android/service/dreams/DreamOverlayService.java11
-rw-r--r--core/java/android/service/dreams/DreamService.java45
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayServiceTest.java9
4 files changed, 55 insertions, 11 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index bfc9c352848b..3c0ea10a2a50 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -2347,6 +2347,7 @@ package android.service.dreams {
public abstract class DreamOverlayService extends android.app.Service {
ctor public DreamOverlayService();
+ method @Nullable public final CharSequence getDreamLabel();
method public final boolean isPreviewMode();
method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
method public abstract void onStartDream(@NonNull android.view.WindowManager.LayoutParams);
diff --git a/core/java/android/service/dreams/DreamOverlayService.java b/core/java/android/service/dreams/DreamOverlayService.java
index 540cfce1c5f5..bfc3b8b39385 100644
--- a/core/java/android/service/dreams/DreamOverlayService.java
+++ b/core/java/android/service/dreams/DreamOverlayService.java
@@ -37,6 +37,8 @@ public abstract class DreamOverlayService extends Service {
private static final boolean DEBUG = false;
private boolean mShowComplications;
private boolean mIsPreviewMode;
+ @Nullable
+ private CharSequence mDreamLabel;
private IDreamOverlay mDreamOverlay = new IDreamOverlay.Stub() {
@Override
@@ -58,6 +60,7 @@ public abstract class DreamOverlayService extends Service {
mShowComplications = intent.getBooleanExtra(DreamService.EXTRA_SHOW_COMPLICATIONS,
DreamService.DEFAULT_SHOW_COMPLICATIONS);
mIsPreviewMode = intent.getBooleanExtra(DreamService.EXTRA_IS_PREVIEW, false);
+ mDreamLabel = intent.getCharSequenceExtra(DreamService.EXTRA_DREAM_LABEL);
return mDreamOverlay.asBinder();
}
@@ -93,4 +96,12 @@ public abstract class DreamOverlayService extends Service {
public final boolean isPreviewMode() {
return mIsPreviewMode;
}
+
+ /**
+ * Returns the user-facing label of the currently running dream.
+ */
+ @Nullable
+ public final CharSequence getDreamLabel() {
+ return mDreamLabel;
+ }
}
diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java
index 47dc7e0c6a2e..db622d39b785 100644
--- a/core/java/android/service/dreams/DreamService.java
+++ b/core/java/android/service/dreams/DreamService.java
@@ -222,6 +222,12 @@ public class DreamService extends Service implements Window.Callback {
public static final String EXTRA_IS_PREVIEW = "android.service.dreams.IS_PREVIEW";
/**
+ * The user-facing label of the current dream service.
+ * @hide
+ */
+ public static final String EXTRA_DREAM_LABEL = "android.service.dreams.DREAM_LABEL";
+
+ /**
* The default value for whether to show complications on the overlay.
* @hide
*/
@@ -269,10 +275,13 @@ public class DreamService extends Service implements Window.Callback {
return;
}
+ final ServiceInfo serviceInfo = fetchServiceInfo(context, dreamService);
+
final Intent overlayIntent = new Intent();
overlayIntent.setComponent(overlayService);
overlayIntent.putExtra(EXTRA_SHOW_COMPLICATIONS,
- fetchShouldShowComplications(context, dreamService));
+ fetchShouldShowComplications(context, serviceInfo));
+ overlayIntent.putExtra(EXTRA_DREAM_LABEL, fetchDreamLabel(context, serviceInfo));
overlayIntent.putExtra(EXTRA_IS_PREVIEW, isPreviewMode);
context.bindService(overlayIntent,
@@ -1121,7 +1130,10 @@ public class DreamService extends Service implements Window.Callback {
* @hide
*/
@Nullable
- public static DreamMetadata getDreamMetadata(Context context, ServiceInfo serviceInfo) {
+ public static DreamMetadata getDreamMetadata(Context context,
+ @Nullable ServiceInfo serviceInfo) {
+ if (serviceInfo == null) return null;
+
final PackageManager pm = context.getPackageManager();
final TypedArray rawMetadata = readMetadata(pm, serviceInfo);
@@ -1360,22 +1372,33 @@ public class DreamService extends Service implements Window.Callback {
* {@link DreamService#DEFAULT_SHOW_COMPLICATIONS}.
*/
private static boolean fetchShouldShowComplications(Context context,
- ComponentName componentName) {
+ @Nullable ServiceInfo serviceInfo) {
+ final DreamMetadata metadata = getDreamMetadata(context, serviceInfo);
+ if (metadata != null) {
+ return metadata.showComplications;
+ }
+ return DEFAULT_SHOW_COMPLICATIONS;
+ }
+
+ @Nullable
+ private static CharSequence fetchDreamLabel(Context context,
+ @Nullable ServiceInfo serviceInfo) {
+ if (serviceInfo == null) return null;
+ final PackageManager pm = context.getPackageManager();
+ return serviceInfo.loadLabel(pm);
+ }
+
+ @Nullable
+ private static ServiceInfo fetchServiceInfo(Context context, ComponentName componentName) {
final PackageManager pm = context.getPackageManager();
try {
- final ServiceInfo si = pm.getServiceInfo(componentName,
+ return pm.getServiceInfo(componentName,
PackageManager.ComponentInfoFlags.of(PackageManager.GET_META_DATA));
- final DreamMetadata metadata = getDreamMetadata(context, si);
-
- if (metadata != null) {
- return metadata.showComplications;
- }
} catch (PackageManager.NameNotFoundException e) {
if (DEBUG) Log.w(TAG, "cannot find component " + componentName.flattenToShortString());
}
-
- return DEFAULT_SHOW_COMPLICATIONS;
+ return null;
}
@Override
diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayServiceTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayServiceTest.java
index a7a7c2e03d65..15aaf5fa8e42 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayServiceTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayServiceTest.java
@@ -179,6 +179,15 @@ public class DreamOverlayServiceTest extends SysuiTestCase {
}
@Test
+ public void testDreamLabel() {
+ final Intent intent = new Intent();
+ intent.putExtra(DreamService.EXTRA_DREAM_LABEL, "TestDream");
+ mService.onBind(intent);
+
+ assertThat(mService.getDreamLabel()).isEqualTo("TestDream");
+ }
+
+ @Test
public void testDestroy() {
mService.onDestroy();
mMainExecutor.runAllReady();