summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPolina Koval <kovalp@google.com>2022-05-26 22:14:36 +0100
committerPolina Koval <kovalp@google.com>2022-05-26 22:31:27 +0100
commit237f1adde802c83d5819200a3b9560db1e8e17d0 (patch)
tree7fc0a8681cbdfcae440d47e38b69e11e063cb8f7
parentf34afc5c9d7e5fa9e6e66e049a8ade63f7482495 (diff)
downloadidea-237f1adde802c83d5819200a3b9560db1e8e17d0.tar.gz
Add necessary information for Apply Changes into Java Debugger process handler
Fixes: 231647054 Test: testAllInformationForApplyChangesAndPositionManger Change-Id: I132844d286b19a280927e62873fbb1c0271a2b35
-rw-r--r--android/src/com/android/tools/idea/run/debug/StartJavaDebugger.kt14
-rw-r--r--android/src/com/android/tools/idea/run/tasks/ConnectJavaDebuggerTask.java3
-rw-r--r--android/testSrc/com/android/tools/idea/run/debug/AndroidJavaDebuggerTest.kt15
3 files changed, 30 insertions, 2 deletions
diff --git a/android/src/com/android/tools/idea/run/debug/StartJavaDebugger.kt b/android/src/com/android/tools/idea/run/debug/StartJavaDebugger.kt
index d4e47b0ccdd..9b23bf481e5 100644
--- a/android/src/com/android/tools/idea/run/debug/StartJavaDebugger.kt
+++ b/android/src/com/android/tools/idea/run/debug/StartJavaDebugger.kt
@@ -19,9 +19,11 @@ import com.android.annotations.concurrency.AnyThread
import com.android.ddmlib.Client
import com.android.ddmlib.IDevice
import com.android.tools.idea.flags.StudioFlags
+import com.android.tools.idea.run.AndroidSessionInfo
import com.intellij.debugger.DebuggerManagerEx
import com.intellij.debugger.engine.JavaDebugProcess
import com.intellij.execution.ExecutionException
+import com.intellij.execution.configurations.RunConfiguration
import com.intellij.execution.runners.ExecutionEnvironment
import com.intellij.execution.runners.ProgramRunner
import com.intellij.execution.ui.ConsoleView
@@ -61,7 +63,15 @@ fun attachJavaDebuggerToClient(
runInEdt {
promise.catchError {
val session = XDebuggerManager.getInstance(project).startSession(executionEnvironment, starter)
- session.debugProcess.processHandler.startNotify()
+ val debugProcessHandler = session.debugProcess.processHandler
+ debugProcessHandler.startNotify()
+ val executor = executionEnvironment.executor
+ AndroidSessionInfo.create(debugProcessHandler,
+ session.runContentDescriptor,
+ executionEnvironment.runProfile as? RunConfiguration,
+ executor.id,
+ executor.actionName,
+ executionEnvironment.executionTarget)
promise.setResult(session as XDebugSessionImpl)
}
}
@@ -142,6 +152,8 @@ private fun getDebugProcessStarter(
val debuggerSession = DebuggerManagerEx.getInstanceEx(project).attachVirtualMachine(debugEnvironment)
?: throw ExecutionException("Unable to start debugger session")
+ debuggerSession.process.processHandler.putUserData(AndroidSessionInfo.ANDROID_DEVICE_API_LEVEL, client.device.version)
+
promise.setResult(object : XDebugProcessStarter() {
override fun start(session: XDebugSession): XDebugProcess {
return JavaDebugProcess.create(session, debuggerSession)
diff --git a/android/src/com/android/tools/idea/run/tasks/ConnectJavaDebuggerTask.java b/android/src/com/android/tools/idea/run/tasks/ConnectJavaDebuggerTask.java
index 1946e37af7a..3c863edfd4d 100644
--- a/android/src/com/android/tools/idea/run/tasks/ConnectJavaDebuggerTask.java
+++ b/android/src/com/android/tools/idea/run/tasks/ConnectJavaDebuggerTask.java
@@ -98,7 +98,8 @@ public class ConnectJavaDebuggerTask extends ConnectDebuggerTaskBase {
return Unit.INSTANCE;
}
).onSuccess(session -> {
- processHandler.copyUserDataTo(session.getDebugProcess().getProcessHandler());
+ ProcessHandler debugProcessHandler = session.getDebugProcess().getProcessHandler();
+ captureLogcatOutput(client, debugProcessHandler);
session.showSessionTab();
});
return null;
diff --git a/android/testSrc/com/android/tools/idea/run/debug/AndroidJavaDebuggerTest.kt b/android/testSrc/com/android/tools/idea/run/debug/AndroidJavaDebuggerTest.kt
index 1f0a905d4cc..a876cc8b2df 100644
--- a/android/testSrc/com/android/tools/idea/run/debug/AndroidJavaDebuggerTest.kt
+++ b/android/testSrc/com/android/tools/idea/run/debug/AndroidJavaDebuggerTest.kt
@@ -20,6 +20,7 @@ import com.android.sdklib.AndroidVersion
import com.android.testutils.MockitoKt.any
import com.android.testutils.MockitoKt.eq
import com.android.tools.idea.flags.StudioFlags
+import com.android.tools.idea.run.AndroidSessionInfo
import com.android.tools.idea.run.configuration.execution.RunnableClientsService
import com.android.tools.idea.run.editor.AndroidJavaDebugger
import com.google.common.truth.Truth.assertThat
@@ -84,6 +85,20 @@ class AndroidJavaDebuggerTest {
}
@Test
+ fun testAllInformationForApplyChangesAndPositionManger() {
+ val session = attachJavaDebuggerToClient(project, client, executionEnvironment, null,
+ onDebugProcessDestroyed = { device -> device.forceStop(APP_PACKAGE) }).blockingGet(10,
+ TimeUnit.SECONDS)
+ val processHandler = session!!.debugProcess.processHandler
+ // For AndroidPositionManager.
+ assertThat(processHandler.getUserData(AndroidSessionInfo.ANDROID_DEVICE_API_LEVEL)).isEqualTo(AndroidVersion(26))
+ // For Apply Changes.
+ val sessionInfo = processHandler.getUserData(AndroidSessionInfo.KEY)!!
+ assertThat(sessionInfo.processHandler).isEqualTo(processHandler)
+ assertThat(sessionInfo.executor).isEqualTo(executionEnvironment.executor)
+ }
+
+ @Test
fun testSessionCreated() {
val session = attachJavaDebuggerToClient(project, client, executionEnvironment, null,
onDebugProcessDestroyed = { device -> device.forceStop(APP_PACKAGE) }).blockingGet(10,