[build][flutter] Check for flutter_driver_enabled.

Check if flutter_driver_enabled before calling
enableFlutterDriverExtension by creating 2 separate entrypoints into the
application. Note that
//public/dart/fuchsia_inspect/test/inspect_flutter_integration_tester
still unconditionally invokes enableFlutterDriverExtension() because it
is only used for testing purposes.

Fixed: 66605
Change-Id: Id469df73eb35104cec3b062c5f2ae3fc4c92c907
Reviewed-on: https://fuchsia-review.googlesource.com/c/topaz/+/472537
Reviewed-by: Sanjay Chouksey <sanjayc@google.com>
Commit-Queue: Darren Chan <chandarren@google.com>
diff --git a/examples/fuchsia_inspect_examples/inspect_mod/BUILD.gn b/examples/fuchsia_inspect_examples/inspect_mod/BUILD.gn
index 401fefc..817b40e 100644
--- a/examples/fuchsia_inspect_examples/inspect_mod/BUILD.gn
+++ b/examples/fuchsia_inspect_examples/inspect_mod/BUILD.gn
@@ -5,10 +5,15 @@
 import("//build/dart/dart_test_component.gni")
 import("//build/dart/fidl_move.gni")
 import("//build/flutter/flutter_app.gni")
+import("//build/testing/flutter_driver.gni")
 import("//src/sys/build/fuchsia_test_package.gni")
 
 flutter_app("inspect_mod") {
-  main_dart = "lib/main.dart"
+  if (flutter_driver_enabled) {
+    main_dart = "lib/main.dart"
+  } else {
+    main_dart = "lib/test_main.dart"
+  }
   package_name = "inspect_mod"
 
   fuchsia_package_name = "inspect_mod"
diff --git a/examples/fuchsia_inspect_examples/inspect_mod/lib/main.dart b/examples/fuchsia_inspect_examples/inspect_mod/lib/main.dart
index 1f3e69d..24c1a38 100644
--- a/examples/fuchsia_inspect_examples/inspect_mod/lib/main.dart
+++ b/examples/fuchsia_inspect_examples/inspect_mod/lib/main.dart
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 import 'package:flutter/material.dart' hide Intent;
-import 'package:flutter_driver/driver_extension.dart';
 import 'package:fuchsia_inspect/inspect.dart' as inspect;
 import 'package:fuchsia_logger/logger.dart';
 
@@ -11,7 +10,6 @@
 
 void main() {
   setupLogger(name: 'inspect-mod');
-  enableFlutterDriverExtension();
   var inspectNode = inspect.Inspect().root;
   runApp(InspectExampleApp(inspectNode));
 }
diff --git a/examples/fuchsia_inspect_examples/inspect_mod/lib/test_main.dart b/examples/fuchsia_inspect_examples/inspect_mod/lib/test_main.dart
new file mode 100644
index 0000000..c7c2abe
--- /dev/null
+++ b/examples/fuchsia_inspect_examples/inspect_mod/lib/test_main.dart
@@ -0,0 +1,12 @@
+// Copyright 2021 The Fuchsia 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_driver/driver_extension.dart';
+
+import 'main.dart' as entrypoint;
+
+void main() {
+  enableFlutterDriverExtension();
+  entrypoint.main();
+}
diff --git a/public/dart/fuchsia_inspect/examples/inspect_mod/BUILD.gn b/public/dart/fuchsia_inspect/examples/inspect_mod/BUILD.gn
index 401fefc..817b40e 100644
--- a/public/dart/fuchsia_inspect/examples/inspect_mod/BUILD.gn
+++ b/public/dart/fuchsia_inspect/examples/inspect_mod/BUILD.gn
@@ -5,10 +5,15 @@
 import("//build/dart/dart_test_component.gni")
 import("//build/dart/fidl_move.gni")
 import("//build/flutter/flutter_app.gni")
+import("//build/testing/flutter_driver.gni")
 import("//src/sys/build/fuchsia_test_package.gni")
 
 flutter_app("inspect_mod") {
-  main_dart = "lib/main.dart"
+  if (flutter_driver_enabled) {
+    main_dart = "lib/main.dart"
+  } else {
+    main_dart = "lib/test_main.dart"
+  }
   package_name = "inspect_mod"
 
   fuchsia_package_name = "inspect_mod"
diff --git a/public/dart/fuchsia_inspect/examples/inspect_mod/lib/main.dart b/public/dart/fuchsia_inspect/examples/inspect_mod/lib/main.dart
index 1f3e69d..24c1a38 100644
--- a/public/dart/fuchsia_inspect/examples/inspect_mod/lib/main.dart
+++ b/public/dart/fuchsia_inspect/examples/inspect_mod/lib/main.dart
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 import 'package:flutter/material.dart' hide Intent;
-import 'package:flutter_driver/driver_extension.dart';
 import 'package:fuchsia_inspect/inspect.dart' as inspect;
 import 'package:fuchsia_logger/logger.dart';
 
@@ -11,7 +10,6 @@
 
 void main() {
   setupLogger(name: 'inspect-mod');
-  enableFlutterDriverExtension();
   var inspectNode = inspect.Inspect().root;
   runApp(InspectExampleApp(inspectNode));
 }
diff --git a/public/dart/fuchsia_inspect/examples/inspect_mod/lib/test_main.dart b/public/dart/fuchsia_inspect/examples/inspect_mod/lib/test_main.dart
new file mode 100644
index 0000000..c7c2abe
--- /dev/null
+++ b/public/dart/fuchsia_inspect/examples/inspect_mod/lib/test_main.dart
@@ -0,0 +1,12 @@
+// Copyright 2021 The Fuchsia 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_driver/driver_extension.dart';
+
+import 'main.dart' as entrypoint;
+
+void main() {
+  enableFlutterDriverExtension();
+  entrypoint.main();
+}
diff --git a/public/dart/fuchsia_modular/examples/slider_mod/BUILD.gn b/public/dart/fuchsia_modular/examples/slider_mod/BUILD.gn
index 1a94d1c..08f34cb 100644
--- a/public/dart/fuchsia_modular/examples/slider_mod/BUILD.gn
+++ b/public/dart/fuchsia_modular/examples/slider_mod/BUILD.gn
@@ -6,10 +6,15 @@
 import("//build/dart/fidl_move.gni")
 import("//build/flutter/flutter_app.gni")
 import("//build/testing/environments.gni")
+import("//build/testing/flutter_driver.gni")
 import("//src/sys/build/fuchsia_test_package.gni")
 
 flutter_app("slider_mod") {
-  main_dart = "lib/main.dart"
+  if (flutter_driver_enabled) {
+    main_dart = "lib/main.dart"
+  } else {
+    main_dart = "lib/test_main.dart"
+  }
   package_name = "slider_mod"
 
   fuchsia_package_name = "slider_mod"
@@ -22,6 +27,7 @@
     "src/widgets/app.dart",
     "src/widgets/slider_scaffold.dart",
     "src/widgets/value_slider.dart",
+    "test_main.dart",
   ]
 
   deps = [
diff --git a/public/dart/fuchsia_modular/examples/slider_mod/lib/main.dart b/public/dart/fuchsia_modular/examples/slider_mod/lib/main.dart
index cb5d721..850323d 100644
--- a/public/dart/fuchsia_modular/examples/slider_mod/lib/main.dart
+++ b/public/dart/fuchsia_modular/examples/slider_mod/lib/main.dart
@@ -3,13 +3,11 @@
 // found in the LICENSE file.
 
 import 'package:flutter/material.dart';
-import 'package:flutter_driver/driver_extension.dart';
 import 'package:fuchsia_logger/logger.dart';
 
 import 'src/widgets/app.dart';
 
 void main() {
   setupLogger(name: 'slider_mod');
-  enableFlutterDriverExtension();
   runApp(MaterialApp(home: App()));
 }
diff --git a/public/dart/fuchsia_modular/examples/slider_mod/lib/test_main.dart b/public/dart/fuchsia_modular/examples/slider_mod/lib/test_main.dart
new file mode 100644
index 0000000..c7c2abe
--- /dev/null
+++ b/public/dart/fuchsia_modular/examples/slider_mod/lib/test_main.dart
@@ -0,0 +1,12 @@
+// Copyright 2021 The Fuchsia 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_driver/driver_extension.dart';
+
+import 'main.dart' as entrypoint;
+
+void main() {
+  enableFlutterDriverExtension();
+  entrypoint.main();
+}