service: needs_chrome_source: search for binpkgs in virtual/target depgraph

Rather than trying to emerge the chrome package directly to see if it
has a binpkg, emerge the high-level virtual/target-os packages.  This
will take into account things like changing deps/subslots that would
cause a binpkg to be ignored that testing a package directly misses.

BUG=b:292138028
TEST=CQ passes

Change-Id: I54d69afa88bd3346b4074c4dc2cfacc2d56e687e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4908599
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Auto-Submit: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/service/packages_unittest.py b/service/packages_unittest.py
index 0c0e938..95e0762 100644
--- a/service/packages_unittest.py
+++ b/service/packages_unittest.py
@@ -927,7 +927,10 @@
 
         packages.has_prebuilt("cat/pkg-1.2.3", useflags="useflag")
         patch.assert_called_with(
-            "cat/pkg-1.2.3", board=None, extra_env={"USE": "useflag"}
+            "cat/pkg-1.2.3",
+            board=None,
+            extra_env={"USE": "useflag"},
+            depgraph_root_packages=None,
         )
 
     def test_env_use_flags(self):
@@ -942,7 +945,27 @@
         packages.has_prebuilt("cat/pkg-1.2.3", useflags=new_flags)
         expected = "%s %s" % (existing_flags, new_flags)
         patch.assert_called_with(
-            "cat/pkg-1.2.3", board=None, extra_env={"USE": expected}
+            "cat/pkg-1.2.3",
+            board=None,
+            extra_env={"USE": expected},
+            depgraph_root_packages=None,
+        )
+
+    def test_depgraph_root_packages(self):
+        """Test root depgraph packages."""
+        # We don't really care about the result, just the package handling.
+        patch = self.PatchObject(portage_util, "HasPrebuilt", return_value=True)
+        os.unsetenv("USE")
+
+        depgraph_pkgs = ["virtual/target-os"]
+        packages.has_prebuilt(
+            "cat/pkg-1.2.3", depgraph_root_packages=depgraph_pkgs
+        )
+        patch.assert_called_with(
+            "cat/pkg-1.2.3",
+            board=None,
+            extra_env=mock.ANY,
+            depgraph_root_packages=depgraph_pkgs,
         )