cache sdkNameAndVersion logic for web devices (#45145)

This commit is contained in:
Jonah Williams 2019-11-19 09:36:24 -08:00 committed by GitHub
parent 399aebc4b7
commit e236196037
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View file

@ -89,7 +89,10 @@ class ChromeDevice extends Device {
DevicePortForwarder get portForwarder => const NoOpDevicePortForwarder();
@override
Future<String> get sdkNameAndVersion async {
Future<String> get sdkNameAndVersion async => _sdkNameAndVersion ??= await _computeSdkNameAndVersion();
String _sdkNameAndVersion;
Future<String> _computeSdkNameAndVersion() async {
if (!isSupported()) {
return 'unknown';
}

View file

@ -101,6 +101,10 @@ void main() {
expect(chromeDevice.isSupported(), true);
expect(await chromeDevice.sdkNameAndVersion, 'ABC');
// Verify caching works correctly.
expect(await chromeDevice.sdkNameAndVersion, 'ABC');
verify(mockProcessManager.run(<String>['chrome.foo', '--version'])).called(1);
}, overrides: <Type, Generator>{
Platform: () => mockPlatform,
ProcessManager: () => mockProcessManager,