Add option to launch DevTools in the same Chrome window (#1481)

diff --git a/dwds/CHANGELOG.md b/dwds/CHANGELOG.md
index 3726abf..b4a35b6 100644
--- a/dwds/CHANGELOG.md
+++ b/dwds/CHANGELOG.md
@@ -19,6 +19,8 @@
 - Add `emitDebugEvents` argument to `Dwds.start` to suppress emitting debug
   events from the injected client.
 - Replace `sdkRoot` parameter by `sdkDir` in `ExpressionCompilerService`.
+- Adds an additional parameter to launch Dart DevTools in the same window as
+  the connected Dart app.
 
 ## 11.5.1
 
diff --git a/dwds/lib/dwds.dart b/dwds/lib/dwds.dart
index 5454308..785db4a 100644
--- a/dwds/lib/dwds.dart
+++ b/dwds/lib/dwds.dart
@@ -110,8 +110,11 @@
     bool useSseForInjectedClient,
     UrlEncoder urlEncoder,
     bool spawnDds,
+    // TODO(elliette): DevTools is inconsistently capitalized throughout this
+    // file. Change all occurances of devtools/Devtools to devTools/DevTools.
     bool enableDevtoolsLaunch,
     DevtoolsLauncher devtoolsLauncher,
+    bool launchDevToolsInNewWindow,
     Uri sdkDir,
     Uri librariesPath,
     bool emitDebugEvents,
@@ -123,6 +126,7 @@
     useSseForDebugBackend ??= true;
     useSseForInjectedClient ??= true;
     enableDevtoolsLaunch ??= true;
+    launchDevToolsInNewWindow ??= true;
     spawnDds ??= true;
     globalLoadStrategy = loadStrategy;
     emitDebugEvents ??= true;
@@ -183,6 +187,7 @@
       expressionCompiler,
       injected,
       spawnDds,
+      launchDevToolsInNewWindow,
     );
 
     return Dwds._(
diff --git a/dwds/lib/src/handlers/dev_handler.dart b/dwds/lib/src/handlers/dev_handler.dart
index f4fad99..8c4b0cc 100644
--- a/dwds/lib/src/handlers/dev_handler.dart
+++ b/dwds/lib/src/handlers/dev_handler.dart
@@ -63,6 +63,7 @@
   final bool _useSseForInjectedClient;
   final bool _serveDevTools;
   final bool _spawnDds;
+  final bool _launchDevToolsInNewWindow;
   final ExpressionCompiler _expressionCompiler;
   final DwdsInjector _injected;
 
@@ -87,7 +88,8 @@
       this._serveDevTools,
       this._expressionCompiler,
       this._injected,
-      this._spawnDds) {
+      this._spawnDds,
+      this._launchDevToolsInNewWindow) {
     _subs.add(buildResults.listen(_emitBuildResults));
     _listen();
     if (_extensionBackend != null) {
@@ -525,7 +527,7 @@
     if (!_serveDevTools) return;
     emitEvent(DwdsEvent.devtoolsLaunch());
     await remoteDebugger.sendCommand('Target.createTarget', params: {
-      'newWindow': true,
+      'newWindow': _launchDevToolsInNewWindow,
       'url': Uri(
           scheme: 'http',
           host: _devTools.hostname,