Create DreamManager System Server TestApi am: 641e2e6361 am: dd66516fe9
Change-Id: I2cc7d418a48fd906ffacdcc4c8d7547455b9c87f
This commit is contained in:
102
core/java/android/app/DreamManager.java
Normal file
102
core/java/android/app/DreamManager.java
Normal file
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
* 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 android.app;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.RequiresPermission;
|
||||
import android.annotation.SystemService;
|
||||
import android.annotation.TestApi;
|
||||
import android.annotation.UserHandleAware;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.service.dreams.DreamService;
|
||||
import android.service.dreams.IDreamManager;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@SystemService(Context.DREAM_SERVICE)
|
||||
@TestApi
|
||||
public class DreamManager {
|
||||
private final IDreamManager mService;
|
||||
private final Context mContext;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public DreamManager(Context context) throws ServiceManager.ServiceNotFoundException {
|
||||
mService = IDreamManager.Stub.asInterface(
|
||||
ServiceManager.getServiceOrThrow(DreamService.DREAM_SERVICE));
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts dream service with name "name".
|
||||
*
|
||||
* <p>This is only used for testing the dream service APIs.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
@UserHandleAware
|
||||
@RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE)
|
||||
public void startDream(@NonNull ComponentName name) {
|
||||
try {
|
||||
mService.testDream(mContext.getUserId(), name);
|
||||
} catch (RemoteException e) {
|
||||
e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops the dream service on the device if one is started.
|
||||
*
|
||||
* <p> This is only used for testing the dream service APIs.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
@RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE)
|
||||
public void stopDream() {
|
||||
try {
|
||||
mService.awaken();
|
||||
} catch (RemoteException e) {
|
||||
e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the active dream on the device to be "dreamComponent".
|
||||
*
|
||||
* <p>This is only used for testing the dream service APIs.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
@UserHandleAware
|
||||
@RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE)
|
||||
public void setActiveDream(@NonNull ComponentName dreamComponent) {
|
||||
ComponentName[] dreams = {dreamComponent};
|
||||
try {
|
||||
mService.setDreamComponentsForUser(mContext.getUserId(), dreams);
|
||||
} catch (RemoteException e) {
|
||||
e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1334,6 +1334,13 @@ public final class SystemServiceRegistry {
|
||||
IBinder b = ServiceManager.getServiceOrThrow(Context.APP_INTEGRITY_SERVICE);
|
||||
return new AppIntegrityManager(IAppIntegrityManager.Stub.asInterface(b));
|
||||
}});
|
||||
registerService(Context.DREAM_SERVICE, DreamManager.class,
|
||||
new CachedServiceFetcher<DreamManager>() {
|
||||
@Override
|
||||
public DreamManager createService(ContextImpl ctx)
|
||||
throws ServiceNotFoundException {
|
||||
return new DreamManager(ctx);
|
||||
}});
|
||||
|
||||
sInitializing = true;
|
||||
try {
|
||||
|
||||
@@ -5156,6 +5156,17 @@ public abstract class Context {
|
||||
*/
|
||||
public static final String LIGHTS_SERVICE = "lights";
|
||||
|
||||
/**
|
||||
* Use with {@link #getSystemService(String)} to retrieve a
|
||||
* {@link android.app.DreamManager} for controlling Dream states.
|
||||
*
|
||||
* @see #getSystemService(String)
|
||||
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public static final String DREAM_SERVICE = "dream";
|
||||
|
||||
/**
|
||||
* Determine whether the given permission is allowed for a particular
|
||||
* process and user ID running in the system.
|
||||
|
||||
@@ -31,12 +31,14 @@ interface IDreamManager {
|
||||
void setDreamComponents(in ComponentName[] componentNames);
|
||||
@UnsupportedAppUsage
|
||||
ComponentName[] getDreamComponents();
|
||||
ComponentName getDefaultDreamComponent();
|
||||
void testDream(in ComponentName componentName);
|
||||
ComponentName getDefaultDreamComponentForUser(int userId);
|
||||
void testDream(int userId, in ComponentName componentName);
|
||||
@UnsupportedAppUsage
|
||||
boolean isDreaming();
|
||||
void finishSelf(in IBinder token, boolean immediate);
|
||||
void startDozing(in IBinder token, int screenState, int screenBrightness);
|
||||
void stopDozing(in IBinder token);
|
||||
void forceAmbientDisplayEnabled(boolean enabled);
|
||||
ComponentName[] getDreamComponentsForUser(int userId);
|
||||
void setDreamComponentsForUser(int userId, in ComponentName[] componentNames);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user