Loading cmds/am/src/com/android/commands/am/Am.java +9 −4 Original line number Diff line number Diff line Loading @@ -1216,6 +1216,7 @@ public class Am extends BaseCommand { class MyActivityController extends IActivityController.Stub { final String mGdbPort; final boolean mMonkey; static final int STATE_NORMAL = 0; static final int STATE_CRASHED = 1; Loading @@ -1242,8 +1243,9 @@ public class Am extends BaseCommand { Thread mGdbThread; boolean mGotGdbPrint; MyActivityController(String gdbPort) { MyActivityController(String gdbPort, boolean monkey) { mGdbPort = gdbPort; mMonkey = monkey; } @Override Loading Loading @@ -1443,7 +1445,7 @@ public class Am extends BaseCommand { try { printMessageForState(); mAm.setActivityController(this); mAm.setActivityController(this, mMonkey); mState = STATE_NORMAL; InputStreamReader converter = new InputStreamReader(System.in); Loading Loading @@ -1498,7 +1500,7 @@ public class Am extends BaseCommand { } catch (IOException e) { e.printStackTrace(); } finally { mAm.setActivityController(null); mAm.setActivityController(null, mMonkey); } } } Loading @@ -1506,16 +1508,19 @@ public class Am extends BaseCommand { private void runMonitor() throws Exception { String opt; String gdbPort = null; boolean monkey = false; while ((opt=nextOption()) != null) { if (opt.equals("--gdb")) { gdbPort = nextArgRequired(); } else if (opt.equals("-m")) { monkey = true; } else { System.err.println("Error: Unknown option: " + opt); return; } } MyActivityController controller = new MyActivityController(gdbPort); MyActivityController controller = new MyActivityController(gdbPort, monkey); controller.run(); } Loading cmds/uiautomator/library/testrunner-src/com/android/uiautomator/core/UiAutomationShellWrapper.java +2 −2 Original line number Diff line number Diff line Loading @@ -50,9 +50,9 @@ public class UiAutomationShellWrapper { } try { if (isSet) { am.setActivityController(new DummyActivityController()); am.setActivityController(new DummyActivityController(), true); } else { am.setActivityController(null); am.setActivityController(null, true); } } catch (RemoteException e) { throw new RuntimeException(e); Loading core/java/android/app/ActivityManagerNative.java +5 −2 Original line number Diff line number Diff line Loading @@ -1527,7 +1527,8 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM data.enforceInterface(IActivityManager.descriptor); IActivityController watcher = IActivityController.Stub.asInterface( data.readStrongBinder()); setActivityController(watcher); boolean imAMonkey = data.readInt() != 0; setActivityController(watcher, imAMonkey); reply.writeNoException(); return true; } Loading Loading @@ -4860,12 +4861,14 @@ class ActivityManagerProxy implements IActivityManager data.recycle(); reply.recycle(); } public void setActivityController(IActivityController watcher) throws RemoteException public void setActivityController(IActivityController watcher, boolean imAMonkey) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); data.writeInt(imAMonkey ? 1 : 0); mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0); reply.readException(); data.recycle(); Loading core/java/android/app/IActivityManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -305,7 +305,7 @@ public interface IActivityManager extends IInterface { String packageName, boolean waitForDebugger, boolean persistent) throws RemoteException; public void setAlwaysFinish(boolean enabled) throws RemoteException; public void setActivityController(IActivityController watcher) public void setActivityController(IActivityController watcher, boolean imAMonkey) throws RemoteException; public void setLenientBackgroundCheck(boolean enabled) throws RemoteException; public int getMemoryTrimLevel() throws RemoteException; Loading services/core/java/com/android/server/am/ActivityManagerService.java +10 −5 Original line number Diff line number Diff line Loading @@ -1297,6 +1297,7 @@ public final class ActivityManagerService extends ActivityManagerNative boolean mSupportsPictureInPicture; Rect mDefaultPinnedStackBounds; IActivityController mController = null; boolean mControllerIsAMonkey = false; String mProfileApp = null; ProcessRecord mProfileProc = null; String mProfileFile; Loading Loading @@ -11423,11 +11424,12 @@ public final class ActivityManagerService extends ActivityManagerNative } @Override public void setActivityController(IActivityController controller) { public void setActivityController(IActivityController controller, boolean imAMonkey) { enforceCallingPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER, "setActivityController()"); synchronized (this) { mController = controller; mControllerIsAMonkey = imAMonkey; Watchdog.getInstance().setActivityController(controller); } } Loading @@ -11454,7 +11456,7 @@ public final class ActivityManagerService extends ActivityManagerNative public boolean isUserAMonkey() { synchronized (this) { // If there is a controller also implies the user is a monkey. return (mUserIsMonkey || mController != null); return (mUserIsMonkey || (mController != null && mControllerIsAMonkey)); } } Loading Loading @@ -14123,10 +14125,13 @@ public final class ActivityManagerService extends ActivityManagerNative } } if (dumpPackage == null) { if (mAlwaysFinishActivities || mLenientBackgroundCheck || mController != null) { if (mAlwaysFinishActivities || mLenientBackgroundCheck) { pw.println(" mAlwaysFinishActivities=" + mAlwaysFinishActivities + " mLenientBackgroundCheck=" + mLenientBackgroundCheck + " mController=" + mController); + " mLenientBackgroundCheck=" + mLenientBackgroundCheck); } if (mController != null) { pw.println(" mController=" + mController + " mControllerIsAMonkey=" + mControllerIsAMonkey); } if (dumpAll) { pw.println(" Total persistent processes: " + numPers); Loading
cmds/am/src/com/android/commands/am/Am.java +9 −4 Original line number Diff line number Diff line Loading @@ -1216,6 +1216,7 @@ public class Am extends BaseCommand { class MyActivityController extends IActivityController.Stub { final String mGdbPort; final boolean mMonkey; static final int STATE_NORMAL = 0; static final int STATE_CRASHED = 1; Loading @@ -1242,8 +1243,9 @@ public class Am extends BaseCommand { Thread mGdbThread; boolean mGotGdbPrint; MyActivityController(String gdbPort) { MyActivityController(String gdbPort, boolean monkey) { mGdbPort = gdbPort; mMonkey = monkey; } @Override Loading Loading @@ -1443,7 +1445,7 @@ public class Am extends BaseCommand { try { printMessageForState(); mAm.setActivityController(this); mAm.setActivityController(this, mMonkey); mState = STATE_NORMAL; InputStreamReader converter = new InputStreamReader(System.in); Loading Loading @@ -1498,7 +1500,7 @@ public class Am extends BaseCommand { } catch (IOException e) { e.printStackTrace(); } finally { mAm.setActivityController(null); mAm.setActivityController(null, mMonkey); } } } Loading @@ -1506,16 +1508,19 @@ public class Am extends BaseCommand { private void runMonitor() throws Exception { String opt; String gdbPort = null; boolean monkey = false; while ((opt=nextOption()) != null) { if (opt.equals("--gdb")) { gdbPort = nextArgRequired(); } else if (opt.equals("-m")) { monkey = true; } else { System.err.println("Error: Unknown option: " + opt); return; } } MyActivityController controller = new MyActivityController(gdbPort); MyActivityController controller = new MyActivityController(gdbPort, monkey); controller.run(); } Loading
cmds/uiautomator/library/testrunner-src/com/android/uiautomator/core/UiAutomationShellWrapper.java +2 −2 Original line number Diff line number Diff line Loading @@ -50,9 +50,9 @@ public class UiAutomationShellWrapper { } try { if (isSet) { am.setActivityController(new DummyActivityController()); am.setActivityController(new DummyActivityController(), true); } else { am.setActivityController(null); am.setActivityController(null, true); } } catch (RemoteException e) { throw new RuntimeException(e); Loading
core/java/android/app/ActivityManagerNative.java +5 −2 Original line number Diff line number Diff line Loading @@ -1527,7 +1527,8 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM data.enforceInterface(IActivityManager.descriptor); IActivityController watcher = IActivityController.Stub.asInterface( data.readStrongBinder()); setActivityController(watcher); boolean imAMonkey = data.readInt() != 0; setActivityController(watcher, imAMonkey); reply.writeNoException(); return true; } Loading Loading @@ -4860,12 +4861,14 @@ class ActivityManagerProxy implements IActivityManager data.recycle(); reply.recycle(); } public void setActivityController(IActivityController watcher) throws RemoteException public void setActivityController(IActivityController watcher, boolean imAMonkey) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(watcher != null ? watcher.asBinder() : null); data.writeInt(imAMonkey ? 1 : 0); mRemote.transact(SET_ACTIVITY_CONTROLLER_TRANSACTION, data, reply, 0); reply.readException(); data.recycle(); Loading
core/java/android/app/IActivityManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -305,7 +305,7 @@ public interface IActivityManager extends IInterface { String packageName, boolean waitForDebugger, boolean persistent) throws RemoteException; public void setAlwaysFinish(boolean enabled) throws RemoteException; public void setActivityController(IActivityController watcher) public void setActivityController(IActivityController watcher, boolean imAMonkey) throws RemoteException; public void setLenientBackgroundCheck(boolean enabled) throws RemoteException; public int getMemoryTrimLevel() throws RemoteException; Loading
services/core/java/com/android/server/am/ActivityManagerService.java +10 −5 Original line number Diff line number Diff line Loading @@ -1297,6 +1297,7 @@ public final class ActivityManagerService extends ActivityManagerNative boolean mSupportsPictureInPicture; Rect mDefaultPinnedStackBounds; IActivityController mController = null; boolean mControllerIsAMonkey = false; String mProfileApp = null; ProcessRecord mProfileProc = null; String mProfileFile; Loading Loading @@ -11423,11 +11424,12 @@ public final class ActivityManagerService extends ActivityManagerNative } @Override public void setActivityController(IActivityController controller) { public void setActivityController(IActivityController controller, boolean imAMonkey) { enforceCallingPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER, "setActivityController()"); synchronized (this) { mController = controller; mControllerIsAMonkey = imAMonkey; Watchdog.getInstance().setActivityController(controller); } } Loading @@ -11454,7 +11456,7 @@ public final class ActivityManagerService extends ActivityManagerNative public boolean isUserAMonkey() { synchronized (this) { // If there is a controller also implies the user is a monkey. return (mUserIsMonkey || mController != null); return (mUserIsMonkey || (mController != null && mControllerIsAMonkey)); } } Loading Loading @@ -14123,10 +14125,13 @@ public final class ActivityManagerService extends ActivityManagerNative } } if (dumpPackage == null) { if (mAlwaysFinishActivities || mLenientBackgroundCheck || mController != null) { if (mAlwaysFinishActivities || mLenientBackgroundCheck) { pw.println(" mAlwaysFinishActivities=" + mAlwaysFinishActivities + " mLenientBackgroundCheck=" + mLenientBackgroundCheck + " mController=" + mController); + " mLenientBackgroundCheck=" + mLenientBackgroundCheck); } if (mController != null) { pw.println(" mController=" + mController + " mControllerIsAMonkey=" + mControllerIsAMonkey); } if (dumpAll) { pw.println(" Total persistent processes: " + numPers);