Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05b1a38f authored by Robin Lee's avatar Robin Lee Committed by Android (Google) Code Review
Browse files

Merge changes from topic "cts_dream"

* changes:
  Create DreamManager System Server TestApi
  Add startDreamActivity request verification
  Make DreamService use an Activity
  Clean up dreamland
parents 522d1043 4467c53c
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -413,6 +413,12 @@ package android.app {
    field public static final String COLUMN_MEDIASTORE_URI = "mediastore_uri";
    field public static final String COLUMN_MEDIASTORE_URI = "mediastore_uri";
  }
  }


  public class DreamManager {
    method @RequiresPermission("android.permission.WRITE_DREAM_STATE") public void setActiveDream(@NonNull android.content.ComponentName);
    method @RequiresPermission("android.permission.WRITE_DREAM_STATE") public void startDream(@NonNull android.content.ComponentName);
    method @RequiresPermission("android.permission.WRITE_DREAM_STATE") public void stopDream();
  }

  public final class NotificationChannel implements android.os.Parcelable {
  public final class NotificationChannel implements android.os.Parcelable {
    method public int getOriginalImportance();
    method public int getOriginalImportance();
    method public boolean isBlockableSystem();
    method public boolean isBlockableSystem();
@@ -792,6 +798,7 @@ package android.content {
    field public static final String BUGREPORT_SERVICE = "bugreport";
    field public static final String BUGREPORT_SERVICE = "bugreport";
    field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
    field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
    field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
    field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
    field public static final String DREAM_SERVICE = "dream";
    field public static final String ETHERNET_SERVICE = "ethernet";
    field public static final String ETHERNET_SERVICE = "ethernet";
    field public static final String NETWORK_STACK_SERVICE = "network_stack";
    field public static final String NETWORK_STACK_SERVICE = "network_stack";
    field public static final String PERMISSION_SERVICE = "permission";
    field public static final String PERMISSION_SERVICE = "permission";
+102 −0
Original line number Original line Diff line number Diff line
/*
 * 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();
        }
    }
}
+8 −0
Original line number Original line Diff line number Diff line
@@ -98,6 +98,14 @@ interface IActivityTaskManager {
            in ProfilerInfo profilerInfo, in Bundle options, int userId);
            in ProfilerInfo profilerInfo, in Bundle options, int userId);
    boolean startNextMatchingActivity(in IBinder callingActivity,
    boolean startNextMatchingActivity(in IBinder callingActivity,
            in Intent intent, in Bundle options);
            in Intent intent, in Bundle options);

    /**
    *  The DreamActivity has to be started in a special way that does not involve the PackageParser.
    *  The DreamActivity is a framework component inserted in the dream application process. Hence,
    *  it is not declared in the application's manifest and cannot be parsed. startDreamActivity
    *  creates the activity and starts it without reaching out to the PackageParser.
    */
    boolean startDreamActivity(in Intent intent);
    int startActivityIntentSender(in IApplicationThread caller,
    int startActivityIntentSender(in IApplicationThread caller,
            in IIntentSender target, in IBinder whitelistToken, in Intent fillInIntent,
            in IIntentSender target, in IBinder whitelistToken, in Intent fillInIntent,
            in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode,
            in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode,
+7 −0
Original line number Original line Diff line number Diff line
@@ -1334,6 +1334,13 @@ public final class SystemServiceRegistry {
                        IBinder b = ServiceManager.getServiceOrThrow(Context.APP_INTEGRITY_SERVICE);
                        IBinder b = ServiceManager.getServiceOrThrow(Context.APP_INTEGRITY_SERVICE);
                        return new AppIntegrityManager(IAppIntegrityManager.Stub.asInterface(b));
                        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;
        sInitializing = true;
        try {
        try {
+11 −0
Original line number Original line Diff line number Diff line
@@ -5156,6 +5156,17 @@ public abstract class Context {
     */
     */
    public static final String LIGHTS_SERVICE = "lights";
    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
     * Determine whether the given permission is allowed for a particular
     * process and user ID running in the system.
     * process and user ID running in the system.
Loading