[chromium] Add gn arg to allow overriding prebuilt packages

The normal workflow for developing chromium with a fuchsia checkout
involves modifying the Fuchsia amber repo, which can accidentally revert
to the prebuilt version if Fuchsia is rebuilt. As another option, add a
gn arg to have the Fuchsia build read the far directly from a
Chromium build, ignoring the prebuilt.

Change-Id: If6edbaf465666932e2ca03df5b03c72f8906b8a3
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/430680
Reviewed-by: Sergey Ulanov <sergeyu@google.com>
Reviewed-by: David Dorwin <ddorwin@google.com>
Commit-Queue: John Bauman <jbauman@google.com>
diff --git a/src/cast/BUILD.gn b/src/cast/BUILD.gn
index 9d471ef..67d6f78 100644
--- a/src/cast/BUILD.gn
+++ b/src/cast/BUILD.gn
@@ -4,6 +4,7 @@
 
 import("//build/config.gni")
 import("//build/packages/prebuilt_package.gni")
+import("//src/chromium/build_args.gni")
 
 declare_args() {
   # If true then the most recent canary version of the Cast Runner is used,
@@ -46,5 +47,9 @@
   package_name = "cast_runner"
   archive =
       prebuilt_archive_base_path + "/arch/" + target_cpu + "/cast_runner.far"
+  if (chromium_build_dir != "") {
+    archive =
+        chromium_build_dir + "/gen/fuchsia/runners/cast_runner/cast_runner.far"
+  }
   debug_archive = debug_archive_base_path + "/cast_runner.symbols.tar.bz2"
 }
diff --git a/src/chromium/BUILD.gn b/src/chromium/BUILD.gn
index e4b06d8..470a0f33 100644
--- a/src/chromium/BUILD.gn
+++ b/src/chromium/BUILD.gn
@@ -8,6 +8,7 @@
 import("//build/packages/prebuilt_test_manifest.gni")
 import("//build/testing/host_test_data.gni")
 import("//src/lib/icu/tzdata/icu_tzdata_config_data.gni")
+import("build_args.gni")
 
 declare_args() {
   # Set to use the most recent canary version of prebuilt Chromium components
@@ -53,6 +54,10 @@
   package_name = "web_engine"
   archive =
       prebuilt_archive_base_path + "/arch/" + target_cpu + "/web_engine.far"
+  if (chromium_build_dir != "") {
+    archive =
+        chromium_build_dir + "/gen/fuchsia/engine/web_engine/web_engine.far"
+  }
   debug_archive = debug_archive_base_path + "/web_engine.symbols.tar.bz2"
 }
 
@@ -77,6 +82,10 @@
   package_name = "web_runner"
   archive =
       prebuilt_archive_base_path + "/arch/" + target_cpu + "/web_runner.far"
+  if (chromium_build_dir != "") {
+    archive =
+        chromium_build_dir + "/gen/fuchsia/runners/web_runner/web_runner.far"
+  }
   debug_archive = debug_archive_base_path + "/web_runner.symbols.tar.bz2"
 }
 
diff --git a/src/chromium/build_args.gni b/src/chromium/build_args.gni
new file mode 100644
index 0000000..af32471
--- /dev/null
+++ b/src/chromium/build_args.gni
@@ -0,0 +1,10 @@
+# Copyright 2020 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.
+
+declare_args() {
+  # This variable specifies a chromium build output directory, such as `~/chromium/src/out/fuchsia`,
+  # that cast_runner, web_runner, and web_engine will be obtained from. If unset, the prebuilt
+  # packages from CIPD will be used.
+  chromium_build_dir = ""
+}