summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorWale Ogunwale <ogunwale@google.com>2018-05-03 15:52:51 -0700
committerWale Ogunwale <ogunwale@google.com>2018-06-15 08:43:22 -0700
commit6767eaee94328cb7155a7f218d0891b0ca22872b (patch)
tree839ba09b071ea5095e98026b83749de184424d6c /core/java
parentf276a6ff0cdd83d676c7ce47547f4b35186e0707 (diff)
Split internal interface activities from current AM interface (3/n)
3rd step in unifying the window hierarchy that is currently split within AM and WM packages. We separate the the internal interface used to communicate within system server dealing with activities and their containers (tasks, stack, display) from the rest of AM internal interface. Test: Existing tests pass Test: go/wm-smoke-auto Bug: 80414790 Change-Id: Idad77721c1fe10621b9be5dced42a0a11f0183e5
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/app/ActivityManagerInternal.java203
-rw-r--r--core/java/android/app/ActivityTaskManagerInternal.java241
2 files changed, 241 insertions, 203 deletions
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index 1d5f49a879d5..34d6ec82a161 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -40,61 +40,6 @@ import java.util.List;
*/
public abstract class ActivityManagerInternal {
- /**
- * Type for {@link #notifyAppTransitionStarting}: The transition was started because we drew
- * the splash screen.
- */
- public static final int APP_TRANSITION_SPLASH_SCREEN =
- AppProtoEnums.APP_TRANSITION_SPLASH_SCREEN; // 1
-
- /**
- * Type for {@link #notifyAppTransitionStarting}: The transition was started because we all
- * app windows were drawn
- */
- public static final int APP_TRANSITION_WINDOWS_DRAWN =
- AppProtoEnums.APP_TRANSITION_WINDOWS_DRAWN; // 2
-
- /**
- * Type for {@link #notifyAppTransitionStarting}: The transition was started because of a
- * timeout.
- */
- public static final int APP_TRANSITION_TIMEOUT =
- AppProtoEnums.APP_TRANSITION_TIMEOUT; // 3
-
- /**
- * Type for {@link #notifyAppTransitionStarting}: The transition was started because of a
- * we drew a task snapshot.
- */
- public static final int APP_TRANSITION_SNAPSHOT =
- AppProtoEnums.APP_TRANSITION_SNAPSHOT; // 4
-
- /**
- * Type for {@link #notifyAppTransitionStarting}: The transition was started because it was a
- * recents animation and we only needed to wait on the wallpaper.
- */
- public static final int APP_TRANSITION_RECENTS_ANIM =
- AppProtoEnums.APP_TRANSITION_RECENTS_ANIM; // 5
-
- /**
- * The bundle key to extract the assist data.
- */
- public static final String ASSIST_KEY_DATA = "data";
-
- /**
- * The bundle key to extract the assist structure.
- */
- public static final String ASSIST_KEY_STRUCTURE = "structure";
-
- /**
- * The bundle key to extract the assist content.
- */
- public static final String ASSIST_KEY_CONTENT = "content";
-
- /**
- * The bundle key to extract the assist receiver extras.
- */
- public static final String ASSIST_KEY_RECEIVER_EXTRAS = "receiverExtras";
-
/**
* Grant Uri permissions from one app to another. This method only extends
@@ -118,34 +63,6 @@ public abstract class ActivityManagerInternal {
String processName, String abiOverride, int uid, Runnable crashHandler);
/**
- * Acquires a sleep token for the specified display with the specified tag.
- *
- * @param tag A string identifying the purpose of the token (eg. "Dream").
- * @param displayId The display to apply the sleep token to.
- */
- public abstract SleepToken acquireSleepToken(@NonNull String tag, int displayId);
-
- /**
- * Sleep tokens cause the activity manager to put the top activity to sleep.
- * They are used by components such as dreams that may hide and block interaction
- * with underlying activities.
- */
- public static abstract class SleepToken {
-
- /**
- * Releases the sleep token.
- */
- public abstract void release();
- }
-
- /**
- * Returns home activity for the specified user.
- *
- * @param userId ID of the user or {@link android.os.UserHandle#USER_ALL}
- */
- public abstract ComponentName getHomeActivityForUser(int userId);
-
- /**
* Called when a user has been deleted. This can happen during normal device usage
* or just at startup, when partially removed users are purged. Any state persisted by the
* ActivityManager should be purged now.
@@ -154,44 +71,6 @@ public abstract class ActivityManagerInternal {
*/
public abstract void onUserRemoved(int userId);
- public abstract void onLocalVoiceInteractionStarted(IBinder callingActivity,
- IVoiceInteractionSession mSession,
- IVoiceInteractor mInteractor);
-
- /**
- * Callback for window manager to let activity manager know that we are finally starting the
- * app transition;
- *
- * @param reasons A map from windowing mode to a reason integer why the transition was started,
- * which must be one of the APP_TRANSITION_* values.
- * @param timestamp The time at which the app transition started in
- * {@link SystemClock#uptimeMillis()} timebase.
- */
- public abstract void notifyAppTransitionStarting(SparseIntArray reasons, long timestamp);
-
- /**
- * Callback for window manager to let activity manager know that the app transition was
- * cancelled.
- */
- public abstract void notifyAppTransitionCancelled();
-
- /**
- * Callback for window manager to let activity manager know that the app transition is finished.
- */
- public abstract void notifyAppTransitionFinished();
-
- /**
- * Returns the top activity from each of the currently visible stacks. The first entry will be
- * the focused activity.
- */
- public abstract List<IBinder> getTopVisibleActivities();
-
- /**
- * Callback for window manager to let activity manager know that docked stack changes its
- * minimized state.
- */
- public abstract void notifyDockedStackMinimizedChanged(boolean minimized);
-
/**
* Kill foreground apps from the specified user.
*/
@@ -225,28 +104,6 @@ public abstract class ActivityManagerInternal {
int userId);
/**
- * Start activity {@code intents} as if {@code packageName} on user {@code userId} did it.
- *
- * - DO NOT call it with the calling UID cleared.
- * - All the necessary caller permission checks must be done at callsites.
- *
- * @return error codes used by {@link IActivityManager#startActivity} and its siblings.
- */
- public abstract int startActivitiesAsPackage(String packageName,
- int userId, Intent[] intents, Bundle bOptions);
-
- /**
- * Start activity {@code intent} without calling user-id check.
- *
- * - DO NOT call it with the calling UID cleared.
- * - The caller must do the calling user ID check.
- *
- * @return error codes used by {@link IActivityManager#startActivity} and its siblings.
- */
- public abstract int startActivityAsUser(IApplicationThread caller, String callingPackage,
- Intent intent, @Nullable Bundle options, int userId);
-
- /**
* Get the procstate for the UID. The return value will be between
* {@link ActivityManager#MIN_PROCESS_STATE} and {@link ActivityManager#MAX_PROCESS_STATE}.
* Note if the UID doesn't exist, it'll return {@link ActivityManager#PROCESS_STATE_NONEXISTENT}
@@ -255,25 +112,11 @@ public abstract class ActivityManagerInternal {
public abstract int getUidProcessState(int uid);
/**
- * Called when Keyguard flags might have changed.
- *
- * @param callback Callback to run after activity visibilities have been reevaluated. This can
- * be used from window manager so that when the callback is called, it's
- * guaranteed that all apps have their visibility updated accordingly.
- */
- public abstract void notifyKeyguardFlagsChanged(@Nullable Runnable callback);
-
- /**
* @return {@code true} if system is ready, {@code false} otherwise.
*/
public abstract boolean isSystemReady();
/**
- * Called when the trusted state of Keyguard has changed.
- */
- public abstract void notifyKeyguardTrustedChanged();
-
- /**
* Sets if the given pid has an overlay UI or not.
*
* @param pid The pid we are setting overlay UI for.
@@ -306,13 +149,6 @@ public abstract class ActivityManagerInternal {
public abstract void notifyActiveVoiceInteractionServiceChanged(ComponentName component);
/**
- * Called after virtual display Id is updated by
- * {@link com.android.server.vr.Vr2dDisplay} with a specific
- * {@param vr2dDisplayId}.
- */
- public abstract void setVr2dDisplayId(int vr2dDisplayId);
-
- /**
* Saves the current activity manager state and includes the saved state in the next dump of
* activity manager.
*/
@@ -324,12 +160,6 @@ public abstract class ActivityManagerInternal {
public abstract void clearSavedANRState();
/**
- * Set focus on an activity.
- * @param token The IApplicationToken for the activity
- */
- public abstract void setFocusedActivity(IBinder token);
-
- /**
* Set a uid that is allowed to bypass stopped app switches, launching an app
* whenever it wants.
*
@@ -346,18 +176,6 @@ public abstract class ActivityManagerInternal {
public abstract boolean isRuntimeRestarted();
/**
- * Returns {@code true} if {@code uid} is running an activity from {@code packageName}.
- */
- public abstract boolean hasRunningActivity(int uid, @Nullable String packageName);
-
- public interface ScreenObserver {
- public void onAwakeStateChanged(boolean isAwake);
- public void onKeyguardStateChanged(boolean isShowing);
- }
-
- public abstract void registerScreenObserver(ScreenObserver observer);
-
- /**
* Returns if more users can be started without stopping currently running users.
*/
public abstract boolean canStartMoreUsers();
@@ -378,21 +196,6 @@ public abstract class ActivityManagerInternal {
public abstract int getMaxRunningUsers();
/**
- * Returns is the caller has the same uid as the Recents component
- */
- public abstract boolean isCallerRecents(int callingUid);
-
- /**
- * Returns whether the recents component is the home activity for the given user.
- */
- public abstract boolean isRecentsComponentHomeActivity(int userId);
-
- /**
- * Cancels any currently running recents animation.
- */
- public abstract void cancelRecentsAnimation(boolean restoreHomeStackPosition);
-
- /**
* Whether an UID is active or idle.
*/
public abstract boolean isUidActive(int uid);
@@ -401,10 +204,4 @@ public abstract class ActivityManagerInternal {
* Returns a list that contains the memory stats for currently running processes.
*/
public abstract List<ProcessMemoryState> getMemoryStateForProcesses();
-
- /**
- * This enforces {@code func} can only be called if either the caller is Recents activity or
- * has {@code permission}.
- */
- public abstract void enforceCallerIsRecentsOrHasPermission(String permission, String func);
}
diff --git a/core/java/android/app/ActivityTaskManagerInternal.java b/core/java/android/app/ActivityTaskManagerInternal.java
new file mode 100644
index 000000000000..faafc0ccaf2d
--- /dev/null
+++ b/core/java/android/app/ActivityTaskManagerInternal.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2018 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.Nullable;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.service.voice.IVoiceInteractionSession;
+import android.util.SparseIntArray;
+import android.view.RemoteAnimationAdapter;
+
+import com.android.internal.app.IVoiceInteractor;
+
+import java.util.List;
+
+/**
+ * Activity Task manager local system service interface.
+ * @hide Only for use within system server
+ */
+public abstract class ActivityTaskManagerInternal {
+
+ /**
+ * Type for {@link #notifyAppTransitionStarting}: The transition was started because we drew
+ * the splash screen.
+ */
+ public static final int APP_TRANSITION_SPLASH_SCREEN =
+ AppProtoEnums.APP_TRANSITION_SPLASH_SCREEN; // 1
+
+ /**
+ * Type for {@link #notifyAppTransitionStarting}: The transition was started because we all
+ * app windows were drawn
+ */
+ public static final int APP_TRANSITION_WINDOWS_DRAWN =
+ AppProtoEnums.APP_TRANSITION_WINDOWS_DRAWN; // 2
+
+ /**
+ * Type for {@link #notifyAppTransitionStarting}: The transition was started because of a
+ * timeout.
+ */
+ public static final int APP_TRANSITION_TIMEOUT =
+ AppProtoEnums.APP_TRANSITION_TIMEOUT; // 3
+
+ /**
+ * Type for {@link #notifyAppTransitionStarting}: The transition was started because of a
+ * we drew a task snapshot.
+ */
+ public static final int APP_TRANSITION_SNAPSHOT =
+ AppProtoEnums.APP_TRANSITION_SNAPSHOT; // 4
+
+ /**
+ * Type for {@link #notifyAppTransitionStarting}: The transition was started because it was a
+ * recents animation and we only needed to wait on the wallpaper.
+ */
+ public static final int APP_TRANSITION_RECENTS_ANIM =
+ AppProtoEnums.APP_TRANSITION_RECENTS_ANIM; // 5
+
+ /**
+ * The bundle key to extract the assist data.
+ */
+ public static final String ASSIST_KEY_DATA = "data";
+
+ /**
+ * The bundle key to extract the assist structure.
+ */
+ public static final String ASSIST_KEY_STRUCTURE = "structure";
+
+ /**
+ * The bundle key to extract the assist content.
+ */
+ public static final String ASSIST_KEY_CONTENT = "content";
+
+ /**
+ * The bundle key to extract the assist receiver extras.
+ */
+ public static final String ASSIST_KEY_RECEIVER_EXTRAS = "receiverExtras";
+
+ public interface ScreenObserver {
+ void onAwakeStateChanged(boolean isAwake);
+ void onKeyguardStateChanged(boolean isShowing);
+ }
+
+ /**
+ * Sleep tokens cause the activity manager to put the top activity to sleep.
+ * They are used by components such as dreams that may hide and block interaction
+ * with underlying activities.
+ */
+ public static abstract class SleepToken {
+
+ /** Releases the sleep token. */
+ public abstract void release();
+ }
+
+ /**
+ * Acquires a sleep token for the specified display with the specified tag.
+ *
+ * @param tag A string identifying the purpose of the token (eg. "Dream").
+ * @param displayId The display to apply the sleep token to.
+ */
+ public abstract SleepToken acquireSleepToken(@NonNull String tag, int displayId);
+
+ /**
+ * Returns home activity for the specified user.
+ *
+ * @param userId ID of the user or {@link android.os.UserHandle#USER_ALL}
+ */
+ public abstract ComponentName getHomeActivityForUser(int userId);
+
+ public abstract void onLocalVoiceInteractionStarted(IBinder callingActivity,
+ IVoiceInteractionSession mSession,
+ IVoiceInteractor mInteractor);
+
+ /**
+ * Callback for window manager to let activity manager know that we are finally starting the
+ * app transition;
+ *
+ * @param reasons A map from windowing mode to a reason integer why the transition was started,
+ * which must be one of the APP_TRANSITION_* values.
+ * @param timestamp The time at which the app transition started in
+ * {@link SystemClock#uptimeMillis()} timebase.
+ */
+ public abstract void notifyAppTransitionStarting(SparseIntArray reasons, long timestamp);
+
+ /**
+ * Callback for window manager to let activity manager know that the app transition was
+ * cancelled.
+ */
+ public abstract void notifyAppTransitionCancelled();
+
+ /**
+ * Callback for window manager to let activity manager know that the app transition is finished.
+ */
+ public abstract void notifyAppTransitionFinished();
+
+ /**
+ * Returns the top activity from each of the currently visible stacks. The first entry will be
+ * the focused activity.
+ */
+ public abstract List<IBinder> getTopVisibleActivities();
+
+ /**
+ * Callback for window manager to let activity manager know that docked stack changes its
+ * minimized state.
+ */
+ public abstract void notifyDockedStackMinimizedChanged(boolean minimized);
+
+ /**
+ * Start activity {@code intents} as if {@code packageName} on user {@code userId} did it.
+ *
+ * - DO NOT call it with the calling UID cleared.
+ * - All the necessary caller permission checks must be done at callsites.
+ *
+ * @return error codes used by {@link IActivityManager#startActivity} and its siblings.
+ */
+ public abstract int startActivitiesAsPackage(String packageName,
+ int userId, Intent[] intents, Bundle bOptions);
+
+ /**
+ * Start activity {@code intent} without calling user-id check.
+ *
+ * - DO NOT call it with the calling UID cleared.
+ * - The caller must do the calling user ID check.
+ *
+ * @return error codes used by {@link IActivityManager#startActivity} and its siblings.
+ */
+ public abstract int startActivityAsUser(IApplicationThread caller, String callingPackage,
+ Intent intent, @Nullable Bundle options, int userId);
+
+ /**
+ * Called when Keyguard flags might have changed.
+ *
+ * @param callback Callback to run after activity visibilities have been reevaluated. This can
+ * be used from window manager so that when the callback is called, it's
+ * guaranteed that all apps have their visibility updated accordingly.
+ */
+ public abstract void notifyKeyguardFlagsChanged(@Nullable Runnable callback);
+
+ /**
+ * Called when the trusted state of Keyguard has changed.
+ */
+ public abstract void notifyKeyguardTrustedChanged();
+
+ /**
+ * Called after virtual display Id is updated by
+ * {@link com.android.server.vr.Vr2dDisplay} with a specific
+ * {@param vr2dDisplayId}.
+ */
+ public abstract void setVr2dDisplayId(int vr2dDisplayId);
+
+ /**
+ * Set focus on an activity.
+ * @param token The IApplicationToken for the activity
+ */
+ public abstract void setFocusedActivity(IBinder token);
+
+ /**
+ * Returns {@code true} if {@code uid} is running an activity from {@code packageName}.
+ */
+ public abstract boolean hasRunningActivity(int uid, @Nullable String packageName);
+
+ public abstract void registerScreenObserver(ScreenObserver observer);
+
+ /**
+ * Returns is the caller has the same uid as the Recents component
+ */
+ public abstract boolean isCallerRecents(int callingUid);
+
+ /**
+ * Returns whether the recents component is the home activity for the given user.
+ */
+ public abstract boolean isRecentsComponentHomeActivity(int userId);
+
+ /**
+ * Cancels any currently running recents animation.
+ */
+ public abstract void cancelRecentsAnimation(boolean restoreHomeStackPosition);
+
+ /**
+ * This enforces {@code func} can only be called if either the caller is Recents activity or
+ * has {@code permission}.
+ */
+ public abstract void enforceCallerIsRecentsOrHasPermission(String permission, String func);
+
+}