[web] Cleanup everything HTML from the flutter tool and test harness (#162836)
- Delete code paths that handle screenshots for the HTML renderer - Delete artifact enums for the HTML/AUTO renderers (and all their usages). - Remove HTML/AUTO renderers warnings. - Delete the HTML/AUTO renderer enums (and all their usages). - Delete tests for all the above.
This commit is contained in:
parent
4e6e24f729
commit
5fa05ab6df
@ -59,69 +59,37 @@ class MatchesGoldenFile extends AsyncMatcher {
|
|||||||
return 'matched too many widgets';
|
return 'matched too many widgets';
|
||||||
}
|
}
|
||||||
final Element element = elements.single;
|
final Element element = elements.single;
|
||||||
final RenderObject renderObject = _findRepaintBoundary(element);
|
|
||||||
final Size size = renderObject.paintBounds.size;
|
|
||||||
final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.instance;
|
|
||||||
final ui.FlutterView view = binding.platformDispatcher.implicitView!;
|
|
||||||
final RenderView renderView = binding.renderViews.firstWhere(
|
|
||||||
(RenderView r) => r.flutterView == view,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (isSkiaWeb) {
|
// In CanvasKit and Skwasm, use Layer.toImage to generate the screenshot.
|
||||||
// In CanvasKit and Skwasm, use Layer.toImage to generate the screenshot.
|
final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.instance;
|
||||||
final TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.instance;
|
return binding.runAsync<String?>(() async {
|
||||||
return binding.runAsync<String?>(() async {
|
assert(element.renderObject != null);
|
||||||
assert(element.renderObject != null);
|
RenderObject renderObject = element.renderObject!;
|
||||||
RenderObject renderObject = element.renderObject!;
|
while (!renderObject.isRepaintBoundary) {
|
||||||
while (!renderObject.isRepaintBoundary) {
|
renderObject = renderObject.parent!;
|
||||||
renderObject = renderObject.parent!;
|
}
|
||||||
|
assert(!renderObject.debugNeedsPaint);
|
||||||
|
final OffsetLayer layer = renderObject.debugLayer! as OffsetLayer;
|
||||||
|
final ui.Image image = await layer.toImage(renderObject.paintBounds);
|
||||||
|
try {
|
||||||
|
final ByteData? bytes = await image.toByteData(format: ui.ImageByteFormat.png);
|
||||||
|
if (bytes == null) {
|
||||||
|
return 'could not encode screenshot.';
|
||||||
}
|
}
|
||||||
assert(!renderObject.debugNeedsPaint);
|
|
||||||
final OffsetLayer layer = renderObject.debugLayer! as OffsetLayer;
|
|
||||||
final ui.Image image = await layer.toImage(renderObject.paintBounds);
|
|
||||||
try {
|
|
||||||
final ByteData? bytes = await image.toByteData(format: ui.ImageByteFormat.png);
|
|
||||||
if (bytes == null) {
|
|
||||||
return 'could not encode screenshot.';
|
|
||||||
}
|
|
||||||
if (autoUpdateGoldenFiles) {
|
|
||||||
await goldenFileComparator.update(key, bytes.buffer.asUint8List());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
final bool success = await goldenFileComparator.compare(
|
|
||||||
bytes.buffer.asUint8List(),
|
|
||||||
key,
|
|
||||||
);
|
|
||||||
return success ? null : 'does not match';
|
|
||||||
} on TestFailure catch (ex) {
|
|
||||||
return ex.message;
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
image.dispose();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
// In the HTML renderer, we don't have the ability to render an element
|
|
||||||
// to an image directly. Instead, we will use `window.render()` to render
|
|
||||||
// only the element being requested, and send a request to the test server
|
|
||||||
// requesting it to take a screenshot through the browser's debug interface.
|
|
||||||
_renderElement(view, renderObject);
|
|
||||||
final String? result = await binding.runAsync<String?>(() async {
|
|
||||||
if (autoUpdateGoldenFiles) {
|
if (autoUpdateGoldenFiles) {
|
||||||
await webGoldenComparator.update(size.width, size.height, key);
|
await goldenFileComparator.update(key, bytes.buffer.asUint8List());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
final bool success = await webGoldenComparator.compare(size.width, size.height, key);
|
final bool success = await goldenFileComparator.compare(bytes.buffer.asUint8List(), key);
|
||||||
return success ? null : 'does not match';
|
return success ? null : 'does not match';
|
||||||
} on TestFailure catch (ex) {
|
} on TestFailure catch (ex) {
|
||||||
return ex.message;
|
return ex.message;
|
||||||
}
|
}
|
||||||
});
|
} finally {
|
||||||
_renderElement(view, renderView);
|
image.dispose();
|
||||||
return result;
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -130,27 +98,3 @@ class MatchesGoldenFile extends AsyncMatcher {
|
|||||||
return description.add('one widget whose rasterized image matches golden image "$testNameUri"');
|
return description.add('one widget whose rasterized image matches golden image "$testNameUri"');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderObject _findRepaintBoundary(Element element) {
|
|
||||||
assert(element.renderObject != null);
|
|
||||||
RenderObject renderObject = element.renderObject!;
|
|
||||||
while (!renderObject.isRepaintBoundary) {
|
|
||||||
renderObject = renderObject.parent!;
|
|
||||||
}
|
|
||||||
return renderObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
void _renderElement(ui.FlutterView window, RenderObject renderObject) {
|
|
||||||
assert(renderObject.debugLayer != null);
|
|
||||||
final Layer layer = renderObject.debugLayer!;
|
|
||||||
final ui.SceneBuilder sceneBuilder = ui.SceneBuilder();
|
|
||||||
if (layer is OffsetLayer) {
|
|
||||||
sceneBuilder.pushOffset(-layer.offset.dx, -layer.offset.dy);
|
|
||||||
}
|
|
||||||
// ignore: invalid_use_of_visible_for_testing_member, invalid_use_of_protected_member
|
|
||||||
layer.updateSubtreeNeedsAddToScene();
|
|
||||||
// ignore: invalid_use_of_protected_member
|
|
||||||
layer.addToScene(sceneBuilder);
|
|
||||||
sceneBuilder.pop();
|
|
||||||
window.render(sceneBuilder.build());
|
|
||||||
}
|
|
||||||
|
@ -103,21 +103,14 @@ enum HostArtifact {
|
|||||||
|
|
||||||
/// The precompiled SDKs and sourcemaps for web debug builds with the AMD module system.
|
/// The precompiled SDKs and sourcemaps for web debug builds with the AMD module system.
|
||||||
// TODO(markzipan): delete these when DDC's AMD module system is deprecated, https://github.com/flutter/flutter/issues/142060.
|
// TODO(markzipan): delete these when DDC's AMD module system is deprecated, https://github.com/flutter/flutter/issues/142060.
|
||||||
webPrecompiledAmdSdk,
|
|
||||||
webPrecompiledAmdSdkSourcemaps,
|
|
||||||
webPrecompiledAmdCanvaskitSdk,
|
webPrecompiledAmdCanvaskitSdk,
|
||||||
webPrecompiledAmdCanvaskitSdkSourcemaps,
|
webPrecompiledAmdCanvaskitSdkSourcemaps,
|
||||||
webPrecompiledAmdCanvaskitAndHtmlSdk,
|
|
||||||
webPrecompiledAmdCanvaskitAndHtmlSdkSourcemaps,
|
|
||||||
|
|
||||||
/// The precompiled SDKs and sourcemaps for web debug builds with the DDC
|
/// The precompiled SDKs and sourcemaps for web debug builds with the DDC
|
||||||
/// library bundle module system.
|
/// library bundle module system. Only SDKs built with sound null-safety are
|
||||||
webPrecompiledDdcLibraryBundleSdk,
|
/// provided here.
|
||||||
webPrecompiledDdcLibraryBundleSdkSourcemaps,
|
|
||||||
webPrecompiledDdcLibraryBundleCanvaskitSdk,
|
webPrecompiledDdcLibraryBundleCanvaskitSdk,
|
||||||
webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps,
|
webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps,
|
||||||
webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdk,
|
|
||||||
webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdkSourcemaps,
|
|
||||||
|
|
||||||
iosDeploy,
|
iosDeploy,
|
||||||
idevicesyslog,
|
idevicesyslog,
|
||||||
@ -263,19 +256,11 @@ String _hostArtifactToFileName(HostArtifact artifact, Platform platform) {
|
|||||||
return 'dart2js_platform.dill';
|
return 'dart2js_platform.dill';
|
||||||
case HostArtifact.flutterWebLibrariesJson:
|
case HostArtifact.flutterWebLibrariesJson:
|
||||||
return 'libraries.json';
|
return 'libraries.json';
|
||||||
case HostArtifact.webPrecompiledAmdSdk:
|
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitSdk:
|
case HostArtifact.webPrecompiledAmdCanvaskitSdk:
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdk:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleSdk:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk:
|
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk:
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdk:
|
|
||||||
return 'dart_sdk.js';
|
return 'dart_sdk.js';
|
||||||
case HostArtifact.webPrecompiledAmdSdkSourcemaps:
|
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps:
|
case HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps:
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdkSourcemaps:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleSdkSourcemaps:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps:
|
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps:
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdkSourcemaps:
|
|
||||||
return 'dart_sdk.js.map';
|
return 'dart_sdk.js.map';
|
||||||
case HostArtifact.impellerc:
|
case HostArtifact.impellerc:
|
||||||
return 'impellerc$exe';
|
return 'impellerc$exe';
|
||||||
@ -459,15 +444,6 @@ class CachedArtifacts implements Artifacts {
|
|||||||
_hostArtifactToFileName(artifact, _platform),
|
_hostArtifactToFileName(artifact, _platform),
|
||||||
);
|
);
|
||||||
return _fileSystem.file(path);
|
return _fileSystem.file(path);
|
||||||
case HostArtifact.webPrecompiledAmdSdk:
|
|
||||||
case HostArtifact.webPrecompiledAmdSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'amd',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitSdk:
|
case HostArtifact.webPrecompiledAmdCanvaskitSdk:
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps:
|
case HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps:
|
||||||
final String path = _fileSystem.path.join(
|
final String path = _fileSystem.path.join(
|
||||||
@ -477,24 +453,6 @@ class CachedArtifacts implements Artifacts {
|
|||||||
_hostArtifactToFileName(artifact, _platform),
|
_hostArtifactToFileName(artifact, _platform),
|
||||||
);
|
);
|
||||||
return _fileSystem.file(path);
|
return _fileSystem.file(path);
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdk:
|
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'amd-canvaskit-html',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleSdk:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'ddcLibraryBundle',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk:
|
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk:
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps:
|
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps:
|
||||||
final String path = _fileSystem.path.join(
|
final String path = _fileSystem.path.join(
|
||||||
@ -504,15 +462,6 @@ class CachedArtifacts implements Artifacts {
|
|||||||
_hostArtifactToFileName(artifact, _platform),
|
_hostArtifactToFileName(artifact, _platform),
|
||||||
);
|
);
|
||||||
return _fileSystem.file(path);
|
return _fileSystem.file(path);
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdk:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'ddcLibraryBundle-canvaskit-html',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.idevicesyslog:
|
case HostArtifact.idevicesyslog:
|
||||||
case HostArtifact.idevicescreenshot:
|
case HostArtifact.idevicescreenshot:
|
||||||
final String artifactFileName = _hostArtifactToFileName(artifact, _platform);
|
final String artifactFileName = _hostArtifactToFileName(artifact, _platform);
|
||||||
@ -1162,15 +1111,6 @@ class CachedLocalEngineArtifacts implements Artifacts {
|
|||||||
_hostArtifactToFileName(artifact, _platform),
|
_hostArtifactToFileName(artifact, _platform),
|
||||||
);
|
);
|
||||||
return _fileSystem.file(path);
|
return _fileSystem.file(path);
|
||||||
case HostArtifact.webPrecompiledAmdSdk:
|
|
||||||
case HostArtifact.webPrecompiledAmdSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'amd',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitSdk:
|
case HostArtifact.webPrecompiledAmdCanvaskitSdk:
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps:
|
case HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps:
|
||||||
final String path = _fileSystem.path.join(
|
final String path = _fileSystem.path.join(
|
||||||
@ -1180,24 +1120,6 @@ class CachedLocalEngineArtifacts implements Artifacts {
|
|||||||
_hostArtifactToFileName(artifact, _platform),
|
_hostArtifactToFileName(artifact, _platform),
|
||||||
);
|
);
|
||||||
return _fileSystem.file(path);
|
return _fileSystem.file(path);
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdk:
|
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'amd-canvaskit-html',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleSdk:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'ddcLibraryBundle',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk:
|
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk:
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps:
|
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps:
|
||||||
final String path = _fileSystem.path.join(
|
final String path = _fileSystem.path.join(
|
||||||
@ -1207,15 +1129,6 @@ class CachedLocalEngineArtifacts implements Artifacts {
|
|||||||
_hostArtifactToFileName(artifact, _platform),
|
_hostArtifactToFileName(artifact, _platform),
|
||||||
);
|
);
|
||||||
return _fileSystem.file(path);
|
return _fileSystem.file(path);
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdk:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'ddcLibraryBundle-canvaskit-html',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.idevicesyslog:
|
case HostArtifact.idevicesyslog:
|
||||||
case HostArtifact.idevicescreenshot:
|
case HostArtifact.idevicescreenshot:
|
||||||
final String artifactFileName = _hostArtifactToFileName(artifact, _platform);
|
final String artifactFileName = _hostArtifactToFileName(artifact, _platform);
|
||||||
@ -1569,15 +1482,6 @@ class CachedLocalWebSdkArtifacts implements Artifacts {
|
|||||||
_hostArtifactToFileName(artifact, _platform),
|
_hostArtifactToFileName(artifact, _platform),
|
||||||
);
|
);
|
||||||
return _fileSystem.file(path);
|
return _fileSystem.file(path);
|
||||||
case HostArtifact.webPrecompiledAmdSdk:
|
|
||||||
case HostArtifact.webPrecompiledAmdSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'amd',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitSdk:
|
case HostArtifact.webPrecompiledAmdCanvaskitSdk:
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps:
|
case HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps:
|
||||||
final String path = _fileSystem.path.join(
|
final String path = _fileSystem.path.join(
|
||||||
@ -1587,24 +1491,6 @@ class CachedLocalWebSdkArtifacts implements Artifacts {
|
|||||||
_hostArtifactToFileName(artifact, _platform),
|
_hostArtifactToFileName(artifact, _platform),
|
||||||
);
|
);
|
||||||
return _fileSystem.file(path);
|
return _fileSystem.file(path);
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdk:
|
|
||||||
case HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'amd-canvaskit-html',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleSdk:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'ddcLibraryBundle',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk:
|
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk:
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps:
|
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps:
|
||||||
final String path = _fileSystem.path.join(
|
final String path = _fileSystem.path.join(
|
||||||
@ -1614,15 +1500,6 @@ class CachedLocalWebSdkArtifacts implements Artifacts {
|
|||||||
_hostArtifactToFileName(artifact, _platform),
|
_hostArtifactToFileName(artifact, _platform),
|
||||||
);
|
);
|
||||||
return _fileSystem.file(path);
|
return _fileSystem.file(path);
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdk:
|
|
||||||
case HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdkSourcemaps:
|
|
||||||
final String path = _fileSystem.path.join(
|
|
||||||
_getFlutterWebSdkPath(),
|
|
||||||
'kernel',
|
|
||||||
'ddcLibraryBundle-canvaskit-html',
|
|
||||||
_hostArtifactToFileName(artifact, _platform),
|
|
||||||
);
|
|
||||||
return _fileSystem.file(path);
|
|
||||||
case HostArtifact.iosDeploy:
|
case HostArtifact.iosDeploy:
|
||||||
case HostArtifact.idevicesyslog:
|
case HostArtifact.idevicesyslog:
|
||||||
case HostArtifact.idevicescreenshot:
|
case HostArtifact.idevicescreenshot:
|
||||||
|
@ -169,9 +169,6 @@ class BuildWebCommand extends BuildSubCommand {
|
|||||||
final bool sourceMaps = boolArg('source-maps');
|
final bool sourceMaps = boolArg('source-maps');
|
||||||
|
|
||||||
final List<WebCompilerConfig> compilerConfigs;
|
final List<WebCompilerConfig> compilerConfigs;
|
||||||
if (webRenderer.isDeprecated) {
|
|
||||||
globals.logger.printWarning(webRenderer.deprecationWarning);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (useWasm) {
|
if (useWasm) {
|
||||||
if (webRenderer != WebRendererMode.getDefault(useWasm: true)) {
|
if (webRenderer != WebRendererMode.getDefault(useWasm: true)) {
|
||||||
|
@ -672,10 +672,6 @@ class RunCommand extends RunCommandBase {
|
|||||||
throwToolExit('--wasm is only supported on the web platform');
|
throwToolExit('--wasm is only supported on the web platform');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (webRenderer.isDeprecated) {
|
|
||||||
globals.logger.printWarning(webRenderer.deprecationWarning);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (webRenderer == WebRendererMode.skwasm && !useWasm) {
|
if (webRenderer == WebRendererMode.skwasm && !useWasm) {
|
||||||
throwToolExit('Skwasm renderer requires --wasm');
|
throwToolExit('Skwasm renderer requires --wasm');
|
||||||
}
|
}
|
||||||
|
@ -592,10 +592,6 @@ class TestCommand extends FlutterCommand with DeviceBasedDevelopmentArtifacts {
|
|||||||
throwToolExit('Skwasm renderer requires --wasm');
|
throwToolExit('Skwasm renderer requires --wasm');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (webRenderer.isDeprecated) {
|
|
||||||
globals.logger.printWarning(webRenderer.deprecationWarning);
|
|
||||||
}
|
|
||||||
|
|
||||||
Device? integrationTestDevice;
|
Device? integrationTestDevice;
|
||||||
if (_isIntegrationTest) {
|
if (_isIntegrationTest) {
|
||||||
integrationTestDevice = await findTargetDevice();
|
integrationTestDevice = await findTargetDevice();
|
||||||
|
@ -17,7 +17,6 @@ import 'package:shelf_web_socket/shelf_web_socket.dart';
|
|||||||
import 'package:stream_channel/stream_channel.dart';
|
import 'package:stream_channel/stream_channel.dart';
|
||||||
import 'package:test_core/src/platform.dart'; // ignore: implementation_imports
|
import 'package:test_core/src/platform.dart'; // ignore: implementation_imports
|
||||||
import 'package:web_socket_channel/web_socket_channel.dart';
|
import 'package:web_socket_channel/web_socket_channel.dart';
|
||||||
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart' hide StackTrace;
|
|
||||||
|
|
||||||
import '../artifacts.dart';
|
import '../artifacts.dart';
|
||||||
import '../base/common.dart';
|
import '../base/common.dart';
|
||||||
@ -451,49 +450,12 @@ class FlutterWebPlatform extends PlatformPlugin {
|
|||||||
json.decode(await request.readAsString()) as Map<String, Object?>;
|
json.decode(await request.readAsString()) as Map<String, Object?>;
|
||||||
final Uri goldenKey = Uri.parse(body['key']! as String);
|
final Uri goldenKey = Uri.parse(body['key']! as String);
|
||||||
final Uri testUri = Uri.parse(body['testUri']! as String);
|
final Uri testUri = Uri.parse(body['testUri']! as String);
|
||||||
final num? width = body['width'] as num?;
|
|
||||||
final num? height = body['height'] as num?;
|
|
||||||
Uint8List bytes;
|
Uint8List bytes;
|
||||||
|
|
||||||
if (body.containsKey('bytes')) {
|
if (body.containsKey('bytes')) {
|
||||||
bytes = base64.decode(body['bytes']! as String);
|
bytes = base64.decode(body['bytes']! as String);
|
||||||
} else {
|
} else {
|
||||||
// TODO(hterkelsen): Do not use browser screenshots for testing on the
|
return shelf.Response.ok('Request must contain bytes in the body.');
|
||||||
// web once we transition off the HTML renderer. See:
|
|
||||||
// https://github.com/flutter/flutter/issues/135700
|
|
||||||
try {
|
|
||||||
final ChromeTab chromeTab =
|
|
||||||
(await getChromeTabGuarded(_browserManager!._browser.chromeConnection, (
|
|
||||||
ChromeTab tab,
|
|
||||||
) {
|
|
||||||
return tab.url.contains(_browserManager!._browser.url!);
|
|
||||||
}))!;
|
|
||||||
final WipConnection connection = await chromeTab.connect();
|
|
||||||
final WipResponse response = await connection.sendCommand(
|
|
||||||
'Page.captureScreenshot',
|
|
||||||
<String, Object>{
|
|
||||||
// Clip the screenshot to include only the element.
|
|
||||||
// Prior to taking a screenshot, we are calling `window.render()` in
|
|
||||||
// `_matchers_web.dart` to only render the element on screen. That
|
|
||||||
// will make sure that the element will always be displayed on the
|
|
||||||
// origin of the screen.
|
|
||||||
'clip': <String, Object>{
|
|
||||||
'x': 0.0,
|
|
||||||
'y': 0.0,
|
|
||||||
'width': width!.toDouble(),
|
|
||||||
'height': height!.toDouble(),
|
|
||||||
'scale': 1.0,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
);
|
|
||||||
bytes = base64.decode(response.result!['data'] as String);
|
|
||||||
} on WipError catch (ex) {
|
|
||||||
_logger.printError('Caught WIPError: $ex');
|
|
||||||
return shelf.Response.ok('WIP error: $ex');
|
|
||||||
} on FormatException catch (ex) {
|
|
||||||
_logger.printError('Caught FormatException: $ex');
|
|
||||||
return shelf.Response.ok('Caught exception: $ex');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (updateGoldens) {
|
if (updateGoldens) {
|
||||||
return switch (await _testGoldenComparator.update(testUri, bytes, goldenKey)) {
|
return switch (await _testGoldenComparator.update(testUri, bytes, goldenKey)) {
|
||||||
|
@ -160,30 +160,19 @@ class WebBuilder {
|
|||||||
|
|
||||||
/// Web rendering backend mode.
|
/// Web rendering backend mode.
|
||||||
enum WebRendererMode {
|
enum WebRendererMode {
|
||||||
/// Auto detects which rendering backend to use.
|
|
||||||
auto,
|
|
||||||
|
|
||||||
/// Always uses canvaskit.
|
/// Always uses canvaskit.
|
||||||
canvaskit,
|
canvaskit,
|
||||||
|
|
||||||
/// Always uses html.
|
|
||||||
html,
|
|
||||||
|
|
||||||
/// Always use skwasm.
|
/// Always use skwasm.
|
||||||
skwasm;
|
skwasm;
|
||||||
|
|
||||||
factory WebRendererMode.fromDartDefines(Iterable<String> defines, {required bool useWasm}) {
|
factory WebRendererMode.fromDartDefines(Iterable<String> defines, {required bool useWasm}) {
|
||||||
if (defines.contains('FLUTTER_WEB_AUTO_DETECT=true')) {
|
if (defines.contains('FLUTTER_WEB_USE_SKIA=false') &&
|
||||||
return auto;
|
|
||||||
} else if (defines.contains('FLUTTER_WEB_USE_SKIA=false') &&
|
|
||||||
defines.contains('FLUTTER_WEB_USE_SKWASM=true')) {
|
defines.contains('FLUTTER_WEB_USE_SKWASM=true')) {
|
||||||
return skwasm;
|
return skwasm;
|
||||||
} else if (defines.contains('FLUTTER_WEB_USE_SKIA=true') &&
|
} else if (defines.contains('FLUTTER_WEB_USE_SKIA=true') &&
|
||||||
defines.contains('FLUTTER_WEB_USE_SKWASM=false')) {
|
defines.contains('FLUTTER_WEB_USE_SKWASM=false')) {
|
||||||
return canvaskit;
|
return canvaskit;
|
||||||
} else if (defines.contains('FLUTTER_WEB_USE_SKIA=false') &&
|
|
||||||
defines.contains('FLUTTER_WEB_USE_SKWASM=false')) {
|
|
||||||
return html; // The horror!
|
|
||||||
}
|
}
|
||||||
return getDefault(useWasm: useWasm);
|
return getDefault(useWasm: useWasm);
|
||||||
}
|
}
|
||||||
@ -195,30 +184,6 @@ enum WebRendererMode {
|
|||||||
static const WebRendererMode defaultForJs = WebRendererMode.canvaskit;
|
static const WebRendererMode defaultForJs = WebRendererMode.canvaskit;
|
||||||
static const WebRendererMode defaultForWasm = WebRendererMode.skwasm;
|
static const WebRendererMode defaultForWasm = WebRendererMode.skwasm;
|
||||||
|
|
||||||
/// Returns whether the WebRendererMode is considered deprecated or not.
|
|
||||||
///
|
|
||||||
/// Deprecated modes: auto, html.
|
|
||||||
bool get isDeprecated => switch (this) {
|
|
||||||
auto => true,
|
|
||||||
canvaskit => false,
|
|
||||||
html => true,
|
|
||||||
skwasm => false,
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Returns a consistent deprecation warning for the WebRendererMode.
|
|
||||||
String get deprecationWarning =>
|
|
||||||
'The HTML Renderer is deprecated and will be removed. Please, stop using it.'
|
|
||||||
'\nSee: https://docs.flutter.dev/to/web-html-renderer-deprecation';
|
|
||||||
|
|
||||||
String get helpText => switch (this) {
|
|
||||||
auto => 'Use the HTML renderer on mobile devices, and CanvasKit on desktop devices.',
|
|
||||||
canvaskit =>
|
|
||||||
'Always use the CanvasKit renderer. This renderer uses WebGL and WebAssembly to render graphics.',
|
|
||||||
html =>
|
|
||||||
'Always use the HTML renderer. This renderer uses a combination of HTML, CSS, SVG, 2D Canvas, and WebGL.',
|
|
||||||
skwasm => 'Always use the experimental skwasm renderer.',
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Returns [dartDefines] in a way usable from the CLI.
|
/// Returns [dartDefines] in a way usable from the CLI.
|
||||||
///
|
///
|
||||||
/// This is used to start integration tests.
|
/// This is used to start integration tests.
|
||||||
@ -226,9 +191,7 @@ enum WebRendererMode {
|
|||||||
dartDefines.map((String define) => '--dart-define=$define');
|
dartDefines.map((String define) => '--dart-define=$define');
|
||||||
|
|
||||||
Iterable<String> get dartDefines => switch (this) {
|
Iterable<String> get dartDefines => switch (this) {
|
||||||
auto => const <String>{'FLUTTER_WEB_AUTO_DETECT=true'},
|
|
||||||
canvaskit => const <String>{'FLUTTER_WEB_USE_SKIA=true', 'FLUTTER_WEB_USE_SKWASM=false'},
|
canvaskit => const <String>{'FLUTTER_WEB_USE_SKIA=true', 'FLUTTER_WEB_USE_SKWASM=false'},
|
||||||
html => const <String>{'FLUTTER_WEB_USE_SKIA=false', 'FLUTTER_WEB_USE_SKWASM=false'},
|
|
||||||
skwasm => const <String>{'FLUTTER_WEB_USE_SKIA=false', 'FLUTTER_WEB_USE_SKWASM=true'},
|
skwasm => const <String>{'FLUTTER_WEB_USE_SKIA=false', 'FLUTTER_WEB_USE_SKWASM=true'},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -238,9 +201,7 @@ enum WebRendererMode {
|
|||||||
|
|
||||||
dartDefinesSet
|
dartDefinesSet
|
||||||
..removeWhere((String d) {
|
..removeWhere((String d) {
|
||||||
return d.startsWith('FLUTTER_WEB_AUTO_DETECT=') ||
|
return d.startsWith('FLUTTER_WEB_USE_SKIA=') || d.startsWith('FLUTTER_WEB_USE_SKWASM=');
|
||||||
d.startsWith('FLUTTER_WEB_USE_SKIA=') ||
|
|
||||||
d.startsWith('FLUTTER_WEB_USE_SKWASM=');
|
|
||||||
})
|
})
|
||||||
..addAll(dartDefines);
|
..addAll(dartDefines);
|
||||||
|
|
||||||
@ -251,37 +212,28 @@ enum WebRendererMode {
|
|||||||
/// The correct precompiled artifact to use for each build and render mode for DDC with AMD modules.
|
/// The correct precompiled artifact to use for each build and render mode for DDC with AMD modules.
|
||||||
// TODO(markzipan): delete this when DDC's AMD module system is deprecated, https://github.com/flutter/flutter/issues/142060.
|
// TODO(markzipan): delete this when DDC's AMD module system is deprecated, https://github.com/flutter/flutter/issues/142060.
|
||||||
const Map<WebRendererMode, HostArtifact> kAmdDartSdkJsArtifactMap = <WebRendererMode, HostArtifact>{
|
const Map<WebRendererMode, HostArtifact> kAmdDartSdkJsArtifactMap = <WebRendererMode, HostArtifact>{
|
||||||
WebRendererMode.auto: HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdk,
|
|
||||||
WebRendererMode.canvaskit: HostArtifact.webPrecompiledAmdCanvaskitSdk,
|
WebRendererMode.canvaskit: HostArtifact.webPrecompiledAmdCanvaskitSdk,
|
||||||
WebRendererMode.html: HostArtifact.webPrecompiledAmdSdk,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The correct source map artifact to use for each build and render mode for DDC with AMD modules.
|
/// The correct source map artifact to use for each build and render mode for DDC with AMD modules.
|
||||||
// TODO(markzipan): delete this when DDC's AMD module system is deprecated, https://github.com/flutter/flutter/issues/142060.
|
// TODO(markzipan): delete this when DDC's AMD module system is deprecated, https://github.com/flutter/flutter/issues/142060.
|
||||||
const Map<WebRendererMode, HostArtifact> kAmdDartSdkJsMapArtifactMap =
|
const Map<WebRendererMode, HostArtifact> kAmdDartSdkJsMapArtifactMap =
|
||||||
<WebRendererMode, HostArtifact>{
|
<WebRendererMode, HostArtifact>{
|
||||||
WebRendererMode.auto: HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdkSourcemaps,
|
|
||||||
WebRendererMode.canvaskit: HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps,
|
WebRendererMode.canvaskit: HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps,
|
||||||
WebRendererMode.html: HostArtifact.webPrecompiledAmdSdkSourcemaps,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The correct precompiled artifact to use for each build and render mode for
|
/// The correct precompiled artifact to use for each build and render mode for
|
||||||
/// DDC with DDC library bundle module format.
|
/// DDC with DDC library bundle module format.
|
||||||
const Map<WebRendererMode, HostArtifact> kDdcLibraryBundleDartSdkJsArtifactMap =
|
const Map<WebRendererMode, HostArtifact> kDdcLibraryBundleDartSdkJsArtifactMap =
|
||||||
<WebRendererMode, HostArtifact>{
|
<WebRendererMode, HostArtifact>{
|
||||||
WebRendererMode.auto: HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdk,
|
|
||||||
WebRendererMode.canvaskit: HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk,
|
WebRendererMode.canvaskit: HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk,
|
||||||
WebRendererMode.html: HostArtifact.webPrecompiledDdcLibraryBundleSdk,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/// The correct source map artifact to use for each build and render mode for
|
/// The correct source map artifact to use for each build and render mode for
|
||||||
/// DDC with DDC library bundle module format.
|
/// DDC with DDC library bundle module format.
|
||||||
const Map<WebRendererMode, HostArtifact> kDdcLibraryBundleDartSdkJsMapArtifactMap =
|
const Map<WebRendererMode, HostArtifact> kDdcLibraryBundleDartSdkJsMapArtifactMap =
|
||||||
<WebRendererMode, HostArtifact>{
|
<WebRendererMode, HostArtifact>{
|
||||||
WebRendererMode.auto:
|
|
||||||
HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdkSourcemaps,
|
|
||||||
WebRendererMode.canvaskit: HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps,
|
WebRendererMode.canvaskit: HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps,
|
||||||
WebRendererMode.html: HostArtifact.webPrecompiledDdcLibraryBundleSdkSourcemaps,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
String _buildEventAnalyticsSettings({required List<WebCompilerConfig> configs}) {
|
String _buildEventAnalyticsSettings({required List<WebCompilerConfig> configs}) {
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
import 'package:args/command_runner.dart';
|
import 'package:args/command_runner.dart';
|
||||||
import 'package:file/memory.dart';
|
import 'package:file/memory.dart';
|
||||||
import 'package:flutter_tools/src/base/common.dart';
|
|
||||||
import 'package:flutter_tools/src/base/file_system.dart';
|
import 'package:flutter_tools/src/base/file_system.dart';
|
||||||
import 'package:flutter_tools/src/base/logger.dart';
|
import 'package:flutter_tools/src/base/logger.dart';
|
||||||
import 'package:flutter_tools/src/base/platform.dart';
|
import 'package:flutter_tools/src/base/platform.dart';
|
||||||
@ -14,14 +13,12 @@ import 'package:flutter_tools/src/build_system/targets/web.dart';
|
|||||||
import 'package:flutter_tools/src/cache.dart';
|
import 'package:flutter_tools/src/cache.dart';
|
||||||
import 'package:flutter_tools/src/commands/build.dart';
|
import 'package:flutter_tools/src/commands/build.dart';
|
||||||
import 'package:flutter_tools/src/commands/build_web.dart';
|
import 'package:flutter_tools/src/commands/build_web.dart';
|
||||||
import 'package:flutter_tools/src/dart/pub.dart';
|
|
||||||
import 'package:flutter_tools/src/features.dart';
|
import 'package:flutter_tools/src/features.dart';
|
||||||
import 'package:flutter_tools/src/runner/flutter_command.dart';
|
import 'package:flutter_tools/src/runner/flutter_command.dart';
|
||||||
import 'package:flutter_tools/src/web/compile.dart';
|
import 'package:flutter_tools/src/web/compile.dart';
|
||||||
|
|
||||||
import '../../src/common.dart';
|
import '../../src/common.dart';
|
||||||
import '../../src/context.dart';
|
import '../../src/context.dart';
|
||||||
import '../../src/fake_pub_deps.dart';
|
|
||||||
import '../../src/fakes.dart';
|
import '../../src/fakes.dart';
|
||||||
import '../../src/test_build_system.dart';
|
import '../../src/test_build_system.dart';
|
||||||
import '../../src/test_flutter_command_runner.dart';
|
import '../../src/test_flutter_command_runner.dart';
|
||||||
@ -32,16 +29,6 @@ void main() {
|
|||||||
late BufferLogger logger;
|
late BufferLogger logger;
|
||||||
late ProcessManager processManager;
|
late ProcessManager processManager;
|
||||||
|
|
||||||
// TODO(matanlurey): Remove after `explicit-package-dependencies` is enabled by default.
|
|
||||||
// See https://github.com/flutter/flutter/issues/160257 for details.
|
|
||||||
FeatureFlags enableExplicitPackageDependencies() {
|
|
||||||
return TestFeatureFlags(
|
|
||||||
isExplicitPackageDependenciesEnabled: true,
|
|
||||||
// Assumed to be true below.
|
|
||||||
isWebEnabled: true,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
setUpAll(() {
|
setUpAll(() {
|
||||||
Cache.flutterRoot = '';
|
Cache.flutterRoot = '';
|
||||||
Cache.disableLocking();
|
Cache.disableLocking();
|
||||||
@ -459,42 +446,6 @@ void main() {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
// Tests whether using a deprecated webRenderer toggles a warningText.
|
|
||||||
Future<void> testWebRendererDeprecationMessage(WebRendererMode webRenderer) async {
|
|
||||||
testUsingContext(
|
|
||||||
'Using the "${webRenderer.name}" renderer triggers a warningText.',
|
|
||||||
() async {
|
|
||||||
// Run the command so it parses the renderer, but ignore all errors.
|
|
||||||
// We only care about the logger.
|
|
||||||
try {
|
|
||||||
final TestWebBuildCommand buildCommand = TestWebBuildCommand(fileSystem: fileSystem);
|
|
||||||
await createTestCommandRunner(
|
|
||||||
buildCommand,
|
|
||||||
).run(<String>['build', 'web', '--no-pub', ...webRenderer.toCliDartDefines]);
|
|
||||||
} on ToolExit catch (error) {
|
|
||||||
expect(error, isA<ToolExit>());
|
|
||||||
}
|
|
||||||
expect(
|
|
||||||
logger.warningText,
|
|
||||||
contains('See: https://docs.flutter.dev/to/web-html-renderer-deprecation'),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
overrides: <Type, Generator>{
|
|
||||||
Platform: () => fakePlatform,
|
|
||||||
FileSystem: () => fileSystem,
|
|
||||||
ProcessManager: () => processManager,
|
|
||||||
Logger: () => logger,
|
|
||||||
FeatureFlags: enableExplicitPackageDependencies,
|
|
||||||
Pub: FakePubWithPrimedDeps.new,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Do test all the deprecated WebRendererModes
|
|
||||||
WebRendererMode.values
|
|
||||||
.where((WebRendererMode mode) => mode.isDeprecated)
|
|
||||||
.forEach(testWebRendererDeprecationMessage);
|
|
||||||
|
|
||||||
testUsingContext(
|
testUsingContext(
|
||||||
'flutter build web option visibility',
|
'flutter build web option visibility',
|
||||||
() async {
|
() async {
|
||||||
|
@ -53,12 +53,8 @@ void main() {
|
|||||||
tempDir = fileSystem.systemTempDirectory.createTempSync('flutter_web_platform_test.');
|
tempDir = fileSystem.systemTempDirectory.createTempSync('flutter_web_platform_test.');
|
||||||
|
|
||||||
for (final HostArtifact artifact in <HostArtifact>[
|
for (final HostArtifact artifact in <HostArtifact>[
|
||||||
HostArtifact.webPrecompiledAmdCanvaskitAndHtmlSdk,
|
|
||||||
HostArtifact.webPrecompiledAmdCanvaskitSdk,
|
HostArtifact.webPrecompiledAmdCanvaskitSdk,
|
||||||
HostArtifact.webPrecompiledAmdSdk,
|
|
||||||
HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitAndHtmlSdk,
|
|
||||||
HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk,
|
HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk,
|
||||||
HostArtifact.webPrecompiledDdcLibraryBundleSdk,
|
|
||||||
]) {
|
]) {
|
||||||
final File artifactFile = artifacts.getHostArtifact(artifact) as File;
|
final File artifactFile = artifacts.getHostArtifact(artifact) as File;
|
||||||
artifactFile.createSync();
|
artifactFile.createSync();
|
||||||
|
@ -1107,39 +1107,6 @@ void main() {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
// Tests whether using a deprecated webRenderer toggles a warningText.
|
|
||||||
Future<void> testWebRendererDeprecationMessage(WebRendererMode webRenderer) async {
|
|
||||||
testUsingContext(
|
|
||||||
'Using the "${webRenderer.name}" renderer triggers a warningText.',
|
|
||||||
() async {
|
|
||||||
// Run the command so it parses the renderer, but ignore all errors.
|
|
||||||
// We only care about the logger.
|
|
||||||
try {
|
|
||||||
await createTestCommandRunner(
|
|
||||||
RunCommand(),
|
|
||||||
).run(<String>['run', '--no-pub', ...webRenderer.toCliDartDefines]);
|
|
||||||
} on ToolExit catch (error) {
|
|
||||||
expect(error, isA<ToolExit>());
|
|
||||||
}
|
|
||||||
expect(
|
|
||||||
logger.warningText,
|
|
||||||
contains('See: https://docs.flutter.dev/to/web-html-renderer-deprecation'),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
overrides: <Type, Generator>{
|
|
||||||
FileSystem: () => fileSystem,
|
|
||||||
ProcessManager: () => FakeProcessManager.any(),
|
|
||||||
Logger: () => logger,
|
|
||||||
DeviceManager: () => testDeviceManager,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Do test all the deprecated WebRendererModes
|
|
||||||
WebRendererMode.values
|
|
||||||
.where((WebRendererMode mode) => mode.isDeprecated)
|
|
||||||
.forEach(testWebRendererDeprecationMessage);
|
|
||||||
|
|
||||||
testUsingContext(
|
testUsingContext(
|
||||||
'accepts headers with commas in them',
|
'accepts headers with commas in them',
|
||||||
() async {
|
() async {
|
||||||
|
@ -1525,45 +1525,6 @@ dev_dependencies:
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Tests whether using a deprecated webRenderer toggles a warningText.
|
|
||||||
Future<void> testWebRendererDeprecationMessage(WebRendererMode webRenderer) async {
|
|
||||||
testUsingContext(
|
|
||||||
'Using the "${webRenderer.name}" renderer triggers a warningText.',
|
|
||||||
() async {
|
|
||||||
// Run the command so it parses the renderer, but ignore all errors.
|
|
||||||
// We only care about the logger.
|
|
||||||
try {
|
|
||||||
final FakeFlutterTestRunner testRunner = FakeFlutterTestRunner(0);
|
|
||||||
|
|
||||||
final TestCommand testCommand = TestCommand(testRunner: testRunner);
|
|
||||||
await createTestCommandRunner(testCommand).run(<String>[
|
|
||||||
'test',
|
|
||||||
'web',
|
|
||||||
'--no-pub',
|
|
||||||
'--platform=chrome',
|
|
||||||
...webRenderer.toCliDartDefines,
|
|
||||||
]);
|
|
||||||
} on ToolExit catch (error) {
|
|
||||||
expect(error, isA<ToolExit>());
|
|
||||||
}
|
|
||||||
expect(
|
|
||||||
logger.warningText,
|
|
||||||
contains('See: https://docs.flutter.dev/to/web-html-renderer-deprecation'),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
overrides: <Type, Generator>{
|
|
||||||
FileSystem: () => fs,
|
|
||||||
ProcessManager: () => FakeProcessManager.any(),
|
|
||||||
Logger: () => logger,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Do test all the deprecated WebRendererModes
|
|
||||||
WebRendererMode.values
|
|
||||||
.where((WebRendererMode mode) => mode.isDeprecated)
|
|
||||||
.forEach(testWebRendererDeprecationMessage);
|
|
||||||
|
|
||||||
testUsingContext(
|
testUsingContext(
|
||||||
'Can test in a pub workspace',
|
'Can test in a pub workspace',
|
||||||
() async {
|
() async {
|
||||||
|
@ -236,14 +236,6 @@ void main() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
testWithoutContext('Precompiled web AMD module system artifact paths are correct', () {
|
testWithoutContext('Precompiled web AMD module system artifact paths are correct', () {
|
||||||
expect(
|
|
||||||
artifacts.getHostArtifact(HostArtifact.webPrecompiledAmdSdk).path,
|
|
||||||
'root/bin/cache/flutter_web_sdk/kernel/amd/dart_sdk.js',
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
artifacts.getHostArtifact(HostArtifact.webPrecompiledAmdSdkSourcemaps).path,
|
|
||||||
'root/bin/cache/flutter_web_sdk/kernel/amd/dart_sdk.js.map',
|
|
||||||
);
|
|
||||||
expect(
|
expect(
|
||||||
artifacts.getHostArtifact(HostArtifact.webPrecompiledAmdCanvaskitSdk).path,
|
artifacts.getHostArtifact(HostArtifact.webPrecompiledAmdCanvaskitSdk).path,
|
||||||
'root/bin/cache/flutter_web_sdk/kernel/amd-canvaskit/dart_sdk.js',
|
'root/bin/cache/flutter_web_sdk/kernel/amd-canvaskit/dart_sdk.js',
|
||||||
@ -257,14 +249,6 @@ void main() {
|
|||||||
testWithoutContext(
|
testWithoutContext(
|
||||||
'Precompiled web DDC library bundle module system artifact paths are correct',
|
'Precompiled web DDC library bundle module system artifact paths are correct',
|
||||||
() {
|
() {
|
||||||
expect(
|
|
||||||
artifacts.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleSdk).path,
|
|
||||||
'root/bin/cache/flutter_web_sdk/kernel/ddcLibraryBundle/dart_sdk.js',
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
artifacts.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleSdkSourcemaps).path,
|
|
||||||
'root/bin/cache/flutter_web_sdk/kernel/ddcLibraryBundle/dart_sdk.js.map',
|
|
||||||
);
|
|
||||||
expect(
|
expect(
|
||||||
artifacts.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk).path,
|
artifacts.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk).path,
|
||||||
'root/bin/cache/flutter_web_sdk/kernel/ddcLibraryBundle-canvaskit/dart_sdk.js',
|
'root/bin/cache/flutter_web_sdk/kernel/ddcLibraryBundle-canvaskit/dart_sdk.js',
|
||||||
|
@ -13,39 +13,17 @@ void main() {
|
|||||||
dartDefines = <String>[];
|
dartDefines = <String>[];
|
||||||
});
|
});
|
||||||
|
|
||||||
test('auto web-renderer with no dart-defines', () {
|
|
||||||
dartDefines = WebRendererMode.auto.updateDartDefines(dartDefines);
|
|
||||||
expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=true']);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('canvaskit web-renderer with no dart-defines', () {
|
test('canvaskit web-renderer with no dart-defines', () {
|
||||||
dartDefines = WebRendererMode.canvaskit.updateDartDefines(dartDefines);
|
dartDefines = WebRendererMode.canvaskit.updateDartDefines(dartDefines);
|
||||||
expect(dartDefines, <String>['FLUTTER_WEB_USE_SKIA=true', 'FLUTTER_WEB_USE_SKWASM=false']);
|
expect(dartDefines, <String>['FLUTTER_WEB_USE_SKIA=true', 'FLUTTER_WEB_USE_SKWASM=false']);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('html web-renderer with no dart-defines', () {
|
|
||||||
dartDefines = WebRendererMode.html.updateDartDefines(dartDefines);
|
|
||||||
expect(dartDefines, <String>['FLUTTER_WEB_USE_SKIA=false', 'FLUTTER_WEB_USE_SKWASM=false']);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('auto web-renderer with existing dart-defines', () {
|
|
||||||
dartDefines = <String>['FLUTTER_WEB_USE_SKIA=false'];
|
|
||||||
dartDefines = WebRendererMode.auto.updateDartDefines(dartDefines);
|
|
||||||
expect(dartDefines, <String>['FLUTTER_WEB_AUTO_DETECT=true']);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('canvaskit web-renderer with existing dart-defines', () {
|
test('canvaskit web-renderer with existing dart-defines', () {
|
||||||
dartDefines = <String>['FLUTTER_WEB_USE_SKIA=false'];
|
dartDefines = <String>['FLUTTER_WEB_USE_SKIA=false'];
|
||||||
dartDefines = WebRendererMode.canvaskit.updateDartDefines(dartDefines);
|
dartDefines = WebRendererMode.canvaskit.updateDartDefines(dartDefines);
|
||||||
expect(dartDefines, <String>['FLUTTER_WEB_USE_SKIA=true', 'FLUTTER_WEB_USE_SKWASM=false']);
|
expect(dartDefines, <String>['FLUTTER_WEB_USE_SKIA=true', 'FLUTTER_WEB_USE_SKWASM=false']);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('html web-renderer with existing dart-defines', () {
|
|
||||||
dartDefines = <String>['FLUTTER_WEB_USE_SKIA=true'];
|
|
||||||
dartDefines = WebRendererMode.html.updateDartDefines(dartDefines);
|
|
||||||
expect(dartDefines, <String>['FLUTTER_WEB_USE_SKIA=false', 'FLUTTER_WEB_USE_SKWASM=false']);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('skwasm web-renderer with existing dart-defines', () {
|
test('skwasm web-renderer with existing dart-defines', () {
|
||||||
dartDefines = <String>['FLUTTER_WEB_USE_SKWASM=false'];
|
dartDefines = <String>['FLUTTER_WEB_USE_SKWASM=false'];
|
||||||
dartDefines = WebRendererMode.skwasm.updateDartDefines(dartDefines);
|
dartDefines = WebRendererMode.skwasm.updateDartDefines(dartDefines);
|
||||||
|
@ -1236,7 +1236,6 @@ void main() {
|
|||||||
JsCompilerConfig(optimizationLevel: 0),
|
JsCompilerConfig(optimizationLevel: 0),
|
||||||
JsCompilerConfig(noFrequencyBasedMinification: true),
|
JsCompilerConfig(noFrequencyBasedMinification: true),
|
||||||
JsCompilerConfig(sourceMaps: false),
|
JsCompilerConfig(sourceMaps: false),
|
||||||
JsCompilerConfig(renderer: WebRendererMode.html),
|
|
||||||
|
|
||||||
// All properties non-default
|
// All properties non-default
|
||||||
JsCompilerConfig(
|
JsCompilerConfig(
|
||||||
@ -1246,7 +1245,6 @@ void main() {
|
|||||||
optimizationLevel: 0,
|
optimizationLevel: 0,
|
||||||
noFrequencyBasedMinification: true,
|
noFrequencyBasedMinification: true,
|
||||||
sourceMaps: false,
|
sourceMaps: false,
|
||||||
renderer: WebRendererMode.html,
|
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -807,7 +807,7 @@ void main() {
|
|||||||
chromiumLauncher: null,
|
chromiumLauncher: null,
|
||||||
ddcModuleSystem: usesDdcModuleSystem,
|
ddcModuleSystem: usesDdcModuleSystem,
|
||||||
canaryFeatures: canaryFeatures,
|
canaryFeatures: canaryFeatures,
|
||||||
webRenderer: WebRendererMode.html,
|
webRenderer: WebRendererMode.canvaskit,
|
||||||
isWasm: false,
|
isWasm: false,
|
||||||
useLocalCanvasKit: false,
|
useLocalCanvasKit: false,
|
||||||
rootDirectory: globals.fs.currentDirectory,
|
rootDirectory: globals.fs.currentDirectory,
|
||||||
@ -822,12 +822,6 @@ void main() {
|
|||||||
globals.fs.currentDirectory.childDirectory('lib').childFile('web_entrypoint.dart')
|
globals.fs.currentDirectory.childDirectory('lib').childFile('web_entrypoint.dart')
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('GENERATED');
|
..writeAsStringSync('GENERATED');
|
||||||
final String webPrecompiledSdk =
|
|
||||||
globals.artifacts!.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleSdk).path;
|
|
||||||
final String webPrecompiledSdkSourcemaps =
|
|
||||||
globals.artifacts!
|
|
||||||
.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleSdkSourcemaps)
|
|
||||||
.path;
|
|
||||||
final String webPrecompiledCanvaskitSdk =
|
final String webPrecompiledCanvaskitSdk =
|
||||||
globals.artifacts!
|
globals.artifacts!
|
||||||
.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk)
|
.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdk)
|
||||||
@ -836,18 +830,12 @@ void main() {
|
|||||||
globals.artifacts!
|
globals.artifacts!
|
||||||
.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps)
|
.getHostArtifact(HostArtifact.webPrecompiledDdcLibraryBundleCanvaskitSdkSourcemaps)
|
||||||
.path;
|
.path;
|
||||||
globals.fs.file(webPrecompiledSdk)
|
|
||||||
..createSync(recursive: true)
|
|
||||||
..writeAsStringSync('HELLO');
|
|
||||||
globals.fs.file(webPrecompiledSdkSourcemaps)
|
|
||||||
..createSync(recursive: true)
|
|
||||||
..writeAsStringSync('THERE');
|
|
||||||
globals.fs.file(webPrecompiledCanvaskitSdk)
|
globals.fs.file(webPrecompiledCanvaskitSdk)
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('OL');
|
..writeAsStringSync('HELLO');
|
||||||
globals.fs.file(webPrecompiledCanvaskitSdkSourcemaps)
|
globals.fs.file(webPrecompiledCanvaskitSdkSourcemaps)
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('CHUM');
|
..writeAsStringSync('THERE');
|
||||||
|
|
||||||
await webDevFS.update(
|
await webDevFS.update(
|
||||||
mainUri: globals.fs.file(globals.fs.path.join('lib', 'main.dart')).uri,
|
mainUri: globals.fs.file(globals.fs.path.join('lib', 'main.dart')).uri,
|
||||||
@ -872,7 +860,7 @@ void main() {
|
|||||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'THERE');
|
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'THERE');
|
||||||
|
|
||||||
// Update to the SDK.
|
// Update to the SDK.
|
||||||
globals.fs.file(webPrecompiledSdk).writeAsStringSync('BELLOW');
|
globals.fs.file(webPrecompiledCanvaskitSdk).writeAsStringSync('BELLOW');
|
||||||
|
|
||||||
// New SDK should be visible..
|
// New SDK should be visible..
|
||||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'BELLOW');
|
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'BELLOW');
|
||||||
@ -1071,57 +1059,6 @@ void main() {
|
|||||||
await webDevFS.destroy();
|
await webDevFS.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
runInTestbed('Can start web server with auto detect enabled', () async {
|
|
||||||
final String path = globals.fs.path.join('lib', 'main.dart');
|
|
||||||
final File outputFile = globals.fs.file(path)..createSync(recursive: true);
|
|
||||||
outputFile.parent.childFile('a.sources').writeAsStringSync('');
|
|
||||||
outputFile.parent.childFile('a.json').writeAsStringSync('{}');
|
|
||||||
outputFile.parent.childFile('a.map').writeAsStringSync('{}');
|
|
||||||
|
|
||||||
final WebDevFS webDevFS = WebDevFS(
|
|
||||||
hostname: 'localhost',
|
|
||||||
port: 0,
|
|
||||||
tlsCertPath: null,
|
|
||||||
tlsCertKeyPath: null,
|
|
||||||
packagesFilePath: '.dart_tool/package_config.json',
|
|
||||||
urlTunneller: null,
|
|
||||||
useSseForDebugProxy: true,
|
|
||||||
useSseForDebugBackend: true,
|
|
||||||
useSseForInjectedClient: true,
|
|
||||||
nullAssertions: true,
|
|
||||||
nativeNullAssertions: true,
|
|
||||||
buildInfo: const BuildInfo(
|
|
||||||
BuildMode.debug,
|
|
||||||
'',
|
|
||||||
treeShakeIcons: false,
|
|
||||||
dartDefines: <String>['FLUTTER_WEB_AUTO_DETECT=true'],
|
|
||||||
packageConfigPath: '.dart_tool/package_config.json',
|
|
||||||
),
|
|
||||||
enableDwds: false,
|
|
||||||
enableDds: false,
|
|
||||||
entrypoint: Uri.base,
|
|
||||||
testMode: true,
|
|
||||||
expressionCompiler: null,
|
|
||||||
extraHeaders: const <String, String>{},
|
|
||||||
chromiumLauncher: null,
|
|
||||||
ddcModuleSystem: usesDdcModuleSystem,
|
|
||||||
canaryFeatures: canaryFeatures,
|
|
||||||
webRenderer: WebRendererMode.auto,
|
|
||||||
isWasm: false,
|
|
||||||
useLocalCanvasKit: false,
|
|
||||||
rootDirectory: globals.fs.currentDirectory,
|
|
||||||
isWindows: false,
|
|
||||||
);
|
|
||||||
webDevFS.ddcModuleLoaderJS.createSync(recursive: true);
|
|
||||||
webDevFS.stackTraceMapper.createSync(recursive: true);
|
|
||||||
|
|
||||||
await webDevFS.create();
|
|
||||||
|
|
||||||
expect(webDevFS.webAssetServer.webRenderer, WebRendererMode.auto);
|
|
||||||
|
|
||||||
await webDevFS.destroy();
|
|
||||||
});
|
|
||||||
|
|
||||||
runInTestbed('Can start web server with tls connection', () async {
|
runInTestbed('Can start web server with tls connection', () async {
|
||||||
final String dataPath = globals.fs.path.join(
|
final String dataPath = globals.fs.path.join(
|
||||||
getFlutterRoot(),
|
getFlutterRoot(),
|
||||||
|
@ -927,7 +927,7 @@ void main() {
|
|||||||
chromiumLauncher: null,
|
chromiumLauncher: null,
|
||||||
ddcModuleSystem: usesDdcModuleSystem,
|
ddcModuleSystem: usesDdcModuleSystem,
|
||||||
canaryFeatures: canaryFeatures,
|
canaryFeatures: canaryFeatures,
|
||||||
webRenderer: WebRendererMode.html,
|
webRenderer: WebRendererMode.canvaskit,
|
||||||
isWasm: false,
|
isWasm: false,
|
||||||
useLocalCanvasKit: false,
|
useLocalCanvasKit: false,
|
||||||
rootDirectory: globals.fs.currentDirectory,
|
rootDirectory: globals.fs.currentDirectory,
|
||||||
@ -939,17 +939,19 @@ void main() {
|
|||||||
|
|
||||||
final Uri uri = await webDevFS.create();
|
final Uri uri = await webDevFS.create();
|
||||||
webDevFS.webAssetServer.entrypointCacheDirectory = globals.fs.currentDirectory;
|
webDevFS.webAssetServer.entrypointCacheDirectory = globals.fs.currentDirectory;
|
||||||
final String webPrecompiledSdk =
|
final String webPrecompiledCanvaskitSdk =
|
||||||
globals.artifacts!.getHostArtifact(HostArtifact.webPrecompiledAmdSdk).path;
|
globals.artifacts!.getHostArtifact(HostArtifact.webPrecompiledAmdCanvaskitSdk).path;
|
||||||
final String webPrecompiledSdkSourcemaps =
|
final String webPrecompiledCanvaskitSdkSourcemaps =
|
||||||
globals.artifacts!.getHostArtifact(HostArtifact.webPrecompiledAmdSdkSourcemaps).path;
|
globals.artifacts!
|
||||||
|
.getHostArtifact(HostArtifact.webPrecompiledAmdCanvaskitSdkSourcemaps)
|
||||||
|
.path;
|
||||||
globals.fs.currentDirectory.childDirectory('lib').childFile('web_entrypoint.dart')
|
globals.fs.currentDirectory.childDirectory('lib').childFile('web_entrypoint.dart')
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('GENERATED');
|
..writeAsStringSync('GENERATED');
|
||||||
globals.fs.file(webPrecompiledSdk)
|
globals.fs.file(webPrecompiledCanvaskitSdk)
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('HELLO');
|
..writeAsStringSync('HELLO');
|
||||||
globals.fs.file(webPrecompiledSdkSourcemaps)
|
globals.fs.file(webPrecompiledCanvaskitSdkSourcemaps)
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('THERE');
|
..writeAsStringSync('THERE');
|
||||||
|
|
||||||
@ -976,7 +978,7 @@ void main() {
|
|||||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'THERE');
|
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'THERE');
|
||||||
|
|
||||||
// Update to the SDK.
|
// Update to the SDK.
|
||||||
globals.fs.file(webPrecompiledSdk).writeAsStringSync('BELLOW');
|
globals.fs.file(webPrecompiledCanvaskitSdk).writeAsStringSync('BELLOW');
|
||||||
|
|
||||||
// New SDK should be visible..
|
// New SDK should be visible..
|
||||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'BELLOW');
|
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'BELLOW');
|
||||||
@ -1034,7 +1036,7 @@ void main() {
|
|||||||
chromiumLauncher: null,
|
chromiumLauncher: null,
|
||||||
ddcModuleSystem: usesDdcModuleSystem,
|
ddcModuleSystem: usesDdcModuleSystem,
|
||||||
canaryFeatures: canaryFeatures,
|
canaryFeatures: canaryFeatures,
|
||||||
webRenderer: WebRendererMode.html,
|
webRenderer: WebRendererMode.canvaskit,
|
||||||
isWasm: false,
|
isWasm: false,
|
||||||
useLocalCanvasKit: false,
|
useLocalCanvasKit: false,
|
||||||
rootDirectory: globals.fs.currentDirectory,
|
rootDirectory: globals.fs.currentDirectory,
|
||||||
@ -1049,10 +1051,6 @@ void main() {
|
|||||||
globals.fs.currentDirectory.childDirectory('lib').childFile('web_entrypoint.dart')
|
globals.fs.currentDirectory.childDirectory('lib').childFile('web_entrypoint.dart')
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('GENERATED');
|
..writeAsStringSync('GENERATED');
|
||||||
final String webPrecompiledSdk =
|
|
||||||
globals.artifacts!.getHostArtifact(HostArtifact.webPrecompiledAmdSdk).path;
|
|
||||||
final String webPrecompiledSdkSourcemaps =
|
|
||||||
globals.artifacts!.getHostArtifact(HostArtifact.webPrecompiledAmdSdkSourcemaps).path;
|
|
||||||
final String webPrecompiledCanvaskitSdk =
|
final String webPrecompiledCanvaskitSdk =
|
||||||
globals.artifacts!.getHostArtifact(HostArtifact.webPrecompiledAmdCanvaskitSdk).path;
|
globals.artifacts!.getHostArtifact(HostArtifact.webPrecompiledAmdCanvaskitSdk).path;
|
||||||
final String webPrecompiledCanvaskitSdkSourcemaps =
|
final String webPrecompiledCanvaskitSdkSourcemaps =
|
||||||
@ -1063,18 +1061,12 @@ void main() {
|
|||||||
globals.artifacts!.getHostArtifact(HostArtifact.flutterJsDirectory).path,
|
globals.artifacts!.getHostArtifact(HostArtifact.flutterJsDirectory).path,
|
||||||
'flutter.js',
|
'flutter.js',
|
||||||
);
|
);
|
||||||
globals.fs.file(webPrecompiledSdk)
|
|
||||||
..createSync(recursive: true)
|
|
||||||
..writeAsStringSync('HELLO');
|
|
||||||
globals.fs.file(webPrecompiledSdkSourcemaps)
|
|
||||||
..createSync(recursive: true)
|
|
||||||
..writeAsStringSync('THERE');
|
|
||||||
globals.fs.file(webPrecompiledCanvaskitSdk)
|
globals.fs.file(webPrecompiledCanvaskitSdk)
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('OL');
|
..writeAsStringSync('HELLO');
|
||||||
globals.fs.file(webPrecompiledCanvaskitSdkSourcemaps)
|
globals.fs.file(webPrecompiledCanvaskitSdkSourcemaps)
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('CHUM');
|
..writeAsStringSync('THERE');
|
||||||
globals.fs.file(flutterJs)
|
globals.fs.file(flutterJs)
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync('(flutter.js content)');
|
..writeAsStringSync('(flutter.js content)');
|
||||||
@ -1102,7 +1094,7 @@ void main() {
|
|||||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'THERE');
|
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'THERE');
|
||||||
|
|
||||||
// Update to the SDK.
|
// Update to the SDK.
|
||||||
globals.fs.file(webPrecompiledSdk).writeAsStringSync('BELLOW');
|
globals.fs.file(webPrecompiledCanvaskitSdk).writeAsStringSync('BELLOW');
|
||||||
|
|
||||||
// New SDK should be visible..
|
// New SDK should be visible..
|
||||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'BELLOW');
|
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'BELLOW');
|
||||||
@ -1307,60 +1299,6 @@ void main() {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
test(
|
|
||||||
'Can start web server with auto detect enabled',
|
|
||||||
() => testbed.run(() async {
|
|
||||||
final File outputFile = globals.fs.file(globals.fs.path.join('lib', 'main.dart'))
|
|
||||||
..createSync(recursive: true);
|
|
||||||
outputFile.parent.childFile('a.sources').writeAsStringSync('');
|
|
||||||
outputFile.parent.childFile('a.json').writeAsStringSync('{}');
|
|
||||||
outputFile.parent.childFile('a.map').writeAsStringSync('{}');
|
|
||||||
|
|
||||||
final WebDevFS webDevFS = WebDevFS(
|
|
||||||
hostname: 'localhost',
|
|
||||||
port: 0,
|
|
||||||
tlsCertPath: null,
|
|
||||||
tlsCertKeyPath: null,
|
|
||||||
packagesFilePath: '.dart_tool/package_config.json',
|
|
||||||
urlTunneller: null,
|
|
||||||
useSseForDebugProxy: true,
|
|
||||||
useSseForDebugBackend: true,
|
|
||||||
useSseForInjectedClient: true,
|
|
||||||
nullAssertions: true,
|
|
||||||
nativeNullAssertions: true,
|
|
||||||
buildInfo: const BuildInfo(
|
|
||||||
BuildMode.debug,
|
|
||||||
'',
|
|
||||||
treeShakeIcons: false,
|
|
||||||
dartDefines: <String>['FLUTTER_WEB_AUTO_DETECT=true'],
|
|
||||||
packageConfigPath: '.dart_tool/package_config.json',
|
|
||||||
),
|
|
||||||
enableDwds: false,
|
|
||||||
enableDds: false,
|
|
||||||
entrypoint: Uri.base,
|
|
||||||
testMode: true,
|
|
||||||
expressionCompiler: null,
|
|
||||||
extraHeaders: const <String, String>{},
|
|
||||||
chromiumLauncher: null,
|
|
||||||
ddcModuleSystem: usesDdcModuleSystem,
|
|
||||||
canaryFeatures: canaryFeatures,
|
|
||||||
webRenderer: WebRendererMode.auto,
|
|
||||||
isWasm: false,
|
|
||||||
useLocalCanvasKit: false,
|
|
||||||
rootDirectory: globals.fs.currentDirectory,
|
|
||||||
isWindows: false,
|
|
||||||
);
|
|
||||||
webDevFS.requireJS.createSync(recursive: true);
|
|
||||||
webDevFS.stackTraceMapper.createSync(recursive: true);
|
|
||||||
|
|
||||||
await webDevFS.create();
|
|
||||||
|
|
||||||
expect(webDevFS.webAssetServer.webRenderer, WebRendererMode.auto);
|
|
||||||
|
|
||||||
await webDevFS.destroy();
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
|
|
||||||
test(
|
test(
|
||||||
'Can start web server with tls connection',
|
'Can start web server with tls connection',
|
||||||
() => testbed.run(() async {
|
() => testbed.run(() async {
|
||||||
|
@ -63,7 +63,7 @@ String indexHtmlFlutterJsLoad = _generateFlutterJsIndexHtml('''
|
|||||||
builds: [
|
builds: [
|
||||||
{
|
{
|
||||||
"compileTarget": "dartdevc",
|
"compileTarget": "dartdevc",
|
||||||
"renderer": "html",
|
"renderer": "canvaskit",
|
||||||
"mainJsPath": "main.dart.js",
|
"mainJsPath": "main.dart.js",
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user