diff --git a/.idea/modules.xml b/.idea/modules.xml index a05ee8883d7a..440e155da563 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -585,6 +585,7 @@ + diff --git a/plugins/performanceTesting/backend-split/intellij.performanceTesting.backend.split.iml b/plugins/performanceTesting/backend-split/intellij.performanceTesting.backend.split.iml new file mode 100644 index 000000000000..bd5c9e272bb8 --- /dev/null +++ b/plugins/performanceTesting/backend-split/intellij.performanceTesting.backend.split.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/performanceTesting/backend-split/resources/intellij.performanceTesting.backend.split.xml b/plugins/performanceTesting/backend-split/resources/intellij.performanceTesting.backend.split.xml new file mode 100644 index 000000000000..d93684eb370b --- /dev/null +++ b/plugins/performanceTesting/backend-split/resources/intellij.performanceTesting.backend.split.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/performanceTesting/backend-split/src/com/intellij/performanceTesting/backend/split/RemoteClientSnapshotUploader.kt b/plugins/performanceTesting/backend-split/src/com/intellij/performanceTesting/backend/split/RemoteClientSnapshotUploader.kt new file mode 100644 index 000000000000..e23dce724d5b --- /dev/null +++ b/plugins/performanceTesting/backend-split/src/com/intellij/performanceTesting/backend/split/RemoteClientSnapshotUploader.kt @@ -0,0 +1,34 @@ +package com.intellij.performanceTesting.backend.split + +import com.intellij.idea.AppMode +import com.intellij.openapi.client.ClientSessionsManager +import com.intellij.openapi.diagnostic.thisLogger +import com.intellij.openapi.project.Project +import com.jetbrains.performancePlugin.PerformanceTestingBundle +import com.jetbrains.performancePlugin.profilers.SnapshotOpener +import com.jetbrains.rd.ide.model.RemoteFileAddress +import com.jetbrains.rd.ide.model.SplitIde +import com.jetbrains.rd.ide.model.fileTransferModel +import com.jetbrains.rdserver.core.protocolModel +import org.jetbrains.annotations.Nls +import java.io.File + +internal class RemoteClientSnapshotUploader : SnapshotOpener { + override fun canOpen(snapshot: File, project: Project?): Boolean { + return project != null && AppMode.isRemoteDevHost() + } + + override fun getPresentableName(): @Nls String? { + return PerformanceTestingBundle.message("profiling.load.snapshot.to.client.action.text") + } + + override fun open(snapshot: File, project: Project?) { + if (project == null) { + thisLogger().warn("Unable to load a snapshot without a project") + return + } + + val remoteFileAddress = RemoteFileAddress(snapshot.absolutePath, SplitIde.Host) + ClientSessionsManager.getProjectSession(project)?.protocolModel?.fileTransferModel?.chooseTargetDirectoryAndDownloadFile?.fire(listOf(remoteFileAddress)) + } +} \ No newline at end of file diff --git a/plugins/performanceTesting/core/resources/messages/PerformanceTestingBundle.properties b/plugins/performanceTesting/core/resources/messages/PerformanceTestingBundle.properties index f24d20304ae6..88b12e3978cc 100644 --- a/plugins/performanceTesting/core/resources/messages/PerformanceTestingBundle.properties +++ b/plugins/performanceTesting/core/resources/messages/PerformanceTestingBundle.properties @@ -3,6 +3,7 @@ profiling.capture.snapshot.success=Captured snapshot ''{0}'' is placed in user h profiling.capture.snapshot.error=Failed to capture snapshot: {0} profiling.capture.snapshot.action.showInFolder=Show in {0} profiling.capture.snapshot.action.open=Open With Intellij Profiler +profiling.load.snapshot.to.client.action.text=Download to Client Machine command.goto.finish=GoTo was executed command.inspection.extension=No files with extension: