diff options
| author | Leonard Mosescu <mosescu@google.com> | 2017-02-16 23:24:32 +0000 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2017-02-16 23:24:32 +0000 |
| commit | db0803b4e815f3e4e180c0502912dbbca42e1710 (patch) | |
| tree | b8013b2b3289a09b9adc85f35dbfb70191b08155 /core/java/android | |
| parent | a22c40839e8858d7f210fa1ee53e1d0e593dc65f (diff) | |
| parent | 05dfd10254741b0a7f66504addf8a0f1d356fd4c (diff) | |
Merge "Adding "attach-agent" to ActivityManagerShellCommand"
am: 05dfd10254
Change-Id: I3623f617319f03bad87f65b61959ec2ce822ac7e
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 16 | ||||
| -rw-r--r-- | core/java/android/app/ApplicationThreadNative.java | 16 | ||||
| -rw-r--r-- | core/java/android/app/IApplicationThread.java | 2 | ||||
| -rw-r--r-- | core/java/android/os/ShellCommand.java | 2 |
4 files changed, 35 insertions, 1 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index cae4be69c0fe..2c4cf7449c34 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -974,6 +974,10 @@ public final class ActivityThread { sendMessage(H.DUMP_HEAP, dhd, managed ? 1 : 0, 0, true /*async*/); } + public void attachAgent(String agent) { + sendMessage(H.ATTACH_AGENT, agent); + } + public void setSchedulingGroup(int group) { // Note: do this immediately, since going into the foreground // should happen regardless of what pending work we have to do @@ -1408,6 +1412,7 @@ public final class ActivityThread { public static final int MULTI_WINDOW_MODE_CHANGED = 152; public static final int PICTURE_IN_PICTURE_MODE_CHANGED = 153; public static final int LOCAL_VOICE_INTERACTION_STARTED = 154; + public static final int ATTACH_AGENT = 155; String codeToString(int code) { if (DEBUG_MESSAGES) { @@ -1464,6 +1469,7 @@ public final class ActivityThread { case MULTI_WINDOW_MODE_CHANGED: return "MULTI_WINDOW_MODE_CHANGED"; case PICTURE_IN_PICTURE_MODE_CHANGED: return "PICTURE_IN_PICTURE_MODE_CHANGED"; case LOCAL_VOICE_INTERACTION_STARTED: return "LOCAL_VOICE_INTERACTION_STARTED"; + case ATTACH_AGENT: return "ATTACH_AGENT"; } } return Integer.toString(code); @@ -1718,6 +1724,8 @@ public final class ActivityThread { case LOCAL_VOICE_INTERACTION_STARTED: handleLocalVoiceInteractionStarted((IBinder) ((SomeArgs) msg.obj).arg1, (IVoiceInteractor) ((SomeArgs) msg.obj).arg2); + case ATTACH_AGENT: + handleAttachAgent((String) msg.obj); break; } Object obj = msg.obj; @@ -2987,6 +2995,14 @@ public final class ActivityThread { } } + static final void handleAttachAgent(String agent) { + try { + VMDebug.attachAgent(agent); + } catch (IOException e) { + Slog.e(TAG, "Attaching agent failed: " + agent); + } + } + private static final ThreadLocal<Intent> sCurrentBroadcastIntent = new ThreadLocal<Intent>(); /** diff --git a/core/java/android/app/ApplicationThreadNative.java b/core/java/android/app/ApplicationThreadNative.java index 05d9d7e412f0..ad7f577f1e1d 100644 --- a/core/java/android/app/ApplicationThreadNative.java +++ b/core/java/android/app/ApplicationThreadNative.java @@ -502,6 +502,14 @@ public abstract class ApplicationThreadNative extends Binder return true; } + case ATTACH_AGENT_TRANSACTION: + { + data.enforceInterface(IApplicationThread.descriptor); + String agent = data.readString(); + attachAgent(agent); + return true; + } + case DUMP_ACTIVITY_TRANSACTION: { data.enforceInterface(IApplicationThread.descriptor); ParcelFileDescriptor fd = data.readFileDescriptor(); @@ -1305,6 +1313,14 @@ class ApplicationThreadProxy implements IApplicationThread { data.recycle(); } + public void attachAgent(String agent) throws RemoteException { + Parcel data = Parcel.obtain(); + data.writeInterfaceToken(IApplicationThread.descriptor); + data.writeString(agent); + mRemote.transact(ATTACH_AGENT_TRANSACTION, data, null, IBinder.FLAG_ONEWAY); + data.recycle(); + } + public void setCoreSettings(Bundle coreSettings) throws RemoteException { Parcel data = Parcel.obtain(); data.writeInterfaceToken(IApplicationThread.descriptor); diff --git a/core/java/android/app/IApplicationThread.java b/core/java/android/app/IApplicationThread.java index 3fa88ae674a4..bfd97f8a2b27 100644 --- a/core/java/android/app/IApplicationThread.java +++ b/core/java/android/app/IApplicationThread.java @@ -123,6 +123,7 @@ public interface IApplicationThread extends IInterface { throws RemoteException; void dumpHeap(boolean managed, String path, ParcelFileDescriptor fd) throws RemoteException; + void attachAgent(String path) throws RemoteException; void setSchedulingGroup(int group) throws RemoteException; // the package has been removed, clean up internal references static final int PACKAGE_REMOVED = 0; @@ -225,4 +226,5 @@ public interface IApplicationThread extends IInterface { int SCHEDULE_MULTI_WINDOW_CHANGED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+58; int SCHEDULE_PICTURE_IN_PICTURE_CHANGED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+59; int SCHEDULE_LOCAL_VOICE_INTERACTION_STARTED_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+60; + int ATTACH_AGENT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+61; } diff --git a/core/java/android/os/ShellCommand.java b/core/java/android/os/ShellCommand.java index fc804e592148..0b4c4c12d3df 100644 --- a/core/java/android/os/ShellCommand.java +++ b/core/java/android/os/ShellCommand.java @@ -274,7 +274,7 @@ public abstract class ShellCommand { /** * Implement parsing and execution of a command. If it isn't a command you understand, * call {@link #handleDefaultCommands(String)} and return its result as a last resort. - * User {@link #getNextOption()}, {@link #getNextArg()}, and {@link #getNextArgRequired()} + * Use {@link #getNextOption()}, {@link #getNextArg()}, and {@link #getNextArgRequired()} * to process additional command line arguments. Command output can be written to * {@link #getOutPrintWriter()} and errors to {@link #getErrPrintWriter()}. * |
