Loading services/core/java/com/android/server/wm/ActivityInterceptorCallback.java +7 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.wm; import android.annotation.IntDef; import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.TaskInfo; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ResolveInfo; Loading @@ -39,6 +40,12 @@ public abstract class ActivityInterceptorCallback { */ public abstract @Nullable Intent intercept(ActivityInterceptorInfo info); /** * Called when an activity is successfully launched. */ public void onActivityLaunched(TaskInfo taskInfo, ActivityInfo activityInfo) { } /** * The unique id of each interceptor which determines the order it will execute in. */ Loading services/core/java/com/android/server/wm/ActivityStartInterceptor.java +13 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.KeyguardManager; import android.app.TaskInfo; import android.app.admin.DevicePolicyManagerInternal; import android.content.Context; import android.content.IIntentSender; Loading Loading @@ -402,4 +403,16 @@ class ActivityStartInterceptor { mAInfo = mSupervisor.resolveActivity(mIntent, mRInfo, mStartFlags, null /*profilerInfo*/); return true; } /** * Called when an activity is successfully launched. */ void onActivityLaunched(TaskInfo taskInfo, ActivityInfo activityInfo) { final SparseArray<ActivityInterceptorCallback> callbacks = mService.getActivityInterceptorCallbacks(); for (int i = 0; i < callbacks.size(); i++) { final ActivityInterceptorCallback callback = callbacks.valueAt(i); callback.onActivityLaunched(taskInfo, activityInfo); } } } services/core/java/com/android/server/wm/ActivityStarter.java +4 −0 Original line number Diff line number Diff line Loading @@ -1559,6 +1559,10 @@ class ActivityStarter { mService.getTaskChangeNotificationController().notifyActivityRestartAttempt( targetTask.getTaskInfo(), homeTaskVisible, clearedTask, visible); } if (ActivityManager.isStartResultSuccessful(result)) { mInterceptor.onActivityLaunched(targetTask.getTaskInfo(), r.info); } } /** Loading services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java +16 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,10 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT; import static android.content.pm.ApplicationInfo.FLAG_SUSPENDED; import static com.android.dx.mockito.inline.extended.ExtendedMockito.any; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.times; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; Loading Loading @@ -327,4 +331,16 @@ public class ActivityStartInterceptorTest { assertTrue(mInterceptor.intercept(null, null, mAInfo, null, null, 0, 0, null)); assertEquals("android.test.second", mInterceptor.mIntent.getAction()); } @Test public void testActivityLaunchedCallback_singleCallback() { addMockInterceptorCallback(null); assertEquals(1, mActivityInterceptorCallbacks.size()); final ActivityInterceptorCallback callback = mActivityInterceptorCallbacks.valueAt(0); spyOn(callback); mInterceptor.onActivityLaunched(null, null); verify(callback, times(1)).onActivityLaunched(any(), any()); } } Loading
services/core/java/com/android/server/wm/ActivityInterceptorCallback.java +7 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.wm; import android.annotation.IntDef; import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.TaskInfo; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ResolveInfo; Loading @@ -39,6 +40,12 @@ public abstract class ActivityInterceptorCallback { */ public abstract @Nullable Intent intercept(ActivityInterceptorInfo info); /** * Called when an activity is successfully launched. */ public void onActivityLaunched(TaskInfo taskInfo, ActivityInfo activityInfo) { } /** * The unique id of each interceptor which determines the order it will execute in. */ Loading
services/core/java/com/android/server/wm/ActivityStartInterceptor.java +13 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.KeyguardManager; import android.app.TaskInfo; import android.app.admin.DevicePolicyManagerInternal; import android.content.Context; import android.content.IIntentSender; Loading Loading @@ -402,4 +403,16 @@ class ActivityStartInterceptor { mAInfo = mSupervisor.resolveActivity(mIntent, mRInfo, mStartFlags, null /*profilerInfo*/); return true; } /** * Called when an activity is successfully launched. */ void onActivityLaunched(TaskInfo taskInfo, ActivityInfo activityInfo) { final SparseArray<ActivityInterceptorCallback> callbacks = mService.getActivityInterceptorCallbacks(); for (int i = 0; i < callbacks.size(); i++) { final ActivityInterceptorCallback callback = callbacks.valueAt(i); callback.onActivityLaunched(taskInfo, activityInfo); } } }
services/core/java/com/android/server/wm/ActivityStarter.java +4 −0 Original line number Diff line number Diff line Loading @@ -1559,6 +1559,10 @@ class ActivityStarter { mService.getTaskChangeNotificationController().notifyActivityRestartAttempt( targetTask.getTaskInfo(), homeTaskVisible, clearedTask, visible); } if (ActivityManager.isStartResultSuccessful(result)) { mInterceptor.onActivityLaunched(targetTask.getTaskInfo(), r.info); } } /** Loading
services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java +16 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,10 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT; import static android.content.pm.ApplicationInfo.FLAG_SUSPENDED; import static com.android.dx.mockito.inline.extended.ExtendedMockito.any; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.times; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; Loading Loading @@ -327,4 +331,16 @@ public class ActivityStartInterceptorTest { assertTrue(mInterceptor.intercept(null, null, mAInfo, null, null, 0, 0, null)); assertEquals("android.test.second", mInterceptor.mIntent.getAction()); } @Test public void testActivityLaunchedCallback_singleCallback() { addMockInterceptorCallback(null); assertEquals(1, mActivityInterceptorCallbacks.size()); final ActivityInterceptorCallback callback = mActivityInterceptorCallbacks.valueAt(0); spyOn(callback); mInterceptor.onActivityLaunched(null, null); verify(callback, times(1)).onActivityLaunched(any(), any()); } }