packages: Add HasPrebuilt endpoint.

BUG=None
TEST=cq

Change-Id: Iaa7a53d4ad9e703912e80d4ae9ab562f8a24c905
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2116663
Tested-by: Alex Klein <saklein@chromium.org>
Tested-by: George Engelbrecht <engeg@google.com>
Reviewed-by: George Engelbrecht <engeg@google.com>
Commit-Queue: George Engelbrecht <engeg@google.com>
diff --git a/api/controller/packages.py b/api/controller/packages.py
index de9f29d..89ada03 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -192,12 +192,12 @@
   output_proto.full_version = packages.determine_full_version()
 
 
-def _HasChromePrebuiltSuccess(_input_proto, output_proto, _config):
+def _HasPrebuiltSuccess(_input_proto, output_proto, _config):
   """The mock success case for HasChromePrebuilt."""
   output_proto.has_prebuilt = True
 
 
-@faux.success(_HasChromePrebuiltSuccess)
+@faux.success(_HasPrebuiltSuccess)
 @faux.empty_error
 @validate.require('build_target.name')
 @validate.validation_complete
@@ -211,6 +211,21 @@
   output_proto.has_prebuilt = exists
 
 
+@faux.success(_HasPrebuiltSuccess)
+@faux.empty_error
+@validate.require('build_target.name', 'package.category', 'package.name')
+@validate.validation_complete
+def HasPrebuilt(input_proto, output_proto, _config):
+  """Checks if the most recent version of Chrome has a prebuilt."""
+  build_target = controller_util.ParseBuildTarget(input_proto.build_target)
+  package = controller_util.PackageInfoToCPV(input_proto.package_info).cp
+  useflags = 'chrome_internal' if input_proto.chrome else None
+  exists = packages.has_prebuilt(
+      package, build_target=build_target, useflags=useflags)
+
+  output_proto.has_prebuilt = exists
+
+
 def _BuildsChromeSuccess(_input_proto, output_proto, _config):
   """Mock success case for BuildsChrome."""
   output_proto.builds_chrome = True