Remove final accessors of ConfigurationTransition.HOST.

Also lean interfaces from Attribute.ConfigurationTransition
to Attribute.Transition.

PiperOrigin-RevId: 179846158
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index b5d0834..4462ae4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -389,21 +389,21 @@
    * Returns a configuration fragment for this this target.
    */
   @Nullable
-  public <T extends Fragment> T getFragment(Class<T> fragment, ConfigurationTransition config) {
-    return getFragment(fragment, fragment.getSimpleName(), "", config);
+  public <T extends Fragment> T getFragment(Class<T> fragment, Attribute.Transition transition) {
+    return getFragment(fragment, fragment.getSimpleName(), "", transition);
   }
 
   @Nullable
   protected <T extends Fragment> T getFragment(Class<T> fragment, String name,
-      String additionalErrorMessage, ConfigurationTransition config) {
+      String additionalErrorMessage, Attribute.Transition transition) {
     // TODO(bazel-team): The fragments can also be accessed directly through BuildConfiguration.
     // Can we lock that down somehow?
-    Preconditions.checkArgument(isLegalFragment(fragment, config),
+    Preconditions.checkArgument(isLegalFragment(fragment, transition),
         "%s has to declare '%s' as a required fragment "
         + "in %s configuration in order to access it.%s",
-        getRuleClassNameForLogging(), name, FragmentCollection.getConfigurationName(config),
+        getRuleClassNameForLogging(), name, FragmentCollection.getConfigurationName(transition),
         additionalErrorMessage);
-    return getConfiguration(config).getFragment(fragment);
+    return getConfiguration(transition).getFragment(fragment);
   }
 
   @Nullable
@@ -413,9 +413,9 @@
   }
 
   @Nullable
-  public Fragment getSkylarkFragment(String name, ConfigurationTransition config) {
+  public Fragment getSkylarkFragment(String name, Attribute.Transition transition) {
     Class<? extends Fragment> fragmentClass =
-        getConfiguration(config).getSkylarkFragmentByName(name);
+        getConfiguration(transition).getSkylarkFragmentByName(name);
     if (fragmentClass == null) {
       return null;
     }
@@ -423,19 +423,19 @@
         String.format(
             " Please update the '%1$sfragments' argument of the rule definition "
             + "(for example: %1$sfragments = [\"%2$s\"])",
-            (config == ConfigurationTransition.HOST) ? "host_" : "", name),
-        config);
+            (transition.isHostTransition()) ? "host_" : "", name),
+        transition);
   }
 
-  public ImmutableCollection<String> getSkylarkFragmentNames(ConfigurationTransition config) {
-    return getConfiguration(config).getSkylarkFragmentNames();
+  public ImmutableCollection<String> getSkylarkFragmentNames(Attribute.Transition transition) {
+    return getConfiguration(transition).getSkylarkFragmentNames();
   }
 
   public <T extends Fragment> boolean isLegalFragment(
-      Class<T> fragment, ConfigurationTransition config) {
+      Class<T> fragment, Attribute.Transition transition) {
     return fragment == universalFragment
         || fragment == PlatformConfiguration.class
-        || configurationFragmentPolicy.isLegalConfigurationFragment(fragment, config);
+        || configurationFragmentPolicy.isLegalConfigurationFragment(fragment, transition);
   }
 
   public <T extends Fragment> boolean isLegalFragment(Class<T> fragment) {
@@ -443,8 +443,8 @@
     return isLegalFragment(fragment, ConfigurationTransition.NONE);
   }
 
-  protected BuildConfiguration getConfiguration(ConfigurationTransition config) {
-    return config.equals(ConfigurationTransition.HOST) ? hostConfiguration : getConfiguration();
+  protected BuildConfiguration getConfiguration(Attribute.Transition transition) {
+    return transition.isHostTransition() ? hostConfiguration : getConfiguration();
   }
 
   @Override
@@ -1058,7 +1058,7 @@
     }
     Attribute.Transition transition = attributeDefinition.getConfigurationTransition();
     if (mode == Mode.HOST) {
-      if (!(transition instanceof PatchTransition) && transition != ConfigurationTransition.HOST) {
+      if (!(transition instanceof PatchTransition)) {
         throw new IllegalStateException(getRule().getLocation() + ": "
             + getRuleClassNameForLogging() + " attribute " + attributeName
             + " is not configured for the host configuration");
@@ -1098,7 +1098,7 @@
       throw new IllegalStateException(getRuleClassNameForLogging() + " attribute " + attributeName
         + " is not a label type attribute");
     }
-    if (attributeDefinition.getConfigurationTransition() == ConfigurationTransition.HOST) {
+    if (attributeDefinition.getConfigurationTransition().isHostTransition()) {
       return Mode.HOST;
     } else if (attributeDefinition.getConfigurationTransition() == ConfigurationTransition.NONE) {
       return Mode.TARGET;