summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Prince Donkor <princedonkor@google.com> 2024-03-15 13:35:07 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-03-15 13:35:07 +0000
commit16619e7acacee5daca271e8f6f39af64e819a22a (patch)
treeb751bc1ef70ec62a6096c2e59cb3815a7b41680c
parent82bb8686edae4f8d17d537b0f7f6327ec6e8e2c8 (diff)
parentceb4ae4c854382c44744aa19fee6ab00fa7518d6 (diff)
Merge "Adding Dream Category API" into main
-rw-r--r--core/api/test-current.txt1
-rw-r--r--core/java/android/service/dreams/DreamService.java55
-rw-r--r--core/res/res/values/attrs.xml8
-rw-r--r--core/res/res/values/public-staging.xml2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java2
-rw-r--r--packages/SystemUI/res/xml/home_controls_dream_metadata.xml1
-rw-r--r--services/tests/dreamservicetests/res/xml/test_dream_metadata.xml4
-rw-r--r--services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java2
8 files changed, 70 insertions, 5 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index c1af719e91c9..0a26490b772f 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -3065,6 +3065,7 @@ package android.service.dreams {
}
public static final class DreamService.DreamMetadata {
+ field @FlaggedApi("android.service.controls.flags.home_panel_dream") @NonNull public final int dreamCategory;
field @Nullable public final android.graphics.drawable.Drawable previewImage;
field @Nullable public final android.content.ComponentName settingsActivity;
field @NonNull public final boolean showComplications;
diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java
index 2d657c2813a5..4060b242292a 100644
--- a/core/java/android/service/dreams/DreamService.java
+++ b/core/java/android/service/dreams/DreamService.java
@@ -18,7 +18,9 @@ package android.service.dreams;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import android.annotation.FlaggedApi;
import android.annotation.IdRes;
+import android.annotation.IntDef;
import android.annotation.LayoutRes;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -47,6 +49,7 @@ import android.os.Looper;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.service.controls.flags.Flags;
import android.util.AttributeSet;
import android.util.Log;
import android.util.MathUtils;
@@ -76,6 +79,8 @@ import org.xmlpull.v1.XmlPullParserException;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.function.Consumer;
/**
@@ -217,6 +222,33 @@ public class DreamService extends Service implements Window.Callback {
*/
public static final boolean DEFAULT_SHOW_COMPLICATIONS = false;
+ /**
+ * The default value for dream category
+ * @hide
+ */
+ public static final int DREAM_CATEGORY_DEFAULT = 0;
+
+ /**
+ * Dream category for Low Light Dream
+ * @hide
+ */
+ public static final int DREAM_CATEGORY_LOW_LIGHT = 1 << 0;
+
+ /**
+ * Dream category for Home Panel Dream
+ * @hide
+ */
+ public static final int DREAM_CATEGORY_HOME_PANEL = 1 << 1;
+
+ /** @hide */
+ @IntDef(flag = true, prefix = {"DREAM_CATEGORY"}, value = {
+ DREAM_CATEGORY_DEFAULT,
+ DREAM_CATEGORY_LOW_LIGHT,
+ DREAM_CATEGORY_HOME_PANEL
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ @interface DreamCategory {}
+
private final IDreamManager mDreamManager;
private final Handler mHandler = new Handler(Looper.getMainLooper());
private IBinder mDreamToken;
@@ -1122,12 +1154,15 @@ public class DreamService extends Service implements Window.Callback {
try (TypedArray rawMetadata = readMetadata(pm, serviceInfo)) {
if (rawMetadata == null) return null;
return new DreamMetadata(
- convertToComponentName(rawMetadata.getString(
+ convertToComponentName(
+ rawMetadata.getString(
com.android.internal.R.styleable.Dream_settingsActivity), serviceInfo),
rawMetadata.getDrawable(
com.android.internal.R.styleable.Dream_previewImage),
rawMetadata.getBoolean(R.styleable.Dream_showClockAndComplications,
- DEFAULT_SHOW_COMPLICATIONS));
+ DEFAULT_SHOW_COMPLICATIONS),
+ rawMetadata.getInt(R.styleable.Dream_dreamCategory, DREAM_CATEGORY_DEFAULT)
+ );
}
}
@@ -1543,11 +1578,23 @@ public class DreamService extends Service implements Window.Callback {
@NonNull
public final boolean showComplications;
- DreamMetadata(ComponentName settingsActivity, Drawable previewImage,
- boolean showComplications) {
+ @NonNull
+ @FlaggedApi(Flags.FLAG_HOME_PANEL_DREAM)
+ public final int dreamCategory;
+
+ DreamMetadata(
+ ComponentName settingsActivity,
+ Drawable previewImage,
+ boolean showComplications,
+ int dreamCategory) {
this.settingsActivity = settingsActivity;
this.previewImage = previewImage;
this.showComplications = showComplications;
+ if (Flags.homePanelDream()) {
+ this.dreamCategory = dreamCategory;
+ } else {
+ this.dreamCategory = DREAM_CATEGORY_DEFAULT;
+ }
}
}
}
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 48cf09a84e57..c77ee4326471 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -8988,6 +8988,14 @@
<!-- Whether to show clock and other complications such as weather in the overlay. Default
to true. Note that the overlay on dreams is currently only supported on tablets. -->
<attr name="showClockAndComplications" format="boolean" />
+
+ <!-- Dream Category to determine the type of dream. Default to default.
+ @hide -->
+ <attr name="dreamCategory" format="integer">
+ <flag name="none" value="0x0" />
+ <flag name="low_light" value="0x1" />
+ <flag name="home_panel" value="0x2" />
+ </attr>
</declare-styleable>
<!-- Use <code>trust-agent</code> as the root tag of the XML resource that
diff --git a/core/res/res/values/public-staging.xml b/core/res/res/values/public-staging.xml
index 3303c076c090..4be8c1bb4627 100644
--- a/core/res/res/values/public-staging.xml
+++ b/core/res/res/values/public-staging.xml
@@ -167,6 +167,8 @@
<public name="shiftDrawingOffsetForStartOverhang" />
<!-- @FlaggedApi("android.view.flags.toolkit_set_frame_rate_read_only") -->
<public name="windowIsFrameRatePowerSavingsBalanced"/>
+ <!-- @FlaggedApi("android.service.controls.flags.Flags.FLAG_HOME_PANEL_DREAM") -->
+ <public name="dreamCategory"/>
</staging-public-group>
<staging-public-group type="id" first-id="0x01bc0000">
diff --git a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java
index a617bf3278d6..fa27db9a427a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java
+++ b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java
@@ -60,6 +60,7 @@ public class DreamBackend {
public CharSequence description;
public Drawable previewImage;
public boolean supportsComplications = false;
+ public int dreamCategory;
@Override
public String toString() {
@@ -207,6 +208,7 @@ public class DreamBackend {
dreamInfo.settingsComponentName = dreamMetadata.settingsActivity;
dreamInfo.previewImage = dreamMetadata.previewImage;
dreamInfo.supportsComplications = dreamMetadata.showComplications;
+ dreamInfo.dreamCategory = dreamMetadata.dreamCategory;
}
dreamInfos.add(dreamInfo);
}
diff --git a/packages/SystemUI/res/xml/home_controls_dream_metadata.xml b/packages/SystemUI/res/xml/home_controls_dream_metadata.xml
index eb7c79e24b04..69bd9a477f05 100644
--- a/packages/SystemUI/res/xml/home_controls_dream_metadata.xml
+++ b/packages/SystemUI/res/xml/home_controls_dream_metadata.xml
@@ -16,4 +16,5 @@
<dream xmlns:android="http://schemas.android.com/apk/res/android"
android:showClockAndComplications="false"
android:previewImage="@drawable/homecontrols_sq"
+ android:dreamCategory="home_panel"
/> \ No newline at end of file
diff --git a/services/tests/dreamservicetests/res/xml/test_dream_metadata.xml b/services/tests/dreamservicetests/res/xml/test_dream_metadata.xml
index 9211ec1a2f14..6e7d9ad00e34 100644
--- a/services/tests/dreamservicetests/res/xml/test_dream_metadata.xml
+++ b/services/tests/dreamservicetests/res/xml/test_dream_metadata.xml
@@ -17,4 +17,6 @@
<dream xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity=
"com.android.frameworks.dreamservicetests/.TestDreamSettingsActivity"
- android:showClockAndComplications="false" />
+ android:showClockAndComplications="false"
+ android:dreamCategory="home_panel"
+ />
diff --git a/services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java b/services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java
index d231e40f5d0d..293ab7baa355 100644
--- a/services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java
+++ b/services/tests/dreamservicetests/src/com/android/server/dreams/DreamServiceTest.java
@@ -48,6 +48,7 @@ public class DreamServiceTest {
assertThat(metadata.settingsActivity).isEqualTo(
ComponentName.unflattenFromString(testSettingsActivity));
assertFalse(metadata.showComplications);
+ assertThat(metadata.dreamCategory).isEqualTo(DreamService.DREAM_CATEGORY_HOME_PANEL);
}
@Test
@@ -58,6 +59,7 @@ public class DreamServiceTest {
final DreamService.DreamMetadata metadata = getDreamMetadata(testDreamClassName);
assertThat(metadata.settingsActivity).isNull();
+ assertThat(metadata.dreamCategory).isEqualTo(DreamService.DREAM_CATEGORY_DEFAULT);
}
private DreamService.DreamMetadata getDreamMetadata(String dreamClassName)