blob: 2a331cb3811e62adf7361623eae1846033f5b45f [file] [log] [blame]
// Copyright 2024 The Flutter Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd.
import 'dart:async';
import 'package:devtools_app/devtools_app.dart';
import 'package:devtools_app/src/standalone_ui/vs_code/flutter_panel.dart';
import 'package:devtools_app_shared/service.dart';
import 'package:devtools_app_shared/ui.dart';
import 'package:devtools_app_shared/utils.dart';
import 'package:devtools_test/devtools_test.dart';
import 'package:dtd/dtd.dart';
import 'package:flutter/material.dart';
import 'package:stager/stager.dart';
import 'editor_service/simulated_editor.dart';
import 'mock_editor_widget.dart';
import 'shared/common_ui.dart';
import 'shared/utils.dart';
/// To run, use the "standalone_ui/editor_sidebar" launch configuration with the
/// `devtools/packages/` folder open in VS Code, or run:
///
/// flutter run -t test/test_infra/scenes/standalone_ui/editor_sidebar.stager_app.g.dart -d chrome
class EditorSidebarScene extends Scene {
late Stream<String> clientLog;
late DartToolingDaemon clientDtd;
late SimulatedEditor editor;
@override
Widget build(BuildContext context) {
return IdeThemedMaterialApp(
home: Scaffold(
body: MockEditorWidget(
editor: editor,
clientLog: clientLog,
child: EditorSidebarPanel(clientDtd),
),
),
);
}
@override
String get title => '$EditorSidebarScene';
@override
Future<void> setUp() async {
setStagerMode();
setGlobal(
DevToolsEnvironmentParameters,
ExternalDevToolsEnvironmentParameters(),
);
setGlobal(DTDManager, MockDTDManager());
setGlobal(IdeTheme, IdeTheme());
setGlobal(PreferencesController, PreferencesController());
// We assume a DTD is available on 8500. There's a VS Code task that
// launches this as part of the standalone_ui/editor_sidebar config.
// TODO(dantup): Add a way for the mock editor to set workspace roots so
// the extensions parts can work in the sidebar.
final dtdUri = Uri.parse('ws://127.0.0.1:8500/');
final connection = await createLoggedWebSocketChannel(dtdUri);
clientLog = connection.log;
clientDtd = DartToolingDaemon.fromStreamChannel(connection.channel);
editor = SimulatedEditor(dtdUri);
}
}