diff --git a/dev/bots/test.dart b/dev/bots/test.dart index 1a65d04b8a..d767b4977e 100644 --- a/dev/bots/test.dart +++ b/dev/bots/test.dart @@ -785,7 +785,6 @@ Future _runFrameworkTests() async { await _pubRunTest(path.join(flutterRoot, 'dev', 'bots')); await _pubRunTest(path.join(flutterRoot, 'dev', 'devicelab'), ensurePrecompiledTool: false); // See https://github.com/flutter/flutter/issues/86209 await _pubRunTest(path.join(flutterRoot, 'dev', 'conductor', 'core'), forceSingleCore: true); - await _runFlutterTest(path.join(flutterRoot, 'dev', 'conductor', 'ui')); await _runFlutterTest(path.join(flutterRoot, 'dev', 'integration_tests', 'android_semantics_testing')); await _runFlutterTest(path.join(flutterRoot, 'dev', 'manual_tests')); await _runFlutterTest(path.join(flutterRoot, 'dev', 'tools', 'vitool')); diff --git a/dev/conductor/ui/.gitignore b/dev/conductor/ui/.gitignore deleted file mode 100644 index 0fa6b675c0..0000000000 --- a/dev/conductor/ui/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Web related -lib/generated_plugin_registrant.dart - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/dev/conductor/ui/.metadata b/dev/conductor/ui/.metadata deleted file mode 100644 index 1c084186a2..0000000000 --- a/dev/conductor/ui/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled and should not be manually edited. - -version: - revision: f47eac9c5868e57cc2398d9fc3f05e8317ba36d2 - channel: master - -project_type: app diff --git a/dev/conductor/ui/analysis_options.yaml b/dev/conductor/ui/analysis_options.yaml deleted file mode 100644 index 60e3733706..0000000000 --- a/dev/conductor/ui/analysis_options.yaml +++ /dev/null @@ -1,7 +0,0 @@ -include: ../../analysis_options.yaml - -linter: - rules: - avoid_catches_without_on_clauses: true - prefer_relative_imports: true - unawaited_futures: true diff --git a/dev/conductor/ui/lib/main.dart b/dev/conductor/ui/lib/main.dart deleted file mode 100644 index d57d3bf67e..0000000000 --- a/dev/conductor/ui/lib/main.dart +++ /dev/null @@ -1,69 +0,0 @@ -// 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:io' as io; -import 'package:conductor_core/conductor_core.dart'; -import 'package:conductor_core/proto.dart' as pb; -import 'package:file/file.dart'; -import 'package:file/local.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:platform/platform.dart'; - -import 'widgets/progression.dart'; - -const String _title = 'Flutter Desktop Conductor (Not ready, do not use)'; - -const LocalFileSystem _fs = LocalFileSystem(); -const LocalPlatform _platform = LocalPlatform(); -final String _stateFilePath = defaultStateFilePath(_platform); - -Future main() async { - // The app currently only supports macOS and Linux. - if (kIsWeb || io.Platform.isWindows) { - throw Exception('The conductor only supports MacOS and Linux desktop'); - } - final File _stateFile = _fs.file(_stateFilePath); - final pb.ConductorState? state = _stateFile.existsSync() ? readStateFromFile(_stateFile) : null; - - WidgetsFlutterBinding.ensureInitialized(); - runApp(MyApp(state)); -} - -class MyApp extends StatelessWidget { - const MyApp( - this.state, { - Key? key, - }) : super(key: key); - - final pb.ConductorState? state; - - @override - Widget build(BuildContext context) { - return MaterialApp( - title: _title, - home: Scaffold( - appBar: AppBar( - title: const Text(_title), - ), - body: Padding( - padding: const EdgeInsets.all(20.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SelectableText( - 'Desktop app for managing a release of the Flutter SDK, currently in development', - ), - const SizedBox(height: 10.0), - MainProgression( - releaseState: state, - stateFilePath: _stateFilePath, - ), - ], - ), - ), - ), - ); - } -} diff --git a/dev/conductor/ui/lib/widgets/common/tooltip.dart b/dev/conductor/ui/lib/widgets/common/tooltip.dart deleted file mode 100644 index 8fb08f9a5f..0000000000 --- a/dev/conductor/ui/lib/widgets/common/tooltip.dart +++ /dev/null @@ -1,30 +0,0 @@ -// 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 'package:flutter/material.dart'; - -/// Displays detailed info message in a tooltip widget. -class InfoTooltip extends StatelessWidget { - const InfoTooltip({ - Key? key, - required this.tooltipName, - required this.tooltipMessage, - }) : super(key: key); - - final String tooltipName; - final String tooltipMessage; - - @override - Widget build(BuildContext context) { - return Tooltip( - padding: const EdgeInsets.all(10.0), - message: tooltipMessage, - child: Icon( - Icons.info, - size: 16.0, - key: Key('${tooltipName}Tooltip'), - ), - ); - } -} diff --git a/dev/conductor/ui/lib/widgets/conductor_status.dart b/dev/conductor/ui/lib/widgets/conductor_status.dart deleted file mode 100644 index 75cbf19aff..0000000000 --- a/dev/conductor/ui/lib/widgets/conductor_status.dart +++ /dev/null @@ -1,285 +0,0 @@ -// 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 'package:conductor_core/conductor_core.dart'; -import 'package:conductor_core/proto.dart' as pb; -import 'package:flutter/material.dart'; - -import 'common/tooltip.dart'; - -/// Displays the current conductor state. -class ConductorStatus extends StatefulWidget { - const ConductorStatus({ - Key? key, - this.releaseState, - required this.stateFilePath, - }) : super(key: key); - - final pb.ConductorState? releaseState; - final String stateFilePath; - - @override - State createState() => ConductorStatusState(); - - static final List headerElements = [ - 'Conductor Version', - 'Release Channel', - 'Release Version', - 'Release Started at', - 'Release Updated at', - 'Dart SDK Revision', - ]; - - static final List engineRepoElements = [ - 'Engine Candidate Branch', - 'Engine Starting Git HEAD', - 'Engine Current Git HEAD', - 'Engine Path to Checkout', - 'Engine LUCI Dashboard', - ]; - - static final List frameworkRepoElements = [ - 'Framework Candidate Branch', - 'Framework Starting Git HEAD', - 'Framework Current Git HEAD', - 'Framework Path to Checkout', - 'Framework LUCI Dashboard', - ]; -} - -class ConductorStatusState extends State { - /// Returns the conductor state in a Map format for the desktop app to consume. - Map presentStateDesktop(pb.ConductorState state) { - final List> engineCherrypicks = >[]; - for (final pb.Cherrypick cherrypick in state.engine.cherrypicks) { - engineCherrypicks - .add({'trunkRevision': cherrypick.trunkRevision, 'state': '${cherrypick.state}'}); - } - - final List> frameworkCherrypicks = >[]; - for (final pb.Cherrypick cherrypick in state.framework.cherrypicks) { - frameworkCherrypicks - .add({'trunkRevision': cherrypick.trunkRevision, 'state': '${cherrypick.state}'}); - } - - return { - 'Conductor Version': state.conductorVersion, - 'Release Channel': state.releaseChannel, - 'Release Version': state.releaseVersion, - 'Release Started at': DateTime.fromMillisecondsSinceEpoch(state.createdDate.toInt()).toString(), - 'Release Updated at': DateTime.fromMillisecondsSinceEpoch(state.lastUpdatedDate.toInt()).toString(), - 'Engine Candidate Branch': state.engine.candidateBranch, - 'Engine Starting Git HEAD': state.engine.startingGitHead, - 'Engine Current Git HEAD': state.engine.currentGitHead, - 'Engine Path to Checkout': state.engine.checkoutPath, - 'Engine LUCI Dashboard': luciConsoleLink(state.releaseChannel, 'engine'), - 'Engine Cherrypicks': engineCherrypicks, - 'Dart SDK Revision': state.engine.dartRevision, - 'Framework Candidate Branch': state.framework.candidateBranch, - 'Framework Starting Git HEAD': state.framework.startingGitHead, - 'Framework Current Git HEAD': state.framework.currentGitHead, - 'Framework Path to Checkout': state.framework.checkoutPath, - 'Framework LUCI Dashboard': luciConsoleLink(state.releaseChannel, 'flutter'), - 'Framework Cherrypicks': frameworkCherrypicks, - 'Current Phase': state.currentPhase, - }; - } - - @override - Widget build(BuildContext context) { - late final Map currentStatus; - if (widget.releaseState == null) { - return SelectableText('No persistent state file found at ${widget.stateFilePath}'); - } else { - currentStatus = presentStateDesktop(widget.releaseState!); - } - - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Table( - columnWidths: const { - 0: FixedColumnWidth(200.0), - }, - children: [ - for (String headerElement in ConductorStatus.headerElements) - TableRow( - children: [ - Text('$headerElement:'), - SelectableText((currentStatus[headerElement] == null || currentStatus[headerElement] == '') - ? 'Unknown' - : currentStatus[headerElement]! as String), - ], - ), - ], - ), - const SizedBox(height: 20.0), - Wrap( - children: [ - Column( - children: [ - RepoInfoExpansion(engineOrFramework: 'engine', currentStatus: currentStatus), - const SizedBox(height: 10.0), - CherrypickTable(engineOrFramework: 'engine', currentStatus: currentStatus), - ], - ), - const SizedBox(width: 20.0), - Column( - children: [ - RepoInfoExpansion(engineOrFramework: 'framework', currentStatus: currentStatus), - const SizedBox(height: 10.0), - CherrypickTable(engineOrFramework: 'framework', currentStatus: currentStatus), - ], - ), - ], - ) - ], - ), - ], - ); - } -} - -/// Widget for showing the engine and framework cherrypicks applied to the current release. -/// -/// Shows the cherrypicks' SHA and status in two separate table DataRow cells. -class CherrypickTable extends StatefulWidget { - const CherrypickTable({ - Key? key, - required this.engineOrFramework, - required this.currentStatus, - }) : super(key: key); - - final String engineOrFramework; - final Map currentStatus; - - @override - State createState() => CherrypickTableState(); -} - -class CherrypickTableState extends State { - @override - Widget build(BuildContext context) { - final List> cherrypicks = widget.engineOrFramework == 'engine' - ? widget.currentStatus['Engine Cherrypicks']! as List> - : widget.currentStatus['Framework Cherrypicks']! as List>; - - return DataTable( - dataRowHeight: 30.0, - headingRowHeight: 30.0, - decoration: BoxDecoration(border: Border.all(color: Colors.grey)), - columns: [ - DataColumn(label: Text('${widget.engineOrFramework == 'engine' ? 'Engine' : 'Framework'} Cherrypicks')), - DataColumn( - label: Row( - children: [ - const Text('Status'), - const SizedBox(width: 10.0), - InfoTooltip( - tooltipName: widget.engineOrFramework, - tooltipMessage: ''' -PENDING: The cherrypick has not yet been applied. -PENDING_WITH_CONFLICT: The cherrypick has not been applied and will require manual resolution. -COMPLETED: The cherrypick has been successfully applied to the local checkout. -ABANDONED: The cherrypick will NOT be applied in this release.''', - ), - ], - ), - ), - ], - rows: cherrypicks.map((Map cherrypick) { - return DataRow( - cells: [ - DataCell( - SelectableText(cherrypick['trunkRevision']!), - ), - DataCell( - SelectableText(cherrypick['state']!), - ), - ], - ); - }).toList(), - ); - } -} - -/// Widget to display repo info related to the engine and framework. -/// -/// Click to show/hide the repo info in a dropdown fashion. By default the section is hidden. -class RepoInfoExpansion extends StatefulWidget { - const RepoInfoExpansion({ - Key? key, - required this.engineOrFramework, - required this.currentStatus, - }) : super(key: key); - - final String engineOrFramework; - final Map currentStatus; - - @override - State createState() => RepoInfoExpansionState(); -} - -class RepoInfoExpansionState extends State { - bool _isExpanded = false; - - /// Show/hide [ExpansionPanel]. - void showHide() { - setState(() { - _isExpanded = !_isExpanded; - }); - } - - @override - Widget build(BuildContext context) { - return SizedBox( - width: 500.0, - child: ExpansionPanelList( - expandedHeaderPadding: EdgeInsets.zero, - expansionCallback: (int index, bool isExpanded) { - showHide(); - }, - children: [ - ExpansionPanel( - isExpanded: _isExpanded, - headerBuilder: (BuildContext context, bool isExpanded) { - return ListTile( - key: Key('${widget.engineOrFramework}RepoInfoDropdown'), - title: Text('${widget.engineOrFramework == 'engine' ? 'Engine' : 'Framework'} Repo Info'), - onTap: () { - showHide(); - }); - }, - body: Padding( - padding: const EdgeInsets.all(15.0), - child: Table( - columnWidths: const { - 0: FixedColumnWidth(240.0), - }, - children: [ - for (String repoElement in widget.engineOrFramework == 'engine' - ? ConductorStatus.engineRepoElements - : ConductorStatus.frameworkRepoElements) - TableRow( - decoration: const BoxDecoration(border: Border(top: BorderSide(color: Colors.grey))), - children: [ - Text('$repoElement:'), - SelectableText( - (widget.currentStatus[repoElement] == null || widget.currentStatus[repoElement] == '') - ? 'Unknown' - : widget.currentStatus[repoElement]! as String), - ], - ), - ], - ), - ), - ), - ], - ), - ); - } -} diff --git a/dev/conductor/ui/lib/widgets/create_release_substeps.dart b/dev/conductor/ui/lib/widgets/create_release_substeps.dart deleted file mode 100644 index 1926ae80ea..0000000000 --- a/dev/conductor/ui/lib/widgets/create_release_substeps.dart +++ /dev/null @@ -1,201 +0,0 @@ -// 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 'package:flutter/material.dart'; - -import 'common/tooltip.dart'; - -/// Displays all substeps related to the 1st step. -/// -/// Uses input fields and dropdowns to capture all the parameters of the conductor start command. -class CreateReleaseSubsteps extends StatefulWidget { - const CreateReleaseSubsteps({ - Key? key, - required this.nextStep, - }) : super(key: key); - - final VoidCallback nextStep; - - @override - State createState() => CreateReleaseSubstepsState(); - - static const List substepTitles = [ - 'Candidate Branch', - 'Release Channel', - 'Framework Mirror', - 'Engine Mirror', - 'Engine Cherrypicks (if necessary)', - 'Framework Cherrypicks (if necessary)', - 'Dart Revision (if necessary)', - 'Increment', - ]; -} - -class CreateReleaseSubstepsState extends State { - // Initialize a public state so it could be accessed in the test file. - @visibleForTesting - late Map releaseData = {}; - - /// Updates the corresponding [field] in [releaseData] with [data]. - void setReleaseData(String field, String data) { - setState(() { - releaseData = { - ...releaseData, - field: data, - }; - }); - } - - @override - Widget build(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - InputAsSubstep( - index: 0, - setReleaseData: setReleaseData, - hintText: 'The candidate branch the release will be based on.', - ), - CheckboxListTileDropdown( - index: 1, - releaseData: releaseData, - setReleaseData: setReleaseData, - options: const ['dev', 'beta', 'stable'], - ), - InputAsSubstep( - index: 2, - setReleaseData: setReleaseData, - hintText: "Git remote of the Conductor user's Framework repository mirror.", - ), - InputAsSubstep( - index: 3, - setReleaseData: setReleaseData, - hintText: "Git remote of the Conductor user's Engine repository mirror.", - ), - InputAsSubstep( - index: 4, - setReleaseData: setReleaseData, - hintText: 'Engine cherrypick hashes to be applied. Multiple hashes delimited by a comma, no spaces.', - ), - InputAsSubstep( - index: 5, - setReleaseData: setReleaseData, - hintText: 'Framework cherrypick hashes to be applied. Multiple hashes delimited by a comma, no spaces.', - ), - InputAsSubstep( - index: 6, - setReleaseData: setReleaseData, - hintText: 'New Dart revision to cherrypick.', - ), - CheckboxListTileDropdown( - index: 7, - releaseData: releaseData, - setReleaseData: setReleaseData, - options: const ['y', 'z', 'm', 'n'], - ), - const SizedBox(height: 20.0), - Center( - // TODO(Yugue): Add regex validation for each parameter input - // before Continue button is enabled, https://github.com/flutter/flutter/issues/91925. - child: ElevatedButton( - key: const Key('step1continue'), - onPressed: () { - widget.nextStep(); - }, - child: const Text('Continue'), - ), - ), - ], - ); - } -} - -typedef SetReleaseData = void Function(String name, String data); - -/// Captures the input values and updates the corresponding field in [releaseData]. -class InputAsSubstep extends StatelessWidget { - const InputAsSubstep({ - Key? key, - required this.index, - required this.setReleaseData, - this.hintText, - }) : super(key: key); - - final int index; - final SetReleaseData setReleaseData; - final String? hintText; - - @override - Widget build(BuildContext context) { - return TextFormField( - key: Key(CreateReleaseSubsteps.substepTitles[index]), - decoration: InputDecoration( - labelText: CreateReleaseSubsteps.substepTitles[index], - hintText: hintText, - ), - onChanged: (String data) { - setReleaseData(CreateReleaseSubsteps.substepTitles[index], data); - }, - ); - } -} - -/// Captures the chosen option and updates the corresponding field in [releaseData]. -class CheckboxListTileDropdown extends StatelessWidget { - const CheckboxListTileDropdown({ - Key? key, - required this.index, - required this.releaseData, - required this.setReleaseData, - required this.options, - }) : super(key: key); - - final int index; - final Map releaseData; - final SetReleaseData setReleaseData; - final List options; - - @override - Widget build(BuildContext context) { - return Row( - children: [ - Text( - CreateReleaseSubsteps.substepTitles[index], - style: Theme.of(context).textTheme.subtitle1!.copyWith(color: Colors.grey[700]), - ), - // Only add a tooltip for the increment dropdown - if (index == 7) - const Padding( - padding: EdgeInsets.fromLTRB(10.0, 0, 0, 0), - child: InfoTooltip( - tooltipName: 'ReleaseIncrement', - // m: has one less space than the other lines, because otherwise, - // it would display on the app one more space than the other lines - tooltipMessage: ''' -m: Indicates a standard dev release. -n: Indicates a hotfix to a dev or beta release. -y: Indicates the first dev release after a beta release. -z: Indicates a hotfix to a stable release.''', - ), - ), - const SizedBox(width: 20.0), - DropdownButton( - hint: const Text('-'), // Dropdown initially displays the hint when no option is selected. - key: Key(CreateReleaseSubsteps.substepTitles[index]), - value: releaseData[CreateReleaseSubsteps.substepTitles[index]], - icon: const Icon(Icons.arrow_downward), - items: options.map>((String value) { - return DropdownMenuItem( - value: value, - child: Text(value), - ); - }).toList(), - onChanged: (String? newValue) { - setReleaseData(CreateReleaseSubsteps.substepTitles[index], newValue!); - }, - ), - ], - ); - } -} diff --git a/dev/conductor/ui/lib/widgets/progression.dart b/dev/conductor/ui/lib/widgets/progression.dart deleted file mode 100644 index f699220e66..0000000000 --- a/dev/conductor/ui/lib/widgets/progression.dart +++ /dev/null @@ -1,138 +0,0 @@ -// 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 'package:conductor_core/proto.dart' as pb; -import 'package:flutter/material.dart'; - -import 'conductor_status.dart'; -import 'create_release_substeps.dart'; -import 'substeps.dart'; - -/// Displays the progression and each step of the release from the conductor. -/// -// TODO(Yugue): Add documentation to explain -// each step of the release, https://github.com/flutter/flutter/issues/90981. -class MainProgression extends StatefulWidget { - const MainProgression({ - Key? key, - this.releaseState, - required this.stateFilePath, - }) : super(key: key); - - final pb.ConductorState? releaseState; - final String stateFilePath; - - @override - State createState() => MainProgressionState(); - - static const List _stepTitles = [ - 'Initialize a New Flutter Release', - 'Flutter Engine Cherrypicks', - 'Flutter Framework Cherrypicks', - 'Publish the Release', - 'Release is Successfully published' - ]; -} - -class MainProgressionState extends State { - int _completedStep = 0; - - /// Move forward the stepper to the next step of the release. - void nextStep() { - if (_completedStep < MainProgression._stepTitles.length - 1) { - setState(() { - _completedStep += 1; - }); - } - } - - /// Change each step's state according to [_completedStep]. - StepState handleStepState(int index) { - if (_completedStep > index) { - return StepState.complete; - } else if (_completedStep == index) { - return StepState.indexed; - } else { - return StepState.disabled; - } - } - - final ScrollController _scrollController = ScrollController(); - - @override - Widget build(BuildContext context) { - return Expanded( - child: Scrollbar( - isAlwaysShown: true, - controller: _scrollController, - child: ListView( - controller: _scrollController, - padding: const EdgeInsets.symmetric(vertical: 12.0), - physics: const ClampingScrollPhysics(), - children: [ - ConductorStatus( - releaseState: widget.releaseState, - stateFilePath: widget.stateFilePath, - ), - const SizedBox(height: 20.0), - Stepper( - controlsBuilder: (BuildContext context, ControlsDetails details) => Row(), - physics: const ScrollPhysics(), - currentStep: _completedStep, - onStepContinue: nextStep, - steps: [ - Step( - title: Text(MainProgression._stepTitles[0]), - content: Column( - children: [ - CreateReleaseSubsteps(nextStep: nextStep), - ], - ), - isActive: true, - state: handleStepState(0), - ), - Step( - title: Text(MainProgression._stepTitles[1]), - content: Column( - children: [ - ConductorSubsteps(nextStep: nextStep), - ], - ), - isActive: true, - state: handleStepState(1), - ), - Step( - title: Text(MainProgression._stepTitles[2]), - content: Column( - children: [ - ConductorSubsteps(nextStep: nextStep), - ], - ), - isActive: true, - state: handleStepState(2), - ), - Step( - title: Text(MainProgression._stepTitles[3]), - content: Column( - children: [ - ConductorSubsteps(nextStep: nextStep), - ], - ), - isActive: true, - state: handleStepState(3), - ), - Step( - title: Text(MainProgression._stepTitles[4]), - content: Column(), - isActive: true, - state: handleStepState(4), - ), - ], - ), - ], - ), - ), - ); - } -} diff --git a/dev/conductor/ui/lib/widgets/substeps.dart b/dev/conductor/ui/lib/widgets/substeps.dart deleted file mode 100644 index f451d03167..0000000000 --- a/dev/conductor/ui/lib/widgets/substeps.dart +++ /dev/null @@ -1,89 +0,0 @@ -// 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 'package:flutter/material.dart'; - -/// Group and display all substeps within a step into a widget. -/// -/// When all substeps are checked, [nextStep] can be executed to proceed to the next step. -class ConductorSubsteps extends StatefulWidget { - const ConductorSubsteps({ - Key? key, - required this.nextStep, - }) : super(key: key); - - final VoidCallback nextStep; - - @override - State createState() => ConductorSubstepsState(); - - static const List _substepTitles = [ - 'Substep 1', - 'Substep 2', - 'Substep 3', - ]; -} - -class ConductorSubstepsState extends State { - List substepChecked = List.filled(ConductorSubsteps._substepTitles.length, false); - bool _nextStepPressed = false; - - // Hide the continue button once it is pressed. - void tapped() { - setState(() => _nextStepPressed = true); - } - - // When substepChecked[0] is true, the first substep is checked. If it false, it is unchecked. - void substepPressed(int index) { - setState(() { - substepChecked[index] = !substepChecked[index]; - }); - } - - @override - Widget build(BuildContext context) { - return Column( - children: [ - CheckboxListTile( - value: substepChecked[0], - onChanged: (bool? newValue) { - substepPressed(0); - }, - title: Text(ConductorSubsteps._substepTitles[0]), - controlAffinity: ListTileControlAffinity.leading, - activeColor: Colors.grey, - selected: substepChecked[0], - ), - CheckboxListTile( - value: substepChecked[1], - onChanged: (bool? newValue) { - substepPressed(1); - }, - title: Text(ConductorSubsteps._substepTitles[1]), - controlAffinity: ListTileControlAffinity.leading, - activeColor: Colors.grey, - selected: substepChecked[1], - ), - CheckboxListTile( - value: substepChecked[2], - onChanged: (bool? newValue) { - substepPressed(2); - }, - title: Text(ConductorSubsteps._substepTitles[2]), - controlAffinity: ListTileControlAffinity.leading, - activeColor: Colors.grey, - selected: substepChecked[2], - ), - if (!substepChecked.contains(false) && !_nextStepPressed) - ElevatedButton( - onPressed: () { - tapped(); - widget.nextStep(); - }, - child: const Text('Continue'), - ), - ], - ); - } -} diff --git a/dev/conductor/ui/linux/.gitignore b/dev/conductor/ui/linux/.gitignore deleted file mode 100644 index d3896c9844..0000000000 --- a/dev/conductor/ui/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/dev/conductor/ui/linux/CMakeLists.txt b/dev/conductor/ui/linux/CMakeLists.txt deleted file mode 100644 index 1fb96fefe0..0000000000 --- a/dev/conductor/ui/linux/CMakeLists.txt +++ /dev/null @@ -1,116 +0,0 @@ -cmake_minimum_required(VERSION 3.10) -project(runner LANGUAGES CXX) - -set(BINARY_NAME "conductor") -set(APPLICATION_ID "com.example.conductor") - -cmake_policy(SET CMP0063 NEW) - -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Root filesystem for cross-building. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# Configure build options. -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -endif() - -# Compilation settings that should be applied to most targets. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_14) - target_compile_options(${TARGET} PRIVATE -Wall -Werror) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") - -# Flutter library and tool build rules. -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# Application build -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) -apply_standard_settings(${BINARY_NAME}) -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) -add_dependencies(${BINARY_NAME} flutter_assemble) -# Only the install-generated bundle's copy of the executable will launch -# correctly, since the resources must in the right relative locations. To avoid -# people trying to run the unbundled copy, put it in a subdirectory instead of -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") - install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() diff --git a/dev/conductor/ui/linux/flutter/CMakeLists.txt b/dev/conductor/ui/linux/flutter/CMakeLists.txt deleted file mode 100644 index 33fd5801e7..0000000000 --- a/dev/conductor/ui/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,87 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. - -# Serves the same purpose as list(TRANSFORM ... PREPEND ...), -# which isn't available in 3.10. -function(list_prepend LIST_NAME PREFIX) - set(NEW_LIST "") - foreach(element ${${LIST_NAME}}) - list(APPEND NEW_LIST "${PREFIX}${element}") - endforeach(element) - set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) -endfunction() - -# === Flutter Library === -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) -pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) - -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "fl_basic_message_channel.h" - "fl_binary_codec.h" - "fl_binary_messenger.h" - "fl_dart_project.h" - "fl_engine.h" - "fl_json_message_codec.h" - "fl_json_method_codec.h" - "fl_message_codec.h" - "fl_method_call.h" - "fl_method_channel.h" - "fl_method_codec.h" - "fl_method_response.h" - "fl_plugin_registrar.h" - "fl_plugin_registry.h" - "fl_standard_message_codec.h" - "fl_standard_method_codec.h" - "fl_string_codec.h" - "fl_value.h" - "fl_view.h" - "flutter_linux.h" -) -list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") -target_link_libraries(flutter INTERFACE - PkgConfig::GTK - PkgConfig::GLIB - PkgConfig::GIO -) -add_dependencies(flutter flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CMAKE_CURRENT_BINARY_DIR}/_phony_ - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" - ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} -) diff --git a/dev/conductor/ui/linux/flutter/generated_plugin_registrant.cc b/dev/conductor/ui/linux/flutter/generated_plugin_registrant.cc deleted file mode 100644 index e71a16d23d..0000000000 --- a/dev/conductor/ui/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void fl_register_plugins(FlPluginRegistry* registry) { -} diff --git a/dev/conductor/ui/linux/flutter/generated_plugin_registrant.h b/dev/conductor/ui/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47bc0..0000000000 --- a/dev/conductor/ui/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/dev/conductor/ui/linux/flutter/generated_plugins.cmake b/dev/conductor/ui/linux/flutter/generated_plugins.cmake deleted file mode 100644 index 51436ae8c9..0000000000 --- a/dev/conductor/ui/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,15 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) diff --git a/dev/conductor/ui/linux/main.cc b/dev/conductor/ui/linux/main.cc deleted file mode 100644 index e7c5c54370..0000000000 --- a/dev/conductor/ui/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/dev/conductor/ui/linux/my_application.cc b/dev/conductor/ui/linux/my_application.cc deleted file mode 100644 index ba218fbe0e..0000000000 --- a/dev/conductor/ui/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#endif - -#include "flutter/generated_plugin_registrant.h" - -struct _MyApplication { - GtkApplication parent_instance; - char** dart_entrypoint_arguments; -}; - -G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) - -// Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = - GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "conductor"); - gtk_header_bar_set_show_close_button(header_bar, TRUE); - gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { - gtk_window_set_title(window, "conductor"); - } - - gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); - - g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - - FlView* view = fl_view_new(project); - gtk_widget_show(GTK_WIDGET(view)); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); - - fl_register_plugins(FL_PLUGIN_REGISTRY(view)); - - gtk_widget_grab_focus(GTK_WIDGET(view)); -} - -// Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); - // Strip out the first argument as it is the binary name. - self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); - - g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; - } - - g_application_activate(application); - *exit_status = 0; - - return TRUE; -} - -// Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); - g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); - G_OBJECT_CLASS(my_application_parent_class)->dispose(object); -} - -static void my_application_class_init(MyApplicationClass* klass) { - G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; - G_OBJECT_CLASS(klass)->dispose = my_application_dispose; -} - -static void my_application_init(MyApplication* self) {} - -MyApplication* my_application_new() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/dev/conductor/ui/linux/my_application.h b/dev/conductor/ui/linux/my_application.h deleted file mode 100644 index 8c66ec4854..0000000000 --- a/dev/conductor/ui/linux/my_application.h +++ /dev/null @@ -1,22 +0,0 @@ -// 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. - -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, - GtkApplication) - -/** - * my_application_new: - * - * Creates a new Flutter-based application. - * - * Returns: a new #MyApplication. - */ -MyApplication* my_application_new(); - -#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/dev/conductor/ui/macos/.gitignore b/dev/conductor/ui/macos/.gitignore deleted file mode 100644 index 746adbb6b9..0000000000 --- a/dev/conductor/ui/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/dev/conductor/ui/macos/Flutter/Flutter-Debug.xcconfig b/dev/conductor/ui/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index c2efd0b608..0000000000 --- a/dev/conductor/ui/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/dev/conductor/ui/macos/Flutter/Flutter-Release.xcconfig b/dev/conductor/ui/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index c2efd0b608..0000000000 --- a/dev/conductor/ui/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1 +0,0 @@ -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/dev/conductor/ui/macos/Runner.xcodeproj/project.pbxproj b/dev/conductor/ui/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 8aced95034..0000000000 --- a/dev/conductor/ui/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,572 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 51; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Flutter Assemble"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC111A2044C6BA0003C045; - remoteInfo = FLX; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 33CC110E2044A8840003C045 /* Bundle Framework */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Bundle Framework"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* conductor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "conductor.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* conductor.app */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* conductor.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 33CC10EC2044A3C60003C045 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.Sandbox = { - enabled = 1; - }; - }; - }; - 33CC111A2044C6BA0003C045 = { - CreatedOnToolsVersion = 9.2; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 33CC10E42044A3C60003C045; - productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 33CC10EC2044A3C60003C045 /* Runner */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 33CC10EB2044A3C60003C045 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; - }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, - ); - inputPaths = ( - Flutter/ephemeral/tripwire, - ); - outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 33CC10E92044A3C60003C045 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; - targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 33CC10F52044A3C60003C045 /* Base */, - ); - name = MainMenu.xib; - path = Runner; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 338D0CE9231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Profile; - }; - 338D0CEA231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Profile; - }; - 338D0CEB231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Profile; - }; - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 33CC10FA2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10F92044A3C60003C045 /* Debug */, - 33CC10FA2044A3C60003C045 /* Release */, - 338D0CE9231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10FC2044A3C60003C045 /* Debug */, - 33CC10FD2044A3C60003C045 /* Release */, - 338D0CEA231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC111C2044C6BA0003C045 /* Debug */, - 33CC111D2044C6BA0003C045 /* Release */, - 338D0CEB231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 33CC10E52044A3C60003C045 /* Project object */; -} diff --git a/dev/conductor/ui/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/dev/conductor/ui/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d..0000000000 --- a/dev/conductor/ui/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/dev/conductor/ui/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/dev/conductor/ui/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 9851a574be..0000000000 --- a/dev/conductor/ui/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/conductor/ui/macos/Runner.xcworkspace/contents.xcworkspacedata b/dev/conductor/ui/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a16ed..0000000000 --- a/dev/conductor/ui/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/dev/conductor/ui/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/dev/conductor/ui/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003d..0000000000 --- a/dev/conductor/ui/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/dev/conductor/ui/macos/Runner/AppDelegate.swift b/dev/conductor/ui/macos/Runner/AppDelegate.swift deleted file mode 100644 index d080d41951..0000000000 --- a/dev/conductor/ui/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -// 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 Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f19f..0000000000 --- a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" - }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 3c4935a7ca..0000000000 Binary files a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and /dev/null differ diff --git a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index ed4cc16421..0000000000 Binary files a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and /dev/null differ diff --git a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 483be61389..0000000000 Binary files a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and /dev/null differ diff --git a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png deleted file mode 100644 index bcbf36df2f..0000000000 Binary files a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and /dev/null differ diff --git a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png deleted file mode 100644 index 9c0a652864..0000000000 Binary files a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and /dev/null differ diff --git a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png deleted file mode 100644 index e71a726136..0000000000 Binary files a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and /dev/null differ diff --git a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 8a31fe2dd3..0000000000 Binary files a/dev/conductor/ui/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and /dev/null differ diff --git a/dev/conductor/ui/macos/Runner/Base.lproj/MainMenu.xib b/dev/conductor/ui/macos/Runner/Base.lproj/MainMenu.xib deleted file mode 100644 index 537341abf9..0000000000 --- a/dev/conductor/ui/macos/Runner/Base.lproj/MainMenu.xib +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dev/conductor/ui/macos/Runner/Configs/AppInfo.xcconfig b/dev/conductor/ui/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index 5f74fc515b..0000000000 --- a/dev/conductor/ui/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// Application-level settings for the Runner target. -// -// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the -// future. If not, the values below would default to using the project name when this becomes a -// 'flutter create' template. - -// The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = conductor - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.example.conductor - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2021 com.example. All rights reserved. diff --git a/dev/conductor/ui/macos/Runner/Configs/Debug.xcconfig b/dev/conductor/ui/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd9464..0000000000 --- a/dev/conductor/ui/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/dev/conductor/ui/macos/Runner/Configs/Release.xcconfig b/dev/conductor/ui/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f49561..0000000000 --- a/dev/conductor/ui/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/dev/conductor/ui/macos/Runner/Configs/Warnings.xcconfig b/dev/conductor/ui/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf4780..0000000000 --- a/dev/conductor/ui/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings -GCC_WARN_UNDECLARED_SELECTOR = YES -CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES -CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES -CLANG_WARN_PRAGMA_PACK = YES -CLANG_WARN_STRICT_PROTOTYPES = YES -CLANG_WARN_COMMA = YES -GCC_WARN_STRICT_SELECTOR_MATCH = YES -CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES -CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES -GCC_WARN_SHADOW = YES -CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/dev/conductor/ui/macos/Runner/DebugProfile.entitlements b/dev/conductor/ui/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index 4eac53fe0f..0000000000 --- a/dev/conductor/ui/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - - diff --git a/dev/conductor/ui/macos/Runner/Info.plist b/dev/conductor/ui/macos/Runner/Info.plist deleted file mode 100644 index 4789daa6a4..0000000000 --- a/dev/conductor/ui/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/dev/conductor/ui/macos/Runner/MainFlutterWindow.swift b/dev/conductor/ui/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index a97a96274e..0000000000 --- a/dev/conductor/ui/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,19 +0,0 @@ -// 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 Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController.init() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/dev/conductor/ui/macos/Runner/Release.entitlements b/dev/conductor/ui/macos/Runner/Release.entitlements deleted file mode 100644 index 6631ffa6f2..0000000000 --- a/dev/conductor/ui/macos/Runner/Release.entitlements +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dev/conductor/ui/pubspec.yaml b/dev/conductor/ui/pubspec.yaml deleted file mode 100644 index f987a09b96..0000000000 --- a/dev/conductor/ui/pubspec.yaml +++ /dev/null @@ -1,83 +0,0 @@ -name: conductor_ui -description: Flutter Release GUI - -publish_to: none - -environment: - sdk: ">=2.12.0 <3.0.0" - -dependencies: - conductor_core: - path: ../core - file: 6.1.2 - flutter: - sdk: flutter - platform: 3.0.2 - - archive: 3.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - args: 2.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - async: 2.8.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - characters: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - charcode: 1.3.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - clock: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - collection: 1.15.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - crypto: 3.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - fixnum: 1.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - http: 0.13.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - http_parser: 4.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - intl: 0.17.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - meta: 1.7.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - path: 1.8.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - process: 4.2.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - protobuf: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - source_span: 1.8.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - string_scanner: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - term_glyph: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - typed_data: 1.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - vector_math: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - yaml: 3.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - -dev_dependencies: - test: 1.17.12 - test_api: 0.4.3 - flutter_test: - sdk: flutter - - _fe_analyzer_shared: 29.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - analyzer: 2.6.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - boolean_selector: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - cli_util: 0.3.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - convert: 3.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - coverage: 1.0.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - fake_async: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - frontend_server_client: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - glob: 2.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - http_multi_server: 3.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - io: 1.0.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - js: 0.6.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - logging: 1.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - matcher: 0.12.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - mime: 1.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - node_preamble: 2.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - package_config: 2.0.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - pedantic: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - pool: 1.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - pub_semver: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - shelf: 1.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - shelf_packages_handler: 3.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - shelf_static: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - shelf_web_socket: 1.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - source_map_stack_trace: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - source_maps: 0.10.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - stack_trace: 1.10.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - stream_channel: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - test_core: 0.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - vm_service: 7.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - watcher: 1.0.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - web_socket_channel: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - webkit_inspection_protocol: 1.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade" - -flutter: - uses-material-design: true - -# PUBSPEC CHECKSUM: e816 diff --git a/dev/conductor/ui/test/main_test.dart b/dev/conductor/ui/test/main_test.dart deleted file mode 100644 index 6349306d7b..0000000000 --- a/dev/conductor/ui/test/main_test.dart +++ /dev/null @@ -1,20 +0,0 @@ -// 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:io' show Platform; - -import 'package:conductor_ui/main.dart'; - -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('Main app', () { - testWidgets('Scaffold Initialization', (WidgetTester tester) async { - await tester.pumpWidget(const MyApp(null)); - - expect(find.textContaining('Flutter Desktop Conductor'), findsOneWidget); - expect(find.textContaining('Desktop app for managing a release'), findsOneWidget); - }); - }, skip: Platform.isWindows); // This app does not support Windows [intended] -} diff --git a/dev/conductor/ui/test/widgets/common/tooltip_test.dart b/dev/conductor/ui/test/widgets/common/tooltip_test.dart deleted file mode 100644 index 6428c238ed..0000000000 --- a/dev/conductor/ui/test/widgets/common/tooltip_test.dart +++ /dev/null @@ -1,44 +0,0 @@ -// 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 'package:conductor_ui/widgets/common/tooltip.dart'; -import 'package:flutter/gestures.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - testWidgets('When the cursor hovers over the tooltip, it displays the message.', (WidgetTester tester) async { - await tester.pumpWidget( - StatefulBuilder( - builder: (BuildContext context, StateSetter setState) { - return MaterialApp( - home: Material( - child: Column( - children: const [ - InfoTooltip(tooltipName: 'tooltipTest', tooltipMessage: 'tooltipTestMessage'), - ], - ), - ), - ); - }, - ), - ); - - expect(find.byType(InfoTooltip), findsOneWidget); - - final TestGesture gesture = await tester.createGesture(kind: PointerDeviceKind.mouse); - addTearDown(gesture.removePointer); - await gesture.addPointer(location: Offset.zero); - - /// Tests if the tooltip is displaying the message upon cursor hovering. - /// - /// Before hovering, the message is not found. - /// When the cursor hovers over the icon, the message is displayed and found. - expect(find.textContaining('tooltipTestMessage'), findsNothing); - await tester.pump(); - await gesture.moveTo(tester.getCenter(find.byKey(const Key('tooltipTestTooltip')))); - await tester.pumpAndSettle(); - expect(find.textContaining('tooltipTestMessage'), findsOneWidget); - }); -} diff --git a/dev/conductor/ui/test/widgets/conductor_status_test.dart b/dev/conductor/ui/test/widgets/conductor_status_test.dart deleted file mode 100644 index 58d29e8e30..0000000000 --- a/dev/conductor/ui/test/widgets/conductor_status_test.dart +++ /dev/null @@ -1,203 +0,0 @@ -// 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 'package:conductor_core/conductor_core.dart'; -import 'package:conductor_core/proto.dart' as pb; -import 'package:conductor_ui/widgets/conductor_status.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('conductor_status', () { - late pb.ConductorState state; - - const String testPath = './testPath'; - const String conductorVersion = 'v1.0'; - const String releaseChannel = 'beta'; - const String releaseVersion = '1.2.0-3.4.pre'; - const String engineCandidateBranch = 'flutter-1.2-candidate.3'; - const String frameworkCandidateBranch = 'flutter-1.2-candidate.4'; - const String workingBranch = 'cherrypicks-$engineCandidateBranch'; - const String dartRevision = 'fe9708ab688dcda9923f584ba370a66fcbc3811f'; - const String engineCherrypick1 = 'a5a25cd702b062c24b2c67b8d30b5cb33e0ef6f0'; - const String engineCherrypick2 = '94d06a2e1d01a3b0c693b94d70c5e1df9d78d249'; - const String frameworkCherrypick = '768cd702b691584b2c67b8d30b5cb33e0ef6f0'; - const String engineStartingGitHead = '083049e6cae311910c6a6619a6681b7eba4035b4'; - const String engineCurrentGitHead = '23otn2o3itn2o3int2oi3tno23itno2i3tn'; - const String engineCheckoutPath = '/Users/alexchen/Desktop/flutter_conductor_checkouts/engine'; - const String frameworkStartingGitHead = 'df6981e98rh49er8h149er8h19er8h1'; - const String frameworkCurrentGitHead = '239tnint023t09j2039tj0239tn'; - const String frameworkCheckoutPath = '/Users/alexchen/Desktop/flutter_conductor_checkouts/framework'; - final String engineLUCIDashboard = luciConsoleLink(releaseChannel, 'engine'); - final String frameworkLUCIDashboard = luciConsoleLink(releaseChannel, 'flutter'); - - setUp(() { - state = pb.ConductorState( - engine: pb.Repository( - candidateBranch: engineCandidateBranch, - cherrypicks: [ - pb.Cherrypick(trunkRevision: engineCherrypick1), - pb.Cherrypick(trunkRevision: engineCherrypick2), - ], - dartRevision: dartRevision, - workingBranch: workingBranch, - startingGitHead: engineStartingGitHead, - currentGitHead: engineCurrentGitHead, - checkoutPath: engineCheckoutPath, - ), - framework: pb.Repository( - candidateBranch: frameworkCandidateBranch, - cherrypicks: [ - pb.Cherrypick(trunkRevision: frameworkCherrypick), - ], - workingBranch: workingBranch, - startingGitHead: frameworkStartingGitHead, - currentGitHead: frameworkCurrentGitHead, - checkoutPath: frameworkCheckoutPath, - ), - conductorVersion: conductorVersion, - releaseChannel: releaseChannel, - releaseVersion: releaseVersion, - ); - }); - testWidgets('Conductor_status displays nothing found when there is no state file', (WidgetTester tester) async { - const String testPath = './testPath'; - await tester.pumpWidget( - StatefulBuilder( - builder: (BuildContext context, StateSetter setState) { - return MaterialApp( - home: Material( - child: ListView( - children: const [ - ConductorStatus( - stateFilePath: testPath, - ), - ], - ), - ), - ); - }, - ), - ); - - expect(find.text('No persistent state file found at $testPath'), findsOneWidget); - expect(find.text('Conductor version:'), findsNothing); - }); - - testWidgets('Conductor_status displays correct status with a state file', (WidgetTester tester) async { - await tester.pumpWidget( - StatefulBuilder( - builder: (BuildContext context, StateSetter setState) { - return MaterialApp( - home: Material( - child: ListView( - children: [ - ConductorStatus( - releaseState: state, - stateFilePath: testPath, - ), - ], - ), - ), - ); - }, - ), - ); - - expect(find.text('No persistent state file found at $testPath'), findsNothing); - for (final String headerElement in ConductorStatus.headerElements) { - expect(find.text('$headerElement:'), findsOneWidget); - } - expect(find.text(conductorVersion), findsOneWidget); - expect(find.text(releaseChannel), findsOneWidget); - expect(find.text(releaseVersion), findsOneWidget); - expect(find.text('Release Started at:'), findsOneWidget); - expect(find.text('Release Updated at:'), findsOneWidget); - expect(find.text(dartRevision), findsOneWidget); - expect(find.text(engineCherrypick1), findsOneWidget); - expect(find.text(engineCherrypick2), findsOneWidget); - expect(find.text(frameworkCherrypick), findsOneWidget); - }); - - testWidgets('Conductor_status displays correct status with a null state file except a releaseChannel', - (WidgetTester tester) async { - final pb.ConductorState stateIncomplete = pb.ConductorState( - releaseChannel: releaseChannel, - ); - - await tester.pumpWidget( - StatefulBuilder( - builder: (BuildContext context, StateSetter setState) { - return MaterialApp( - home: Material( - child: ListView( - children: [ - ConductorStatus( - releaseState: stateIncomplete, - stateFilePath: testPath, - ), - ], - ), - ), - ); - }, - ), - ); - - expect(find.text('No persistent state file found at $testPath'), findsNothing); - for (final String headerElement in ConductorStatus.headerElements) { - expect(find.text('$headerElement:'), findsOneWidget); - } - expect(find.text(releaseChannel), findsOneWidget); - expect(find.text('Unknown'), findsNWidgets(11)); - }); - - testWidgets('Repo Info section displays corresponding info in a dropdown fashion', (WidgetTester tester) async { - await tester.pumpWidget( - StatefulBuilder( - builder: (BuildContext context, StateSetter setState) { - return MaterialApp( - home: Material( - child: ListView( - children: [ - ConductorStatus( - releaseState: state, - stateFilePath: testPath, - ), - ], - ), - ), - ); - }, - ), - ); - - expect(find.text('No persistent state file found at $testPath'), findsNothing); - for (final String repoElement in ConductorStatus.engineRepoElements) { - expect(find.text('$repoElement:'), findsOneWidget); - } - for (final String repoElement in ConductorStatus.frameworkRepoElements) { - expect(find.text('$repoElement:'), findsOneWidget); - } - expect(find.text(engineCandidateBranch), findsOneWidget); - expect(find.text(engineStartingGitHead), findsOneWidget); - expect(find.text(engineCurrentGitHead), findsOneWidget); - expect(find.text(engineCheckoutPath), findsOneWidget); - expect(find.text(engineLUCIDashboard), findsOneWidget); - - expect(find.text(frameworkCandidateBranch), findsOneWidget); - expect(find.text(frameworkStartingGitHead), findsOneWidget); - expect(find.text(frameworkCurrentGitHead), findsOneWidget); - expect(find.text(frameworkCheckoutPath), findsOneWidget); - expect(find.text(frameworkLUCIDashboard), findsOneWidget); - - expect(tester.widget(find.byType(ExpansionPanelList).first).children[0].isExpanded, - equals(false)); - await tester.tap(find.byKey(const Key('engineRepoInfoDropdown'))); - await tester.pumpAndSettle(); - expect(tester.widget(find.byType(ExpansionPanelList).first).children[0].isExpanded, - equals(true)); - }); - }); -} diff --git a/dev/conductor/ui/test/widgets/create_release_substeps_test.dart b/dev/conductor/ui/test/widgets/create_release_substeps_test.dart deleted file mode 100644 index 39fba1a5f5..0000000000 --- a/dev/conductor/ui/test/widgets/create_release_substeps_test.dart +++ /dev/null @@ -1,78 +0,0 @@ -// 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 'package:conductor_ui/widgets/create_release_substeps.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - testWidgets('Widget should save all parameters correctly', (WidgetTester tester) async { - const String candidateBranch = 'flutter-1.2-candidate.3'; - const String releaseChannel = 'dev'; - const String frameworkMirror = 'git@github.com:test/flutter.git'; - const String engineMirror = 'git@github.com:test/engine.git'; - const String engineCherrypick = 'a5a25cd702b062c24b2c67b8d30b5cb33e0ef6f0,94d06a2e1d01a3b0c693b94d70c5e1df9d78d249'; - const String frameworkCherrypick = '768cd702b691584b2c67b8d30b5cb33e0ef6f0'; - const String dartRevision = 'fe9708ab688dcda9923f584ba370a66fcbc3811f'; - const String increment = 'y'; - - await tester.pumpWidget( - StatefulBuilder( - builder: (BuildContext context, StateSetter setState) { - return MaterialApp( - home: Material( - child: ListView( - children: [ - CreateReleaseSubsteps( - nextStep: () {}, - ), - ], - ), - ), - ); - }, - ), - ); - - await tester.enterText(find.byKey(const Key('Candidate Branch')), candidateBranch); - - final StatefulElement createReleaseSubsteps = tester.element(find.byType(CreateReleaseSubsteps)); - final CreateReleaseSubstepsState createReleaseSubstepsState = - createReleaseSubsteps.state as CreateReleaseSubstepsState; - - /// Tests the Release Channel dropdown menu. - await tester.tap(find.byKey(const Key('Release Channel'))); - await tester.pumpAndSettle(); // finish the menu animation - expect(createReleaseSubstepsState.releaseData['Release Channel'], equals(null)); - await tester.tap(find.text(releaseChannel).last); - await tester.pumpAndSettle(); // finish the menu animation - - await tester.enterText(find.byKey(const Key('Framework Mirror')), frameworkMirror); - await tester.enterText(find.byKey(const Key('Engine Mirror')), engineMirror); - await tester.enterText(find.byKey(const Key('Engine Cherrypicks (if necessary)')), engineCherrypick); - await tester.enterText(find.byKey(const Key('Framework Cherrypicks (if necessary)')), frameworkCherrypick); - await tester.enterText(find.byKey(const Key('Dart Revision (if necessary)')), dartRevision); - - /// Tests the Increment dropdown menu. - await tester.tap(find.byKey(const Key('Increment'))); - await tester.pumpAndSettle(); // finish the menu animation - expect(createReleaseSubstepsState.releaseData['Increment'], equals(null)); - await tester.tap(find.text(increment).last); - await tester.pumpAndSettle(); // finish the menu animation - - expect( - createReleaseSubstepsState.releaseData, - equals({ - 'Candidate Branch': candidateBranch, - 'Release Channel': releaseChannel, - 'Framework Mirror': frameworkMirror, - 'Engine Mirror': engineMirror, - 'Engine Cherrypicks (if necessary)': engineCherrypick, - 'Framework Cherrypicks (if necessary)': frameworkCherrypick, - 'Dart Revision (if necessary)': dartRevision, - 'Increment': increment, - })); - }); -} diff --git a/dev/conductor/ui/test/widgets/stepper_test.dart b/dev/conductor/ui/test/widgets/stepper_test.dart deleted file mode 100644 index 9bbaf68a58..0000000000 --- a/dev/conductor/ui/test/widgets/stepper_test.dart +++ /dev/null @@ -1,39 +0,0 @@ -// 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 'package:conductor_ui/widgets/progression.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - testWidgets('When user clicks on a previously completed step, Stepper does not navigate back.', - (WidgetTester tester) async { - await tester.pumpWidget( - StatefulBuilder( - builder: (BuildContext context, StateSetter setState) { - return MaterialApp( - home: Material( - child: Column( - children: const [ - MainProgression( - stateFilePath: './testPath', - ), - ], - ), - ), - ); - }, - ), - ); - - expect(tester.widget(find.byType(Stepper)).currentStep, equals(0)); - - await tester.tap(find.text('Continue')); - await tester.pumpAndSettle(); - await tester.tap(find.text('Initialize a New Flutter Release')); - await tester.pumpAndSettle(); - - expect(tester.widget(find.byType(Stepper)).currentStep, equals(1)); - }); -}