Skip to content

Commit ae9ac9f

Browse files
author
Jonah Williams
authored
[flutter_tools] support starting in canvaskit with FLUTTER_WEB_USE_SKIA=true (flutter#60708)
1 parent 2f43aea commit ae9ac9f

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

packages/flutter_tools/lib/src/build_runner/devfs_web.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,9 @@ class WebDevFS implements DevFS {
660660
expressionCompiler,
661661
testMode: testMode,
662662
);
663+
if (buildInfo.dartDefines.contains('FLUTTER_WEB_USE_SKIA=true')) {
664+
webAssetServer.canvasKitRendering = true;
665+
}
663666
if (hostname == 'any') {
664667
_baseUri = Uri.http('localhost:$port', '');
665668
} else {

packages/flutter_tools/test/general.shard/web/devfs_web_test.dart

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,9 @@ void main() {
486486
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'BELLOW');
487487

488488
// Toggle CanvasKit
489+
expect(webDevFS.webAssetServer.canvasKitRendering, false);
489490
webDevFS.webAssetServer.canvasKitRendering = true;
491+
490492
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'OL');
491493
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'CHUM');
492494

@@ -650,6 +652,55 @@ void main() {
650652
expect(uri, Uri.http('localhost:0', ''));
651653
await webDevFS.destroy();
652654
}));
655+
656+
test('Can start web server with canvaskit enabled', () => testbed.run(() async {
657+
globals.fs.file('.packages').writeAsStringSync('\n');
658+
final File outputFile = globals.fs.file(globals.fs.path.join('lib', 'main.dart'))
659+
..createSync(recursive: true);
660+
outputFile.parent.childFile('a.sources').writeAsStringSync('');
661+
outputFile.parent.childFile('a.json').writeAsStringSync('{}');
662+
outputFile.parent.childFile('a.map').writeAsStringSync('{}');
663+
outputFile.parent.childFile('.packages').writeAsStringSync('\n');
664+
665+
final ResidentCompiler residentCompiler = MockResidentCompiler();
666+
when(residentCompiler.recompile(
667+
any,
668+
any,
669+
outputPath: anyNamed('outputPath'),
670+
packageConfig: anyNamed('packageConfig'),
671+
)).thenAnswer((Invocation invocation) async {
672+
return const CompilerOutput('a', 0, <Uri>[]);
673+
});
674+
675+
final WebDevFS webDevFS = WebDevFS(
676+
hostname: 'localhost',
677+
port: 0,
678+
packagesFilePath: '.packages',
679+
urlTunneller: null,
680+
useSseForDebugProxy: true,
681+
buildInfo: const BuildInfo(
682+
BuildMode.debug,
683+
'',
684+
treeShakeIcons: false,
685+
dartDefines: <String>[
686+
'FLUTTER_WEB_USE_SKIA=true',
687+
]
688+
),
689+
enableDwds: false,
690+
entrypoint: Uri.base,
691+
testMode: true,
692+
expressionCompiler: null,
693+
chromiumLauncher: null,
694+
);
695+
webDevFS.requireJS.createSync(recursive: true);
696+
webDevFS.stackTraceMapper.createSync(recursive: true);
697+
698+
await webDevFS.create();
699+
700+
expect(webDevFS.webAssetServer.canvasKitRendering, true);
701+
702+
await webDevFS.destroy();
703+
}));
653704
}
654705

655706
class MockHttpServer extends Mock implements HttpServer {}

0 commit comments

Comments
 (0)