Skip to content

Commit

Permalink
Stop checking flutter version for connected app in flutter web apps (#…
Browse files Browse the repository at this point in the history
…3066)

* Stop checking flutter version for connected app in flutter web apps
  • Loading branch information
kenzieschmoll authored May 27, 2021
1 parent 5505343 commit 9a92b84
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 13 deletions.
51 changes: 40 additions & 11 deletions packages/devtools_app/lib/src/connected_app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@

import 'dart:async';

import 'package:flutter/foundation.dart';

import 'config_specific/logger/logger.dart' as logger;
import 'eval_on_dart_library.dart';
import 'globals.dart';
import 'service_registrations.dart' as registrations;
import 'title.dart';
import 'version.dart';

Expand All @@ -33,10 +36,17 @@ class ConnectedApp {

bool _isFlutterApp;

FlutterVersion get flutterVersionNow => _flutterVersion;
FlutterVersion get flutterVersionNow {
assert(isFlutterNativeAppNow);
return _flutterVersion;
}

FlutterVersion _flutterVersion;

final _flutterVersionCompleter = Completer<FlutterVersion>();

static const _flutterVersionTimeout = Duration(seconds: 3);

Future<bool> get isProfileBuild async {
_isProfileBuild ??= await _connectedToProfileBuild();
return _isProfileBuild;
Expand All @@ -62,6 +72,8 @@ class ConnectedApp {

bool get isFlutterWebAppNow => isFlutterAppNow && isDartWebAppNow;

bool get isFlutterNativeAppNow => isFlutterAppNow && !isDartWebAppNow;

bool get isDebugFlutterAppNow => isFlutterAppNow && !isProfileBuildNow;

bool get isRunningOnDartVM => serviceManager.vm.name != 'ChromeDebugProxy';
Expand Down Expand Up @@ -109,16 +121,33 @@ class ConnectedApp {

Future<void> initializeValues() async {
await Future.wait([isFlutterApp, isProfileBuild, isDartWebApp]);
if (isFlutterAppNow) {
try {
final response = await serviceManager.flutterVersion;
_flutterVersion = FlutterVersion.parse(response.json);
} catch (e) {
logger.log(
'Failed to fetch flutter version from '
'`ConnectedApp.initializeValues`: $e',
);
}

// No need to check the flutter version for Flutter web apps, as the
// performance tools that consume [flutterVersionNow] are not available for
// flutter web apps.
if (isFlutterNativeAppNow) {
final flutterVersionServiceListenable = serviceManager
.registeredServiceListenable(registrations.flutterVersion.service);
VoidCallback listener;
flutterVersionServiceListenable.addListener(listener = () async {
final registered = flutterVersionServiceListenable.value;
if (registered) {
_flutterVersionCompleter.complete(
FlutterVersion.parse((await serviceManager.flutterVersion).json));
}
});

_flutterVersion = await _flutterVersionCompleter.future.timeout(
_flutterVersionTimeout,
onTimeout: () {
logger.log(
'Timed out trying to fetch flutter version from '
'`ConnectedApp.initializeValues`.',
);
return Future<FlutterVersion>.value();
},
);
flutterVersionServiceListenable.removeListener(listener);
}
generateDevToolsTitle();
}
Expand Down
4 changes: 2 additions & 2 deletions packages/devtools_app/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ dependencies:
web_socket_channel: ^2.0.0

dev_dependencies:
build_runner: ^1.3.0
build_runner: ^2.0.4
devtools:
path: ../devtools
devtools_testing: 2.2.4
flutter_test:
sdk: flutter
mockito: ^4.0.0
mockito: ^5.0.9
test: any # This version is pinned by Flutter so we don't need to set one explicitly.
webkit_inspection_protocol: '>=0.5.0 <2.0.0'

Expand Down

0 comments on commit 9a92b84

Please sign in to comment.