Encapsulate Blaze determination logic into BlazeDirectories.

Introduce the isBlaze() method and isBlaze field on BlazeDirectories to encapsulate checking if the product is Blaze. Replace direct checks on getProductName().equalsIgnoreCase(blaze) in RemoteAnalysisCacheFactory.

#ghostwriter

PiperOrigin-RevId: 931284828
Change-Id: Icdb23947dbe50e9cd69cac7e3a24e8dd431a73d5
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
index efaf377..b136eb2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
@@ -83,13 +83,15 @@
   private final Path blazeOutputPath;
   private final Path localOutputPath;
   private final String productName;
+  private final boolean isBlaze;
 
   public BlazeDirectories(ServerDirectories serverDirectories, Path workspace, String productName) {
     this.serverDirectories = serverDirectories;
     this.workspace = workspace;
     this.productName = productName;
+    this.isBlaze = Ascii.equalsIgnoreCase(productName, "blaze");
     Path outputBase = serverDirectories.getOutputBase();
-    if (Ascii.equalsIgnoreCase(productName, "blaze")) {
+    if (isBlaze) {
       boolean useDefaultExecRootName =
           this.workspace == null || this.workspace.getParentDirectory() == null;
       if (useDefaultExecRootName) {
@@ -250,6 +252,11 @@
     return productName;
   }
 
+  /** Returns true if this is Google-internal Blaze (as opposed to Bazel). */
+  public boolean isBlaze() {
+    return isBlaze;
+  }
+
   /** Convenience method for {@link ServerDirectories#getVirtualSourceRoot}. */
   @Nullable
   public Root getVirtualSourceRoot() {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/RemoteAnalysisCacheFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/RemoteAnalysisCacheFactory.java
index bf4e72d..c6c3aa2 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/RemoteAnalysisCacheFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/RemoteAnalysisCacheFactory.java
@@ -20,7 +20,6 @@
 import static java.util.Objects.requireNonNull;
 import static java.util.concurrent.ForkJoinPool.commonPool;
 
-import com.google.common.base.Ascii;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.collect.ImmutableList;
@@ -317,8 +316,7 @@
       BlazeDirectories directories,
       BuildOptions topLevelOptions) {
     var roots = ImmutableList.<Root>builder().add(Root.fromPath(directories.getWorkspace()));
-    // TODO: b/406458763 - clean this up
-    if (Ascii.equalsIgnoreCase(directories.getProductName(), "blaze")) {
+    if (directories.isBlaze()) {
       roots.add(Root.fromPath(directories.getBlazeExecRoot()));
     }
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/BUILD
index 9c1d528..f80aa8a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BUILD
@@ -335,6 +335,7 @@
         "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils",
         "//src/test/java/com/google/devtools/build/lib/testutil",
         "//third_party:junit4",
+        "//third_party:truth",
     ],
 )
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
index 8ebd62b..b403d81 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.analysis;
 
+import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.assertThrows;
 
 import com.google.devtools.build.lib.skyframe.serialization.testutils.FsUtils;
@@ -43,4 +44,22 @@
   public void noBlazeOutputPathInBazel() {
     assertThrows(NullPointerException.class, directories::getBlazeOutputPath);
   }
+
+  @Test
+  public void isBlaze_falseForBazel() {
+    assertThat(directories.isBlaze()).isFalse();
+  }
+
+  @Test
+  public void isBlaze_trueForBlaze() {
+    BlazeDirectories blazeDirs =
+        new BlazeDirectories(
+            new ServerDirectories(
+                FsUtils.TEST_FILESYSTEM.getPath("/install_base"),
+                FsUtils.TEST_FILESYSTEM.getPath("/output_base"),
+                FsUtils.TEST_FILESYSTEM.getPath("/user_root")),
+            FsUtils.TEST_FILESYSTEM.getPath("/workspace"),
+            /* productName= */ "blaze");
+    assertThat(blazeDirs.isBlaze()).isTrue();
+  }
 }