Skip to content

Commit 4fc1ad7

Browse files
committed
Add draft code for responding to DTD navigate to code request
1 parent b39a567 commit 4fc1ad7

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

flutter-idea/src/io/flutter/inspector/InspectorService.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
package io.flutter.inspector;
77

8+
import com.google.api.client.json.Json;
89
import com.google.common.base.Joiner;
910
import com.google.gson.JsonArray;
1011
import com.google.gson.JsonElement;
@@ -29,14 +30,17 @@
2930
import com.intellij.xdebugger.XSourcePosition;
3031
import com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider;
3132
import com.intellij.xdebugger.impl.XSourcePositionImpl;
33+
import com.jetbrains.lang.dart.ide.toolingDaemon.DartToolingDaemonService;
3234
import com.jetbrains.lang.dart.psi.DartCallExpression;
3335
import com.jetbrains.lang.dart.psi.DartExpression;
3436
import com.jetbrains.lang.dart.psi.DartReferenceExpression;
3537
import io.flutter.bazel.Workspace;
3638
import io.flutter.bazel.WorkspaceCache;
39+
import io.flutter.dart.DtdUtils;
3740
import io.flutter.pub.PubRoot;
3841
import io.flutter.run.FlutterDebugProcess;
3942
import io.flutter.run.daemon.FlutterApp;
43+
import io.flutter.sdk.FlutterSdk;
4044
import io.flutter.utils.JsonUtils;
4145
import io.flutter.utils.StreamSubscription;
4246
import io.flutter.utils.VmServiceListenerAdapter;
@@ -61,6 +65,7 @@
6165
import java.util.List;
6266
import java.util.*;
6367
import java.util.concurrent.CompletableFuture;
68+
import java.util.concurrent.Executors;
6469
import java.util.concurrent.locks.ReentrantReadWriteLock;
6570
import java.util.function.BiConsumer;
6671
import java.util.function.Supplier;
@@ -251,7 +256,29 @@ private InspectorService(@NotNull FlutterApp app,
251256

252257
clients = new HashSet<>();
253258

254-
vmService.addVmServiceListener(new VmServiceListenerAdapter() {
259+
// This code hasn't been tested yet, as it requires the Dart plugin to be updated to this PR: https://github.com/JetBrains/intellij-plugins/pull/920.
260+
final FlutterSdk sdk = FlutterSdk.getFlutterSdk(app.getProject());
261+
if (sdk != null && sdk.getVersion().canUseDtd()) {
262+
Thread t1 = new Thread(() -> {
263+
CompletableFuture<DartToolingDaemonService> future = new DtdUtils().readyDtdService(app.getProject());
264+
future.thenApply((dtdService) -> {
265+
JsonObject capabilities = new JsonObject();
266+
JsonArray capabilitiesList = new JsonArray();
267+
capabilitiesList.add("file");
268+
capabilities.add("supportedSchemes", capabilitiesList);
269+
270+
dtdService.registerServiceMethod("Editor", "navigateToCode", capabilities, new DartToolingDaemonRequestHandler() {
271+
public DartToolingDaemonResponse handleRequest(JsonObject request) {
272+
// Extract request params
273+
// Then replicate ToolEvent actions below
274+
}
275+
});
276+
});
277+
});
278+
t1.start();
279+
}
280+
281+
vmService.addVmServiceListener(new VmServiceListenerAdapter() {
255282
@Override
256283
public void received(String streamId, Event event) {
257284
onVmServiceReceived(streamId, event);

0 commit comments

Comments
 (0)