| // Copyright 2013 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:io' as io; | |
| import 'package:path/path.dart' as path; | |
| import 'package:yaml/yaml.dart'; | |
| import 'common.dart'; | |
| import 'environment.dart'; | |
| /// Returns the browser configuration based on the `browser_lock.yaml` file in | |
| /// the current engine workspace. | |
| final BrowserLock browserLock = BrowserLock(); | |
| /// Provides access to the contents of the `browser_lock.yaml` file. | |
| class BrowserLock { | |
| factory BrowserLock() { | |
| final io.File lockFile = io.File( | |
| path.join(environment.webUiRootDir.path, 'dev', 'browser_lock.yaml'), | |
| ); | |
| final YamlMap yaml = loadYaml(lockFile.readAsStringSync()) as YamlMap; | |
| return BrowserLock._fromYaml(yaml); | |
| } | |
| BrowserLock._fromYaml(YamlMap yaml) : | |
| chromeLock = ChromeLock._fromYaml(yaml['chrome'] as YamlMap), | |
| firefoxLock = FirefoxLock._fromYaml(yaml['firefox'] as YamlMap), | |
| edgeLock = EdgeLock._fromYaml(yaml['edge'] as YamlMap); | |
| final ChromeLock chromeLock; | |
| final FirefoxLock firefoxLock; | |
| final EdgeLock edgeLock; | |
| } | |
| class ChromeLock { | |
| ChromeLock._fromYaml(YamlMap yaml) : | |
| linux = (yaml['Linux'] as int).toString(), | |
| mac = (yaml['Mac'] as int).toString(), | |
| macArm = (yaml['Mac_Arm'] as int).toString(), | |
| windows = (yaml['Win'] as int).toString(), | |
| version = yaml['version'] as String; | |
| final String linux; | |
| final String mac; | |
| final String macArm; | |
| final String windows; | |
| /// The major version of Chromium represented by this lock. E.g: '96' (for Chromium 96.0.554.51) | |
| final String version; | |
| /// Return the Chromium Build ID to use for the current operating system. | |
| String get versionForCurrentPlatform { | |
| return PlatformBinding.instance.getChromeBuild(this); | |
| } | |
| } | |
| class FirefoxLock { | |
| FirefoxLock._fromYaml(YamlMap yaml) : | |
| version = yaml['version'] as String; | |
| final String version; | |
| } | |
| class EdgeLock { | |
| EdgeLock._fromYaml(YamlMap yaml) : | |
| launcherVersion = yaml['launcher_version'] as String; | |
| final String launcherVersion; | |
| } |