From e2361960373c1eb804d251fcbb73ce1a944b8ee2 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 19 Nov 2019 09:36:24 -0800 Subject: [PATCH] cache sdkNameAndVersion logic for web devices (#45145) --- packages/flutter_tools/lib/src/web/web_device.dart | 5 ++++- .../flutter_tools/test/general.shard/web/devices_test.dart | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/flutter_tools/lib/src/web/web_device.dart b/packages/flutter_tools/lib/src/web/web_device.dart index c0f851a2dec..e981e1c04c0 100644 --- a/packages/flutter_tools/lib/src/web/web_device.dart +++ b/packages/flutter_tools/lib/src/web/web_device.dart @@ -89,7 +89,10 @@ class ChromeDevice extends Device { DevicePortForwarder get portForwarder => const NoOpDevicePortForwarder(); @override - Future get sdkNameAndVersion async { + Future get sdkNameAndVersion async => _sdkNameAndVersion ??= await _computeSdkNameAndVersion(); + + String _sdkNameAndVersion; + Future _computeSdkNameAndVersion() async { if (!isSupported()) { return 'unknown'; } diff --git a/packages/flutter_tools/test/general.shard/web/devices_test.dart b/packages/flutter_tools/test/general.shard/web/devices_test.dart index e568fbf924f..b248d567b14 100644 --- a/packages/flutter_tools/test/general.shard/web/devices_test.dart +++ b/packages/flutter_tools/test/general.shard/web/devices_test.dart @@ -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(['chrome.foo', '--version'])).called(1); }, overrides: { Platform: () => mockPlatform, ProcessManager: () => mockProcessManager,