Loading core/java/android/app/ActivityManager.aidl +1 −0 Original line number Original line Diff line number Diff line Loading @@ -17,3 +17,4 @@ package android.app; package android.app; parcelable ActivityManager.RecentTaskInfo; parcelable ActivityManager.RecentTaskInfo; parcelable ActivityManager.TaskDescription; core/java/android/app/ActivityManagerNative.java +20 −0 Original line number Original line Diff line number Diff line Loading @@ -964,6 +964,14 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; return true; } } case UNREGISTER_TASK_STACK_LISTENER_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); unregisterTaskStackListener(ITaskStackListener.Stub.asInterface(token)); reply.writeNoException(); return true; } case GET_TASK_FOR_ACTIVITY_TRANSACTION: { case GET_TASK_FOR_ACTIVITY_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); IBinder token = data.readStrongBinder(); Loading Loading @@ -4208,6 +4216,18 @@ class ActivityManagerProxy implements IActivityManager data.recycle(); data.recycle(); reply.recycle(); reply.recycle(); } } @Override public void unregisterTaskStackListener(ITaskStackListener listener) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(listener.asBinder()); mRemote.transact(UNREGISTER_TASK_STACK_LISTENER_TRANSACTION, data, reply, 0); reply.readException(); data.recycle(); reply.recycle(); } public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException { { Parcel data = Parcel.obtain(); Parcel data = Parcel.obtain(); Loading core/java/android/app/IActivityManager.java +2 −0 Original line number Original line Diff line number Diff line Loading @@ -214,6 +214,7 @@ public interface IActivityManager extends IInterface { public int getFocusedStackId() throws RemoteException; public int getFocusedStackId() throws RemoteException; public void setFocusedTask(int taskId) throws RemoteException; public void setFocusedTask(int taskId) throws RemoteException; public void registerTaskStackListener(ITaskStackListener listener) throws RemoteException; public void registerTaskStackListener(ITaskStackListener listener) throws RemoteException; public void unregisterTaskStackListener(ITaskStackListener listener) throws RemoteException; public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException; public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException; public ContentProviderHolder getContentProvider(IApplicationThread caller, public ContentProviderHolder getContentProvider(IApplicationThread caller, String name, int userId, boolean stable) throws RemoteException; String name, int userId, boolean stable) throws RemoteException; Loading Loading @@ -1114,4 +1115,5 @@ public interface IActivityManager extends IInterface { int GET_DEFAULT_PICTURE_IN_PICTURE_BOUNDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 401; int GET_DEFAULT_PICTURE_IN_PICTURE_BOUNDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 401; int GET_PICTURE_IN_PICTURE_MOVEMENT_BOUNDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 402; int GET_PICTURE_IN_PICTURE_MOVEMENT_BOUNDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 402; int UPDATE_DISPLAY_OVERRIDE_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 403; int UPDATE_DISPLAY_OVERRIDE_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 403; int UNREGISTER_TASK_STACK_LISTENER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+404; } } core/java/android/app/ITaskStackListener.aidl +50 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,9 @@ package android.app; package android.app; import android.app.ActivityManager; import android.content.ComponentName; /** @hide */ /** @hide */ oneway interface ITaskStackListener { oneway interface ITaskStackListener { /** Called whenever there are changes to the state of tasks in a stack. */ /** Called whenever there are changes to the state of tasks in a stack. */ Loading Loading @@ -45,4 +48,51 @@ oneway interface ITaskStackListener { * Callen when we launched an activity that is dismissed the docked stack. * Callen when we launched an activity that is dismissed the docked stack. */ */ void onActivityDismissingDockedStack(); void onActivityDismissingDockedStack(); /** * Called when a task is added. * * @param taskId id of the task. * @param componentName of the activity that the task is being started with. */ void onTaskCreated(int taskId, in ComponentName componentName); /** * Called when a task is removed. * * @param taskId id of the task. */ void onTaskRemoved(int taskId); /** * Called when a task is moved to the front of its stack. * * @param taskId id of the task. */ void onTaskMovedToFront(int taskId); /** * Called when a task’s description is changed due to an activity calling * ActivityManagerService.setTaskDescription * * @param taskId id of the task. * @param td the new TaskDescription. */ void onTaskDescriptionChanged(int taskId, in ActivityManager.TaskDescription td); /** * Called when a activity’s orientation is changed due to it calling * ActivityManagerService.setRequestedOrientation * * @param taskId id of the task that the activity is in. * @param requestedOrientation the new requested orientation. */ void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation); /** * Called when the task is about to be finished but before its surfaces are * removed from the window manager. This allows interested parties to * perform relevant animations before the window disappears. */ void onTaskRemovalStarted(int taskId); } } core/java/android/app/TaskStackListener.java 0 → 100644 +77 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2016 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.content.ComponentName; import android.os.RemoteException; /** * Classes interested in observing only a subset of changes using ITaskStackListener can extend * this class to avoid having to implement all the methods. * @hide */ public abstract class TaskStackListener extends ITaskStackListener.Stub { @Override public void onTaskStackChanged() throws RemoteException { } @Override public void onActivityPinned() throws RemoteException { } @Override public void onPinnedActivityRestartAttempt() throws RemoteException { } @Override public void onPinnedStackAnimationEnded() throws RemoteException { } @Override public void onActivityForcedResizable(String packageName, int taskId) throws RemoteException { } @Override public void onActivityDismissingDockedStack() throws RemoteException { } @Override public void onTaskCreated(int taskId, ComponentName componentName) throws RemoteException { } @Override public void onTaskRemoved(int taskId) throws RemoteException { } @Override public void onTaskMovedToFront(int taskId) throws RemoteException { } @Override public void onTaskRemovalStarted(int taskId) { } @Override public void onTaskDescriptionChanged(int taskId, ActivityManager.TaskDescription td) throws RemoteException { } @Override public void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation) throws RemoteException { } } Loading
core/java/android/app/ActivityManager.aidl +1 −0 Original line number Original line Diff line number Diff line Loading @@ -17,3 +17,4 @@ package android.app; package android.app; parcelable ActivityManager.RecentTaskInfo; parcelable ActivityManager.RecentTaskInfo; parcelable ActivityManager.TaskDescription;
core/java/android/app/ActivityManagerNative.java +20 −0 Original line number Original line Diff line number Diff line Loading @@ -964,6 +964,14 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; return true; } } case UNREGISTER_TASK_STACK_LISTENER_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); unregisterTaskStackListener(ITaskStackListener.Stub.asInterface(token)); reply.writeNoException(); return true; } case GET_TASK_FOR_ACTIVITY_TRANSACTION: { case GET_TASK_FOR_ACTIVITY_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); IBinder token = data.readStrongBinder(); Loading Loading @@ -4208,6 +4216,18 @@ class ActivityManagerProxy implements IActivityManager data.recycle(); data.recycle(); reply.recycle(); reply.recycle(); } } @Override public void unregisterTaskStackListener(ITaskStackListener listener) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(listener.asBinder()); mRemote.transact(UNREGISTER_TASK_STACK_LISTENER_TRANSACTION, data, reply, 0); reply.readException(); data.recycle(); reply.recycle(); } public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException { { Parcel data = Parcel.obtain(); Parcel data = Parcel.obtain(); Loading
core/java/android/app/IActivityManager.java +2 −0 Original line number Original line Diff line number Diff line Loading @@ -214,6 +214,7 @@ public interface IActivityManager extends IInterface { public int getFocusedStackId() throws RemoteException; public int getFocusedStackId() throws RemoteException; public void setFocusedTask(int taskId) throws RemoteException; public void setFocusedTask(int taskId) throws RemoteException; public void registerTaskStackListener(ITaskStackListener listener) throws RemoteException; public void registerTaskStackListener(ITaskStackListener listener) throws RemoteException; public void unregisterTaskStackListener(ITaskStackListener listener) throws RemoteException; public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException; public int getTaskForActivity(IBinder token, boolean onlyRoot) throws RemoteException; public ContentProviderHolder getContentProvider(IApplicationThread caller, public ContentProviderHolder getContentProvider(IApplicationThread caller, String name, int userId, boolean stable) throws RemoteException; String name, int userId, boolean stable) throws RemoteException; Loading Loading @@ -1114,4 +1115,5 @@ public interface IActivityManager extends IInterface { int GET_DEFAULT_PICTURE_IN_PICTURE_BOUNDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 401; int GET_DEFAULT_PICTURE_IN_PICTURE_BOUNDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 401; int GET_PICTURE_IN_PICTURE_MOVEMENT_BOUNDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 402; int GET_PICTURE_IN_PICTURE_MOVEMENT_BOUNDS_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 402; int UPDATE_DISPLAY_OVERRIDE_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 403; int UPDATE_DISPLAY_OVERRIDE_CONFIGURATION_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 403; int UNREGISTER_TASK_STACK_LISTENER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+404; } }
core/java/android/app/ITaskStackListener.aidl +50 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,9 @@ package android.app; package android.app; import android.app.ActivityManager; import android.content.ComponentName; /** @hide */ /** @hide */ oneway interface ITaskStackListener { oneway interface ITaskStackListener { /** Called whenever there are changes to the state of tasks in a stack. */ /** Called whenever there are changes to the state of tasks in a stack. */ Loading Loading @@ -45,4 +48,51 @@ oneway interface ITaskStackListener { * Callen when we launched an activity that is dismissed the docked stack. * Callen when we launched an activity that is dismissed the docked stack. */ */ void onActivityDismissingDockedStack(); void onActivityDismissingDockedStack(); /** * Called when a task is added. * * @param taskId id of the task. * @param componentName of the activity that the task is being started with. */ void onTaskCreated(int taskId, in ComponentName componentName); /** * Called when a task is removed. * * @param taskId id of the task. */ void onTaskRemoved(int taskId); /** * Called when a task is moved to the front of its stack. * * @param taskId id of the task. */ void onTaskMovedToFront(int taskId); /** * Called when a task’s description is changed due to an activity calling * ActivityManagerService.setTaskDescription * * @param taskId id of the task. * @param td the new TaskDescription. */ void onTaskDescriptionChanged(int taskId, in ActivityManager.TaskDescription td); /** * Called when a activity’s orientation is changed due to it calling * ActivityManagerService.setRequestedOrientation * * @param taskId id of the task that the activity is in. * @param requestedOrientation the new requested orientation. */ void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation); /** * Called when the task is about to be finished but before its surfaces are * removed from the window manager. This allows interested parties to * perform relevant animations before the window disappears. */ void onTaskRemovalStarted(int taskId); } }
core/java/android/app/TaskStackListener.java 0 → 100644 +77 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2016 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.content.ComponentName; import android.os.RemoteException; /** * Classes interested in observing only a subset of changes using ITaskStackListener can extend * this class to avoid having to implement all the methods. * @hide */ public abstract class TaskStackListener extends ITaskStackListener.Stub { @Override public void onTaskStackChanged() throws RemoteException { } @Override public void onActivityPinned() throws RemoteException { } @Override public void onPinnedActivityRestartAttempt() throws RemoteException { } @Override public void onPinnedStackAnimationEnded() throws RemoteException { } @Override public void onActivityForcedResizable(String packageName, int taskId) throws RemoteException { } @Override public void onActivityDismissingDockedStack() throws RemoteException { } @Override public void onTaskCreated(int taskId, ComponentName componentName) throws RemoteException { } @Override public void onTaskRemoved(int taskId) throws RemoteException { } @Override public void onTaskMovedToFront(int taskId) throws RemoteException { } @Override public void onTaskRemovalStarted(int taskId) { } @Override public void onTaskDescriptionChanged(int taskId, ActivityManager.TaskDescription td) throws RemoteException { } @Override public void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation) throws RemoteException { } }