Skip to content

Commit 6c0e889

Browse files
author
Anna Gringauze
committed
format
1 parent b6f7b7d commit 6c0e889

15 files changed

+89
-28
lines changed

dwds/lib/dwds.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import 'src/services/expression_compiler.dart';
2727

2828
export 'src/connections/app_connection.dart' show AppConnection;
2929
export 'src/connections/debug_connection.dart' show DebugConnection;
30+
export 'src/debugging/metadata/module_metadata.dart' show ModuleInfo;
3031
export 'src/debugging/metadata/provider.dart'
3132
show MetadataProvider, AbsoluteImportUriException;
3233
export 'src/events.dart' show DwdsEvent;
@@ -46,7 +47,7 @@ export 'src/readers/proxy_server_asset_reader.dart' show ProxyServerAssetReader;
4647
export 'src/servers/devtools.dart';
4748
export 'src/services/chrome_proxy_service.dart' show ChromeDebugException;
4849
export 'src/services/expression_compiler.dart'
49-
show ExpressionCompilationResult, ExpressionCompiler, ModuleInfo;
50+
show ExpressionCompilationResult, ExpressionCompiler;
5051
export 'src/services/expression_compiler_service.dart'
5152
show ExpressionCompilerService;
5253

dwds/lib/src/debugging/metadata/module_metadata.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,3 +176,14 @@ class ModuleMetadata {
176176
};
177177
}
178178
}
179+
180+
class ModuleInfo {
181+
final String fullDillPath;
182+
final String summaryPath;
183+
final String symbolsPath;
184+
185+
ModuleInfo(this.fullDillPath, this.summaryPath, this.symbolsPath);
186+
187+
@override
188+
String toString() => '{ $fullDillPath, $summaryPath, $symbolsPath }';
189+
}

dwds/lib/src/debugging/metadata/provider.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ class MetadataProvider {
6565
'dart:svg',
6666
'dart:web_audio',
6767
'dart:web_gl',
68-
'dart:web_sql'
68+
'dart:web_sql',
69+
'dart:ui',
6970
];
7071

7172
MetadataProvider(this.entrypoint, this._assetReader)

dwds/lib/src/loaders/build_runner_require.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,14 @@ class BuildRunnerRequireStrategyProvider {
9292
for (var module in modules) {
9393
var serverPath = await _serverPathForModule(metadataProvider, module);
9494
result[module] = ModuleInfo(
95-
// TODO: Save locations of full kernel files in ddc metadata.
96-
// Issue: https://github.com/dart-lang/sdk/issues/43684
97-
// TODO: Change these to URIs instead of paths when the SDK supports
98-
// it.
99-
p.setExtension(serverPath, '.full.dill'),
100-
p.setExtension(serverPath, '.dill'));
95+
// TODO: Save locations of full kernel files in ddc metadata.
96+
// Issue: https://github.com/dart-lang/sdk/issues/43684
97+
// TODO: Change these to URIs instead of paths when the SDK supports
98+
// it.
99+
p.setExtension(serverPath, '.full.dill'),
100+
p.setExtension(serverPath, '.dill'),
101+
p.setExtension(serverPath, '.symbols'),
102+
);
101103
}
102104
return result;
103105
}

dwds/lib/src/loaders/frontend_server_require.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,12 @@ class FrontendServerRequireStrategyProvider {
6565
for (var module in modules.keys) {
6666
var modulePath = modules[module];
6767
result[module] = ModuleInfo(
68-
// TODO: Save locations of full kernel files in ddc metadata.
69-
// Issue: https://github.com/dart-lang/sdk/issues/43684
70-
p.setExtension(modulePath, '.full.dill'),
71-
p.setExtension(modulePath, '.dill'));
68+
// TODO: Save locations of full kernel files in ddc metadata.
69+
// Issue: https://github.com/dart-lang/sdk/issues/43684
70+
p.setExtension(modulePath, '.full.dill'),
71+
p.setExtension(modulePath, '.dill'),
72+
p.setExtension(modulePath, '.symbols'),
73+
);
7274
}
7375
return result;
7476
}

dwds/lib/src/readers/asset_reader.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ abstract class AssetReader {
1717
/// Returns the contents for the merged metadata output at the provided path.
1818
Future<String> metadataContents(String serverPath);
1919

20+
/// Returns the contents for debug symbols at the provided path.
21+
Future<String> symbolsContents(String serverPath);
22+
2023
/// Closes connections
2124
Future<void> close();
2225
}

dwds/lib/src/readers/frontend_server_asset_reader.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,12 @@ class FrontendServerAssetReader implements AssetReader {
111111
throw UnimplementedError();
112112
}
113113

114+
@override
115+
Future<String> symbolsContents(String serverPath) {
116+
// TODO(grouma) - Implement the debug symbols reader.
117+
throw UnimplementedError();
118+
}
119+
114120
@override
115121
Future<void> close() async {}
116122
}

dwds/lib/src/readers/proxy_server_asset_reader.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ class ProxyServerAssetReader implements AssetReader {
7171
Future<String> metadataContents(String serverPath) =>
7272
_readResource(serverPath);
7373

74+
@override
75+
Future<String> symbolsContents(String serverPath) =>
76+
_readResource(serverPath);
77+
7478
@override
7579
Future<void> close() async => _client.close();
7680
}

dwds/lib/src/services/expression_compiler.dart

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
// @dart = 2.9
66

7+
import '../debugging/metadata/module_metadata.dart';
8+
79
/// Result of compilation of dart expression to JavaScript
810
class ExpressionCompilationResult {
911
final bool isError;
@@ -71,13 +73,3 @@ abstract class ExpressionCompiler {
7173
/// May be called multiple times and always before [updateDependencies].
7274
Future<void> initialize({String moduleFormat, bool soundNullSafety});
7375
}
74-
75-
class ModuleInfo {
76-
final String fullDillPath;
77-
final String summaryPath;
78-
79-
ModuleInfo(this.fullDillPath, this.summaryPath);
80-
81-
@override
82-
String toString() => '{ $fullDillPath, $summaryPath }';
83-
}

dwds/lib/src/services/expression_compiler_service.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import 'package:logging/logging.dart';
1313
import 'package:path/path.dart' as p;
1414
import 'package:shelf/shelf.dart';
1515

16+
import '../debugging/metadata/module_metadata.dart';
1617
import '../utilities/dart_uri.dart';
1718
import 'expression_compiler.dart';
1819

dwds/test/debugger_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ class FakeAssetReader implements AssetReader {
5050
Future<String> metadataContents(String serverPath) =>
5151
throw UnimplementedError();
5252

53+
@override
54+
Future<String> symbolsContents(String serverPath) =>
55+
throw UnimplementedError();
56+
5357
@override
5458
Future<String> sourceMapContents(String serverPath) async =>
5559
'{"version":3,"sourceRoot":"","sources":["main.dart"],"names":[],'

dwds/test/expression_compiler_service_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ void main() async {
141141
expect(output.stream,
142142
emitsThrough(contains('[INFO] ExpressionCompilerService: Stopped.')));
143143

144-
var result = await service
145-
.updateDependencies({'try': ModuleInfo('try.full.dill', 'try.dill')});
144+
var result = await service.updateDependencies(
145+
{'try': ModuleInfo('try.full.dill', 'try.dill', 'try.js.symbols')});
146146
expect(result, true, reason: 'failed to update dependencies');
147147

148148
final compilationResult = await service.compileExpressionToJs(

dwds/test/metadata_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ class FakeAssetReader implements AssetReader {
5151
Future<String> sourceMapContents(String serverPath) =>
5252
throw UnimplementedError();
5353

54+
@override
55+
Future<String> symbolsContents(String serverPath) =>
56+
throw UnimplementedError();
57+
5458
@override
5559
Future<void> close() async {}
5660
}

frontend_server_common/lib/src/asset_server.dart

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ class TestAssetServer implements AssetReader {
6565
final Map<String, Uint8List> _files = <String, Uint8List>{};
6666
final Map<String, Uint8List> _sourcemaps = <String, Uint8List>{};
6767
final Map<String, Uint8List> _metadata = <String, Uint8List>{};
68+
final Map<String, Uint8List> _symbols = <String, Uint8List>{};
69+
6870
String _mergedMetadata;
6971
// ignore: deprecated_member_use
7072
final PackageConfig _packages;
@@ -150,12 +152,13 @@ class TestAssetServer implements AssetReader {
150152
/// Update the in-memory asset server with the provided source and manifest files.
151153
///
152154
/// Returns a list of updated modules.
153-
List<String> write(
154-
File codeFile, File manifestFile, File sourcemapFile, File metadataFile) {
155+
List<String> write(File codeFile, File manifestFile, File sourcemapFile,
156+
File metadataFile, File symbolsFile) {
155157
var modules = <String>[];
156158
var codeBytes = codeFile.readAsBytesSync();
157159
var sourcemapBytes = sourcemapFile.readAsBytesSync();
158160
var metadataBytes = metadataFile.readAsBytesSync();
161+
var symbolsBytes = symbolsFile.readAsBytesSync();
159162
var manifest =
160163
castStringKeyedMap(json.decode(manifestFile.readAsStringSync()));
161164
for (var filePath in manifest.keys) {
@@ -168,9 +171,11 @@ class TestAssetServer implements AssetReader {
168171
var sourcemapOffsets =
169172
(offsets['sourcemap'] as List<dynamic>).cast<int>();
170173
var metadataOffsets = (offsets['metadata'] as List<dynamic>).cast<int>();
174+
var symbolsOffsets = (offsets['symbols'] as List<dynamic>).cast<int>();
171175
if (codeOffsets.length != 2 ||
172176
sourcemapOffsets.length != 2 ||
173-
metadataOffsets.length != 2) {
177+
metadataOffsets.length != 2 ||
178+
symbolsOffsets.length != 2) {
174179
_printTrace('Invalid manifest byte offsets: $offsets');
175180
continue;
176181
}
@@ -214,6 +219,19 @@ class TestAssetServer implements AssetReader {
214219
);
215220
_metadata['$filePath.metadata'] = metadataView;
216221

222+
var symbolsStart = symbolsOffsets[0];
223+
var symbolsEnd = symbolsOffsets[1];
224+
if (symbolsStart < 0 || symbolsEnd > symbolsBytes.lengthInBytes) {
225+
_printTrace('Invalid byte index: [$symbolsStart, $symbolsEnd]');
226+
continue;
227+
}
228+
var symbolsView = Uint8List.view(
229+
symbolsBytes.buffer,
230+
symbolsStart,
231+
symbolsEnd - symbolsStart,
232+
);
233+
_metadata['$filePath.symbols'] = symbolsView;
234+
217235
modules.add(filePath);
218236
}
219237

@@ -286,6 +304,15 @@ class TestAssetServer implements AssetReader {
286304
}
287305
return null;
288306
}
307+
308+
@override
309+
Future<String> symbolsContents(String serverPath) async {
310+
var path = '/$serverPath';
311+
if (_symbols.containsKey(path)) {
312+
return utf8.decode(_symbols[path]);
313+
}
314+
return null;
315+
}
289316
}
290317

291318
/// Given a data structure which is a Map of String to dynamic values, return

frontend_server_common/lib/src/devfs.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ class WebDevFS {
114114
File manifestFile;
115115
File sourcemapFile;
116116
File metadataFile;
117+
File symbolsFile;
117118
List<String> modules;
118119
try {
119120
var parentDirectory = fileSystem.directory(outputDirectoryPath);
@@ -125,8 +126,10 @@ class WebDevFS {
125126
parentDirectory.childFile('${compilerOutput.outputFilename}.map');
126127
metadataFile = parentDirectory
127128
.childFile('${compilerOutput.outputFilename}.metadata');
129+
symbolsFile =
130+
parentDirectory.childFile('${compilerOutput.outputFilename}.symbols');
128131
modules = assetServer.write(
129-
codeFile, manifestFile, sourcemapFile, metadataFile);
132+
codeFile, manifestFile, sourcemapFile, metadataFile, symbolsFile);
130133
} on FileSystemException catch (err) {
131134
throw Exception('Failed to load recompiled sources:\n$err');
132135
}

0 commit comments

Comments
 (0)