From 7aa51948940bcf9e20730b43df120dd7828b6329 Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Tue, 19 Mar 2024 13:05:26 -0700 Subject: [PATCH] Fix slash in chromium path. (flutter/engine#51527) The previous code here introduced an extra slash. Our test platform was tolerant to this extra slash and essentially ignored it, but this probably won't work for most hosting solutions. I went ahead and added some extra validation to the URL when fetching so that we won't serve URLs that have the double slash in their path, in order to catch this if it regresses again. --- engine/src/flutter/lib/web_ui/dev/test_platform.dart | 2 +- .../src/flutter/lib/web_ui/flutter_js/src/canvaskit_loader.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/src/flutter/lib/web_ui/dev/test_platform.dart b/engine/src/flutter/lib/web_ui/dev/test_platform.dart index aa6d53c5959..078b18ee863 100644 --- a/engine/src/flutter/lib/web_ui/dev/test_platform.dart +++ b/engine/src/flutter/lib/web_ui/dev/test_platform.dart @@ -485,7 +485,7 @@ class BrowserPlatform extends PlatformPlugin { request.url.path, )); - if (!fileInDirectory.existsSync()) { + if (request.url.path.contains('//') || !fileInDirectory.existsSync()) { return shelf.Response.notFound('File not found: ${request.url.path}'); } diff --git a/engine/src/flutter/lib/web_ui/flutter_js/src/canvaskit_loader.js b/engine/src/flutter/lib/web_ui/flutter_js/src/canvaskit_loader.js index cf88c3c7ea5..39a696a6a86 100644 --- a/engine/src/flutter/lib/web_ui/flutter_js/src/canvaskit_loader.js +++ b/engine/src/flutter/lib/web_ui/flutter_js/src/canvaskit_loader.js @@ -17,7 +17,7 @@ export const loadCanvasKit = (deps, config, browserEnvironment, engineRevision) const useChromiumCanvasKit = supportsChromiumCanvasKit && (config.canvasKitVariant !== "full"); let baseUrl = config.canvasKitBaseUrl ?? `https://www.gstatic.com/flutter-canvaskit/${engineRevision}/`; if (useChromiumCanvasKit) { - baseUrl = `${baseUrl}/chromium/`; + baseUrl = `${baseUrl}chromium/`; } let canvasKitUrl = `${baseUrl}canvaskit.js`; if (deps.flutterTT.policy) {