diff --git a/lib/web_ui/dev/browser_lock.yaml b/lib/web_ui/dev/browser_lock.yaml index 169220c34f9b7..cfc7608d8b061 100644 --- a/lib/web_ui/dev/browser_lock.yaml +++ b/lib/web_ui/dev/browser_lock.yaml @@ -1,7 +1,8 @@ -chrome: - # It seems Chrome can't always release from the same build for all operating - # systems, so we specify per-OS build number. - Linux: 695653 - Mac: 695656 -firefox: - version: '71.0' +chrome: + # It seems Chrome can't always release from the same build for all operating + # systems, so we specify per-OS build number. + Linux: 695653 + Mac: 695656 + Win: 695655 +firefox: + version: '71.0' diff --git a/lib/web_ui/dev/common.dart b/lib/web_ui/dev/common.dart index 49e82a96706a0..17bf4d8010a48 100644 --- a/lib/web_ui/dev/common.dart +++ b/lib/web_ui/dev/common.dart @@ -33,6 +33,8 @@ abstract class PlatformBinding { _instance = _LinuxBinding(); } else if (io.Platform.isMacOS) { _instance = _MacBinding(); + } else if (io.Platform.isWindows) { + _instance = _WindowsBinding(); } else { throw '${io.Platform.operatingSystem} is not supported'; } @@ -54,6 +56,38 @@ abstract class PlatformBinding { const String _kBaseDownloadUrl = 'https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o'; +class _WindowsBinding implements PlatformBinding { + @override + int getChromeBuild(YamlMap browserLock) { + final YamlMap chromeMap = browserLock['chrome']; + return chromeMap['Win']; + } + + @override + String getChromeDownloadUrl(String version) => + 'https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Win%2F${version}%2Fchrome-win32.zip?alt=media'; + + @override + String getChromeExecutablePath(io.Directory versionDir) => + path.join(versionDir.path, 'chrome-win32', 'chrome'); + + @override + String getFirefoxDownloadUrl(String version) => + 'https://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/win64/en-US/firefox-${version}.exe'; + + @override + String getFirefoxExecutablePath(io.Directory versionDir) => + path.join(versionDir.path, 'firefox', 'firefox'); + + @override + String getFirefoxLatestVersionUrl() => + 'https://download.mozilla.org/?product=firefox-latest&os=win&lang=en-US'; + + @override + String getSafariSystemExecutablePath() => + throw UnsupportedError('Safari is not supported on Windows'); +} + class _LinuxBinding implements PlatformBinding { @override int getChromeBuild(YamlMap browserLock) { diff --git a/lib/web_ui/dev/felt.dart b/lib/web_ui/dev/felt.dart index 1830c051b9ef6..33034b3e8b0e2 100644 --- a/lib/web_ui/dev/felt.dart +++ b/lib/web_ui/dev/felt.dart @@ -51,8 +51,12 @@ void _listenToShutdownSignals() { print('Received SIGINT. Shutting down.'); io.exit(1); }); - io.ProcessSignal.sigterm.watch().listen((_) { - print('Received SIGTERM. Shutting down.'); - io.exit(1); - }); + // SIGTERM signals are not generated under Windows. + // See https://docs.microsoft.com/en-us/previous-versions/xdkz3x12(v%3Dvs.140) + if (!io.Platform.isWindows) { + io.ProcessSignal.sigterm.watch().listen((_) { + print('Received SIGTERM. Shutting down.'); + io.exit(1); + }); + } }