| // Copyright 2014 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:convert' show JsonEncoder; |
| |
| import 'package:flutter_driver/driver_extension.dart'; |
| import 'package:flutter_gallery/gallery/demos.dart'; |
| import 'package:flutter_gallery/demo_lists.dart'; |
| import 'package:flutter_gallery/gallery/app.dart' show GalleryApp; |
| import 'package:flutter_test/flutter_test.dart'; |
| import 'package:flutter/material.dart'; |
| |
| import 'run_demos.dart'; |
| |
| // All of the gallery demos, identified as "title@category". |
| // |
| // These names are reported by the test app, see _handleMessages() |
| // in transitions_perf.dart. |
| List<String> _allDemos = kAllGalleryDemos.map( |
| (GalleryDemo demo) => '${demo.title}@${demo.category.name}', |
| ).toList(); |
| |
| Set<String> _unTestedDemos = Set<String>.from(_allDemos); |
| |
| class _MessageHandler { |
| static LiveWidgetController? controller; |
| Future<String> call(String message) async { |
| switch(message) { |
| case 'demoNames': |
| return const JsonEncoder.withIndent(' ').convert(_allDemos); |
| case 'profileDemos': |
| controller ??= LiveWidgetController(WidgetsBinding.instance!); |
| await runDemos(kProfiledDemos, controller!); |
| _unTestedDemos.removeAll(kProfiledDemos); |
| return const JsonEncoder.withIndent(' ').convert(kProfiledDemos); |
| case 'restDemos': |
| controller ??= LiveWidgetController(WidgetsBinding.instance!); |
| final List<String> restDemos = _unTestedDemos.toList(); |
| await runDemos(restDemos, controller!); |
| return const JsonEncoder.withIndent(' ').convert(restDemos); |
| default: |
| throw ArgumentError; |
| } |
| } |
| } |
| |
| void main() { |
| enableFlutterDriverExtension(handler: (String? message) => _MessageHandler().call(message!)); |
| // As in lib/main.dart: overriding https://github.com/flutter/flutter/issues/13736 |
| // for better visual effect at the cost of performance. |
| runApp(const GalleryApp(testMode: true)); |
| } |