blob: fe13b8f26d78930780ed324fd61d73f5c5dc9e21 [file] [log] [blame]
Alan Viverette3da604b2020-06-10 18:34:39 +00001/*
2 * Copyright (C) 2020 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.app;
18
19import android.annotation.NonNull;
20import android.annotation.RequiresPermission;
21import android.annotation.SystemService;
22import android.annotation.TestApi;
23import android.annotation.UserHandleAware;
24import android.content.ComponentName;
25import android.content.Context;
26import android.os.RemoteException;
27import android.os.ServiceManager;
28import android.service.dreams.DreamService;
29import android.service.dreams.IDreamManager;
30
31/**
32 * @hide
33 */
34@SystemService(Context.DREAM_SERVICE)
35@TestApi
36public class DreamManager {
37 private final IDreamManager mService;
38 private final Context mContext;
39
40 /**
41 * @hide
42 */
43 public DreamManager(Context context) throws ServiceManager.ServiceNotFoundException {
44 mService = IDreamManager.Stub.asInterface(
45 ServiceManager.getServiceOrThrow(DreamService.DREAM_SERVICE));
46 mContext = context;
47 }
48
49 /**
50 * Starts dream service with name "name".
51 *
52 * <p>This is only used for testing the dream service APIs.
53 *
54 * @hide
55 */
56 @TestApi
57 @UserHandleAware
58 @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE)
59 public void startDream(@NonNull ComponentName name) {
60 try {
61 mService.testDream(mContext.getUserId(), name);
62 } catch (RemoteException e) {
63 e.rethrowFromSystemServer();
64 }
65 }
66
67 /**
68 * Stops the dream service on the device if one is started.
69 *
70 * <p> This is only used for testing the dream service APIs.
71 *
72 * @hide
73 */
74 @TestApi
75 @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE)
76 public void stopDream() {
77 try {
78 mService.awaken();
79 } catch (RemoteException e) {
80 e.rethrowFromSystemServer();
81 }
82 }
83
84 /**
85 * Sets the active dream on the device to be "dreamComponent".
86 *
87 * <p>This is only used for testing the dream service APIs.
88 *
89 * @hide
90 */
91 @TestApi
92 @UserHandleAware
93 @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE)
94 public void setActiveDream(@NonNull ComponentName dreamComponent) {
95 ComponentName[] dreams = {dreamComponent};
96 try {
97 mService.setDreamComponentsForUser(mContext.getUserId(), dreams);
98 } catch (RemoteException e) {
99 e.rethrowFromSystemServer();
100 }
101 }
102}