Unverified Commit bbf913bc authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] resolve requests to web directory in debug mode (#51995)

parent 374f85c9
......@@ -588,6 +588,7 @@ Future<void> _runWebIntegrationTests() async {
await _runWebStackTraceTest('profile');
await _runWebStackTraceTest('release');
await _runWebDebugTest('lib/stack_trace.dart');
await _runWebDebugTest('lib/web_directory_loading.dart');
await _runWebDebugTest('test/test.dart');
}
......
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:html' as html;
// Attempt to load a file that is hosted in the applications's `web/` directory.
Future<void> main() async {
try {
final html.HttpRequest request = await html.HttpRequest.request(
'/example',
method: 'GET',
);
final String body = request.responseText;
if (body == 'This is an Example') {
print('--- TEST SUCCEEDED ---');
} else {
print('--- TEST FAILED ---');
}
} catch (err) {
print(err);
print('--- TEST FAILED ---');
}
}
This is an Example
\ No newline at end of file
......@@ -190,10 +190,16 @@ class WebAssetServer implements AssetReader {
// Try and resolve the path relative to the built asset directory.
if (!file.existsSync()) {
final Uri potential = globals.fs.directory(getAssetBuildDirectory())
.uri.resolve( requestPath.replaceFirst('/assets/', ''));
.uri.resolve(requestPath.replaceFirst('/assets/', ''));
file = globals.fs.file(potential);
}
if (!file.existsSync()) {
final String webPath = globals.fs.path.join(
globals.fs.currentDirectory.childDirectory('web').path, requestPath.substring(1));
file = globals.fs.file(webPath);
}
if (!file.existsSync()) {
return shelf.Response.notFound('');
}
......
......@@ -191,6 +191,21 @@ void main() {
]));
expect((await response.read().toList()).first, source.readAsBytesSync());
}));
test('serves files from web directory', () => testbed.run(() async {
final File source = globals.fs.file(globals.fs.path.join('web', 'foo.png'))
..createSync(recursive: true)
..writeAsBytesSync(kTransparentImage);
final Response response = await webAssetServer
.handleRequest(Request('GET', Uri.parse('http://foobar/foo.png')));
expect(response.headers, allOf(<Matcher>[
containsPair(HttpHeaders.contentLengthHeader, source.lengthSync().toString()),
containsPair(HttpHeaders.contentTypeHeader, 'image/png'),
containsPair(HttpHeaders.etagHeader, isNotNull),
containsPair(HttpHeaders.cacheControlHeader, 'max-age=0, must-revalidate')
]));
expect((await response.read().toList()).first, source.readAsBytesSync());
}));
test('serves asset files from in filesystem with known mime type on Windows', () => testbed.run(() async {
final File source = globals.fs.file(globals.fs.path.join('build', 'flutter_assets', 'foo.png'))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment