4
4
5
5
// @dart = 2.9
6
6
7
- import 'dart:async' ;
8
-
9
- import 'package:logging/logging.dart' ;
10
- import 'package:meta/meta.dart' ;
11
- import 'package:shelf/shelf.dart' ;
12
- import 'package:sse/server/sse_handler.dart' ;
13
- import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart' ;
14
-
15
- import 'data/build_result.dart' ;
16
- import 'src/connections/app_connection.dart' ;
17
- import 'src/connections/debug_connection.dart' ;
18
- import 'src/events.dart' ;
19
- import 'src/handlers/dev_handler.dart' ;
20
- import 'src/handlers/injector.dart' ;
21
- import 'src/handlers/socket_connections.dart' ;
22
- import 'src/loaders/strategy.dart' ;
23
- import 'src/readers/asset_reader.dart' ;
24
- import 'src/servers/devtools.dart' ;
25
- import 'src/servers/extension_backend.dart' ;
26
- import 'src/services/expression_compiler.dart' ;
27
- import 'src/utilities/sdk_configuration.dart' ;
28
-
7
+ export 'dart_web_debug_service.dart' show Dwds, ConnectionProvider;
29
8
export 'src/connections/app_connection.dart' show AppConnection;
30
9
export 'src/connections/debug_connection.dart' show DebugConnection;
31
10
export 'src/debugging/metadata/provider.dart'
@@ -52,149 +31,3 @@ export 'src/services/expression_compiler_service.dart'
52
31
show ExpressionCompilerService;
53
32
export 'src/utilities/sdk_configuration.dart'
54
33
show SdkConfiguration, SdkConfigurationProvider;
55
-
56
- typedef ConnectionProvider = Future <ChromeConnection > Function ();
57
-
58
- /// The Dart Web Debug Service.
59
- class Dwds {
60
- static final _logger = Logger ('DWDS' );
61
- final Middleware middleware;
62
- final Handler handler;
63
- final DevTools _devTools;
64
- final DevHandler _devHandler;
65
- final AssetReader _assetReader;
66
- final bool _enableDebugging;
67
-
68
- Dwds ._(
69
- this .middleware,
70
- this ._devTools,
71
- this ._devHandler,
72
- this ._assetReader,
73
- this ._enableDebugging,
74
- ) : handler = _devHandler.handler;
75
-
76
- Stream <AppConnection > get connectedApps => _devHandler.connectedApps;
77
-
78
- Stream <DwdsEvent > get events => eventStream;
79
-
80
- StreamController <DebugConnection > get extensionDebugConnections =>
81
- _devHandler.extensionDebugConnections;
82
-
83
- Future <void > stop () async {
84
- await _devTools? .close ();
85
- await _devHandler.close ();
86
- await _assetReader.close ();
87
- }
88
-
89
- Future <DebugConnection > debugConnection (AppConnection appConnection) async {
90
- if (! _enableDebugging) throw StateError ('Debugging is not enabled.' );
91
- final appDebugServices = await _devHandler.loadAppServices (appConnection);
92
- await appDebugServices.chromeProxyService.isInitialized;
93
- return DebugConnection (appDebugServices);
94
- }
95
-
96
- static Future <Dwds > start ({
97
- @required AssetReader assetReader,
98
- @required Stream <BuildResult > buildResults,
99
- @required ConnectionProvider chromeConnection,
100
- @required LoadStrategy loadStrategy,
101
- @required bool enableDebugging,
102
- // TODO(annagrin): make expressionCompiler argument required
103
- // [issue 881](https://github.com/dart-lang/webdev/issues/881)
104
- ExpressionCompiler expressionCompiler,
105
- bool enableDebugExtension,
106
- String hostname,
107
- bool useSseForDebugProxy,
108
- bool useSseForDebugBackend,
109
- bool useSseForInjectedClient,
110
- UrlEncoder urlEncoder,
111
- bool spawnDds,
112
- // TODO(elliette): DevTools is inconsistently capitalized throughout this
113
- // file. Change all occurances of devtools/Devtools to devTools/DevTools.
114
- bool enableDevtoolsLaunch,
115
- DevtoolsLauncher devtoolsLauncher,
116
- bool launchDevToolsInNewWindow,
117
- SdkConfigurationProvider sdkConfigurationProvider,
118
- bool emitDebugEvents,
119
- }) async {
120
- hostname ?? = 'localhost' ;
121
- enableDebugging ?? = true ;
122
- enableDebugExtension ?? = false ;
123
- useSseForDebugProxy ?? = true ;
124
- useSseForDebugBackend ?? = true ;
125
- useSseForInjectedClient ?? = true ;
126
- enableDevtoolsLaunch ?? = true ;
127
- launchDevToolsInNewWindow ?? = true ;
128
- spawnDds ?? = true ;
129
- globalLoadStrategy = loadStrategy;
130
- emitDebugEvents ?? = true ;
131
-
132
- sdkConfigurationProvider ?? = DefaultSdkConfigurationProvider ();
133
-
134
- DevTools devTools;
135
- Future <String > extensionUri;
136
- ExtensionBackend extensionBackend;
137
- if (enableDebugExtension) {
138
- final handler = useSseForDebugBackend
139
- ? SseSocketHandler (SseHandler (Uri .parse ('/\$ debug' ),
140
- // Proxy servers may actively kill long standing connections.
141
- // Allow for clients to reconnect in a short window. Making the
142
- // window too long may cause issues if the user closes a debug
143
- // session and initites a new one during the keepAlive window.
144
- keepAlive: const Duration (seconds: 5 )))
145
- : WebSocketSocketHandler ();
146
-
147
- extensionBackend = await ExtensionBackend .start (handler, hostname);
148
- extensionUri = Future .value (Uri (
149
- scheme: useSseForDebugBackend ? 'http' : 'ws' ,
150
- host: extensionBackend.hostname,
151
- port: extensionBackend.port,
152
- path: r'$debug' )
153
- .toString ());
154
- if (urlEncoder != null ) extensionUri = urlEncoder (await extensionUri);
155
- }
156
-
157
- final serveDevTools = devtoolsLauncher != null ;
158
- if (serveDevTools) {
159
- devTools = await devtoolsLauncher (hostname);
160
- final uri =
161
- Uri (scheme: 'http' , host: devTools.hostname, port: devTools.port);
162
- _logger.info ('Serving DevTools at $uri \n ' );
163
- }
164
-
165
- final injected = DwdsInjector (
166
- loadStrategy,
167
- useSseForInjectedClient: useSseForInjectedClient,
168
- extensionUri: extensionUri,
169
- enableDevtoolsLaunch: enableDevtoolsLaunch,
170
- emitDebugEvents: emitDebugEvents,
171
- );
172
-
173
- final devHandler = DevHandler (
174
- chromeConnection,
175
- buildResults,
176
- devTools,
177
- assetReader,
178
- loadStrategy,
179
- hostname,
180
- extensionBackend,
181
- urlEncoder,
182
- useSseForDebugProxy,
183
- useSseForInjectedClient,
184
- serveDevTools,
185
- expressionCompiler,
186
- injected,
187
- spawnDds,
188
- launchDevToolsInNewWindow,
189
- sdkConfigurationProvider,
190
- );
191
-
192
- return Dwds ._(
193
- injected.middleware,
194
- devTools,
195
- devHandler,
196
- assetReader,
197
- enableDebugging,
198
- );
199
- }
200
- }
0 commit comments