55import 'dart:async' ;
66
77import 'package:dwds/data/build_result.dart' ;
8+ import 'package:dwds/src/config/tool_configuration.dart' ;
89import 'package:dwds/src/connections/app_connection.dart' ;
910import 'package:dwds/src/connections/debug_connection.dart' ;
1011import 'package:dwds/src/events.dart' ;
1112import 'package:dwds/src/handlers/dev_handler.dart' ;
1213import 'package:dwds/src/handlers/injector.dart' ;
1314import 'package:dwds/src/handlers/socket_connections.dart' ;
14- import 'package:dwds/src/loaders/strategy.dart' ;
1515import 'package:dwds/src/readers/asset_reader.dart' ;
1616import 'package:dwds/src/servers/devtools.dart' ;
1717import 'package:dwds/src/servers/extension_backend.dart' ;
18- import 'package:dwds/src/services/expression_compiler.dart' ;
19- import 'package:dwds/src/utilities/globals.dart' ;
2018import 'package:logging/logging.dart' ;
2119import 'package:shelf/shelf.dart' ;
2220import 'package:sse/server/sse_handler.dart' ;
@@ -66,36 +64,16 @@ class Dwds {
6664 required AssetReader assetReader,
6765 required Stream <BuildResult > buildResults,
6866 required ConnectionProvider chromeConnection,
69- required LoadStrategy loadStrategy,
70- required bool enableDebugging,
71- // TODO(annagrin): make expressionCompiler argument required
72- // [issue 881](https://github.com/dart-lang/webdev/issues/881)
73- ExpressionCompiler ? expressionCompiler,
74- bool enableDebugExtension = false ,
75- String hostname = 'localhost' ,
76- bool useSseForDebugProxy = true ,
77- bool useSseForDebugBackend = true ,
78- bool useSseForInjectedClient = true ,
79- UrlEncoder ? urlEncoder,
80- bool spawnDds = true ,
81- // TODO(elliette): DevTools is inconsistently capitalized throughout this
82- // file. Change all occurrences of devtools/Devtools to devTools/DevTools.
83- bool enableDevtoolsLaunch = true ,
84- DevtoolsLauncher ? devtoolsLauncher,
85- bool launchDevToolsInNewWindow = true ,
86- bool emitDebugEvents = true ,
87- bool isInternalBuild = false ,
88- Future <bool > Function ()? isFlutterApp,
67+ required ToolConfiguration toolConfiguration,
8968 }) async {
90- globalLoadStrategy = loadStrategy;
91- globalIsInternalBuild = isInternalBuild;
92- isFlutterApp ?? = () => Future .value (true );
93-
69+ globalToolConfiguration = toolConfiguration;
70+ final debugSettings = toolConfiguration.debugSettings;
71+ final appMetadata = toolConfiguration.appMetadata;
9472 DevTools ? devTools;
9573 Future <String >? extensionUri;
9674 ExtensionBackend ? extensionBackend;
97- if (enableDebugExtension) {
98- final handler = useSseForDebugBackend
75+ if (debugSettings. enableDebugExtension) {
76+ final handler = debugSettings. useSseForDebugBackend
9977 ? SseSocketHandler (
10078 SseHandler (
10179 Uri .parse ('/\$ debug' ),
@@ -108,58 +86,56 @@ class Dwds {
10886 )
10987 : WebSocketSocketHandler ();
11088
111- extensionBackend = await ExtensionBackend .start (handler, hostname);
89+ extensionBackend =
90+ await ExtensionBackend .start (handler, appMetadata.hostname);
11291 extensionUri = Future .value (
11392 Uri (
114- scheme: useSseForDebugBackend ? 'http' : 'ws' ,
93+ scheme: debugSettings. useSseForDebugBackend ? 'http' : 'ws' ,
11594 host: extensionBackend.hostname,
11695 port: extensionBackend.port,
11796 path: r'$debug' ,
11897 ).toString (),
11998 );
120- if (urlEncoder != null ) extensionUri = urlEncoder (await extensionUri);
99+ final urlEncoder = debugSettings.urlEncoder;
100+ if (urlEncoder != null ) {
101+ extensionUri = urlEncoder (await extensionUri);
102+ }
121103 }
122104
123- final serveDevTools = devtoolsLauncher != null ;
124- if (serveDevTools ) {
125- devTools = await devtoolsLauncher ( hostname);
105+ final devToolsLauncher = debugSettings.devToolsLauncher ;
106+ if (devToolsLauncher != null ) {
107+ devTools = await devToolsLauncher (appMetadata. hostname);
126108 final uri =
127109 Uri (scheme: 'http' , host: devTools.hostname, port: devTools.port);
128110 _logger.info ('Serving DevTools at $uri \n ' );
129111 }
130112
131113 final injected = DwdsInjector (
132- loadStrategy,
133- useSseForInjectedClient: useSseForInjectedClient,
134114 extensionUri: extensionUri,
135- enableDevtoolsLaunch: enableDevtoolsLaunch,
136- emitDebugEvents: emitDebugEvents,
137- isInternalBuild: isInternalBuild,
138- isFlutterApp: isFlutterApp,
139115 );
140116
141117 final devHandler = DevHandler (
142118 chromeConnection,
143119 buildResults,
144120 devTools,
145121 assetReader,
146- hostname,
122+ appMetadata. hostname,
147123 extensionBackend,
148- urlEncoder,
149- useSseForDebugProxy,
150- useSseForInjectedClient,
151- expressionCompiler,
124+ debugSettings. urlEncoder,
125+ debugSettings. useSseForDebugProxy,
126+ debugSettings. useSseForInjectedClient,
127+ debugSettings. expressionCompiler,
152128 injected,
153- spawnDds,
154- launchDevToolsInNewWindow,
129+ debugSettings. spawnDds,
130+ debugSettings. launchDevToolsInNewWindow,
155131 );
156132
157133 return Dwds ._(
158134 injected.middleware,
159135 devTools,
160136 devHandler,
161137 assetReader,
162- enableDebugging,
138+ debugSettings. enableDebugging,
163139 );
164140 }
165141}
0 commit comments