Rename SpawnActionContext to SpawnStrategy.

This is in preparation for splitting SpawnStrategy from ActionContext and making it a separate entity.

RELNOTES: None
PiperOrigin-RevId: 290328486
diff --git a/src/main/java/com/google/devtools/build/lib/actions/DynamicStrategyRegistry.java b/src/main/java/com/google/devtools/build/lib/actions/DynamicStrategyRegistry.java
index b81c508..edd69f1 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/DynamicStrategyRegistry.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/DynamicStrategyRegistry.java
@@ -26,11 +26,10 @@
   }
 
   /**
-   * Returns the spawn strategy implementations that {@linkplain SpawnActionContext#canExec can
-   * execute} the given spawn in the order that they were registered for the provided dynamic mode.
+   * Returns the spawn strategy implementations that {@linkplain SpawnStrategy#canExec can execute}
+   * the given spawn in the order that they were registered for the provided dynamic mode.
    */
-  List<SandboxedSpawnActionContext> getDynamicSpawnActionContexts(
-      Spawn spawn, DynamicMode dynamicMode);
+  List<SandboxedSpawnStrategy> getDynamicSpawnActionContexts(Spawn spawn, DynamicMode dynamicMode);
 
   /**
    * Notifies all strategies applying to at least one mnemonic (including the empty all-catch one)
diff --git a/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnStrategy.java
similarity index 74%
rename from src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java
rename to src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnStrategy.java
index 4de6e8f..6fcd3ed 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnStrategy.java
@@ -18,12 +18,12 @@
 import javax.annotation.Nullable;
 
 /**
- * A context that allows execution of {@link Spawn} instances similar to {@link SpawnActionContext},
- * but with the additional restriction that during execution the {@link Spawn} must not be allowed
- * to modify the current execution root of the build. Instead, the {@link Spawn} should be executed
- * in a sandbox or on a remote system and its output files only be moved to the execution root.
+ * A context that allows execution of {@link Spawn} instances similar to {@link SpawnStrategy}, but
+ * with the additional restriction that during execution the {@link Spawn} must not be allowed to
+ * modify the current execution root of the build. Instead, the {@link Spawn} should be executed in
+ * a sandbox or on a remote system and its output files only be moved to the execution root.
  */
-public interface SandboxedSpawnActionContext extends SpawnActionContext {
+public interface SandboxedSpawnStrategy extends SpawnStrategy {
 
   /** Lambda interface to stop other instances of the same spawn before writing outputs. */
   @FunctionalInterface
@@ -40,10 +40,9 @@
   /**
    * Executes the given spawn.
    *
-   * <p>When the {@link SpawnActionContext} is about to write output files into the execroot, it
-   * first asks any other concurrent instances of this same spawn (handled by other spawn runners
-   * when dynamic scheduling is enabled) to stop by invoking the {@code stopConcurrentSpawns}
-   * lambda.
+   * <p>When the {@link SpawnStrategy} is about to write output files into the execroot, it first
+   * asks any other concurrent instances of this same spawn (handled by other spawn runners when
+   * dynamic scheduling is enabled) to stop by invoking the {@code stopConcurrentSpawns} lambda.
    *
    * @return a List of {@link SpawnResult}s containing metadata about the Spawn's execution. This
    *     will typically contain one element, but could contain no elements if spawn execution did
diff --git a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/actions/SpawnStrategy.java
similarity index 93%
rename from src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java
rename to src/main/java/com/google/devtools/build/lib/actions/SpawnStrategy.java
index 8d31ec0..d0ef44c 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/SpawnStrategy.java
@@ -15,11 +15,9 @@
 
 import com.google.common.collect.ImmutableList;
 
-/**
- * A context that allows execution of {@link Spawn} instances.
- */
+/** A context that allows execution of {@link Spawn} instances. */
 @ActionContextMarker(name = "spawn")
-public interface SpawnActionContext extends ActionContext {
+public interface SpawnStrategy extends ActionContext {
 
   /**
    * Executes the given spawn and returns metadata about the execution. Implementations must
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
index d518b98..31955b7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -54,9 +54,9 @@
 import com.google.devtools.build.lib.actions.RunfilesSupplier;
 import com.google.devtools.build.lib.actions.SingleStringArgFormatter;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnContinuation;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.extra.EnvironmentVariable;
 import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
 import com.google.devtools.build.lib.actions.extra.SpawnInfo;
@@ -326,7 +326,7 @@
     }
     SpawnContinuation spawnContinuation =
         actionExecutionContext
-            .getContext(SpawnActionContext.class)
+            .getContext(SpawnStrategy.class)
             .beginExecution(spawn, actionExecutionContext);
     return new SpawnActionContinuation(actionExecutionContext, spawnContinuation);
   }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
index a71f8a9..e53a48d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
@@ -30,8 +30,8 @@
 import com.google.devtools.build.lib.actions.CommandLines.CommandLineLimits;
 import com.google.devtools.build.lib.actions.CompositeRunfilesSupplier;
 import com.google.devtools.build.lib.actions.RunfilesSupplier;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.analysis.actions.SpawnAction;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -45,7 +45,7 @@
 
 /**
  * Action used by extra_action rules to create an action that shadows an existing action. Runs a
- * command-line using {@link SpawnActionContext} for executions.
+ * command-line using {@link SpawnStrategy} for executions.
  */
 public final class ExtraAction extends SpawnAction {
   private final Action shadowedAction;
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java b/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java
index 8cd026b..3992a75 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java
@@ -35,8 +35,8 @@
 import com.google.devtools.build.lib.actions.ResourceSet;
 import com.google.devtools.build.lib.actions.RunfilesSupplier;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.FilesToRunProvider;
@@ -131,7 +131,8 @@
             this,
             LOCAL_RESOURCES);
         List<SpawnResult> spawnResults =
-            actionExecutionContext.getContext(SpawnActionContext.class)
+            actionExecutionContext
+                .getContext(SpawnStrategy.class)
                 .exec(spawn, actionExecutionContext);
         actionExecutionContext.getEventHandler().handle(Event.info(locationMessage));
         return ActionResult.create(spawnResults);
diff --git a/src/main/java/com/google/devtools/build/lib/dynamic/DynamicExecutionModule.java b/src/main/java/com/google/devtools/build/lib/dynamic/DynamicExecutionModule.java
index eefd43c..d7126c8 100644
--- a/src/main/java/com/google/devtools/build/lib/dynamic/DynamicExecutionModule.java
+++ b/src/main/java/com/google/devtools/build/lib/dynamic/DynamicExecutionModule.java
@@ -22,7 +22,7 @@
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import com.google.devtools.build.lib.actions.ExecutorInitException;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.Spawns;
 import com.google.devtools.build.lib.buildtool.BuildRequest;
 import com.google.devtools.build.lib.concurrent.ExecutorUtil;
@@ -114,16 +114,16 @@
 
     if (options.legacySpawnScheduler) {
       builder.addActionContext(
-          SpawnActionContext.class,
+          SpawnStrategy.class,
           new LegacyDynamicSpawnStrategy(executorService, options, this::getExecutionPolicy),
           COMMANDLINE_IDENTIFIERS);
     } else {
       builder.addActionContext(
-          SpawnActionContext.class,
+          SpawnStrategy.class,
           new DynamicSpawnStrategy(executorService, options, this::getExecutionPolicy),
           COMMANDLINE_IDENTIFIERS);
     }
-    builder.addStrategyByContext(SpawnActionContext.class, "dynamic");
+    builder.addStrategyByContext(SpawnStrategy.class, "dynamic");
 
     for (Map.Entry<String, List<String>> mnemonicToStrategies : getLocalStrategies(options)) {
       throwIfContainsDynamic(mnemonicToStrategies.getValue(), "--dynamic_local_strategy");
diff --git a/src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java
index 7442c61..6b9c3c9 100644
--- a/src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java
@@ -26,11 +26,11 @@
 import com.google.devtools.build.lib.actions.ActionExecutionContext;
 import com.google.devtools.build.lib.actions.DynamicStrategyRegistry;
 import com.google.devtools.build.lib.actions.ExecException;
-import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext;
-import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext.StopConcurrentSpawns;
+import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy;
+import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy.StopConcurrentSpawns;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.exec.ExecutionPolicy;
 import com.google.devtools.build.lib.util.io.FileOutErr;
 import com.google.devtools.build.lib.vfs.Path;
@@ -62,7 +62,7 @@
  * save 0.5s of time, when it then takes us 5 seconds to upload the results to remote executors for
  * another action that's scheduled to run there.
  */
-public class DynamicSpawnStrategy implements SpawnActionContext {
+public class DynamicSpawnStrategy implements SpawnStrategy {
 
   private static final Logger logger = Logger.getLogger(DynamicSpawnStrategy.class.getName());
 
@@ -330,14 +330,14 @@
   public boolean canExec(Spawn spawn, ActionContextRegistry actionContextRegistry) {
     DynamicStrategyRegistry dynamicStrategyRegistry =
         actionContextRegistry.getContext(DynamicStrategyRegistry.class);
-    for (SandboxedSpawnActionContext strategy :
+    for (SandboxedSpawnStrategy strategy :
         dynamicStrategyRegistry.getDynamicSpawnActionContexts(
             spawn, DynamicStrategyRegistry.DynamicMode.LOCAL)) {
       if (strategy.canExec(spawn, actionContextRegistry)) {
         return true;
       }
     }
-    for (SandboxedSpawnActionContext strategy :
+    for (SandboxedSpawnStrategy strategy :
         dynamicStrategyRegistry.getDynamicSpawnActionContexts(
             spawn, DynamicStrategyRegistry.DynamicMode.REMOTE)) {
       if (strategy.canExec(spawn, actionContextRegistry)) {
@@ -371,7 +371,7 @@
     DynamicStrategyRegistry dynamicStrategyRegistry =
         actionExecutionContext.getContext(DynamicStrategyRegistry.class);
 
-    for (SandboxedSpawnActionContext strategy :
+    for (SandboxedSpawnStrategy strategy :
         dynamicStrategyRegistry.getDynamicSpawnActionContexts(
             spawn, DynamicStrategyRegistry.DynamicMode.LOCAL)) {
       return strategy.exec(spawn, actionExecutionContext, stopConcurrentSpawns);
@@ -388,7 +388,7 @@
     DynamicStrategyRegistry dynamicStrategyRegistry =
         actionExecutionContext.getContext(DynamicStrategyRegistry.class);
 
-    for (SandboxedSpawnActionContext strategy :
+    for (SandboxedSpawnStrategy strategy :
         dynamicStrategyRegistry.getDynamicSpawnActionContexts(
             spawn, DynamicStrategyRegistry.DynamicMode.REMOTE)) {
       return strategy.exec(spawn, actionExecutionContext, stopConcurrentSpawns);
diff --git a/src/main/java/com/google/devtools/build/lib/dynamic/LegacyDynamicSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/dynamic/LegacyDynamicSpawnStrategy.java
index 7205547..e459369 100644
--- a/src/main/java/com/google/devtools/build/lib/dynamic/LegacyDynamicSpawnStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/dynamic/LegacyDynamicSpawnStrategy.java
@@ -25,11 +25,11 @@
 import com.google.devtools.build.lib.actions.EnvironmentalExecException;
 import com.google.devtools.build.lib.actions.ExecException;
 import com.google.devtools.build.lib.actions.ExecutionRequirements;
-import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext;
-import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext.StopConcurrentSpawns;
+import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy;
+import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy.StopConcurrentSpawns;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.Spawns;
 import com.google.devtools.build.lib.actions.UserExecException;
 import com.google.devtools.build.lib.events.Event;
@@ -62,7 +62,7 @@
  * save 0.5s of time, when it then takes us 5 seconds to upload the results to remote executors for
  * another action that's scheduled to run there.
  */
-public class LegacyDynamicSpawnStrategy implements SpawnActionContext {
+public class LegacyDynamicSpawnStrategy implements SpawnStrategy {
   private static final Logger logger = Logger.getLogger(DynamicSpawnStrategy.class.getName());
 
   enum StrategyIdentifier {
@@ -118,7 +118,7 @@
   private final AtomicBoolean delayLocalExecution = new AtomicBoolean(false);
 
   // TODO(steinman): This field is never assigned and canExec() would throw if trying to access it.
-  private @Nullable SandboxedSpawnActionContext workerStrategy;
+  @Nullable private SandboxedSpawnStrategy workerStrategy;
 
   /**
    * Constructs a {@code DynamicSpawnStrategy}.
@@ -196,8 +196,7 @@
     Phaser bothTasksFinished = new Phaser(/*parties=*/ 1);
 
     try {
-      final AtomicReference<SpawnActionContext> outputsHaveBeenWritten =
-          new AtomicReference<>(null);
+      final AtomicReference<SpawnStrategy> outputsHaveBeenWritten = new AtomicReference<>(null);
       dynamicExecutionResult =
           executorService.invokeAny(
               ImmutableList.of(
@@ -308,14 +307,14 @@
     DynamicStrategyRegistry dynamicStrategyRegistry =
         actionContextRegistry.getContext(DynamicStrategyRegistry.class);
 
-    for (SandboxedSpawnActionContext strategy :
+    for (SandboxedSpawnStrategy strategy :
         dynamicStrategyRegistry.getDynamicSpawnActionContexts(
             spawn, DynamicStrategyRegistry.DynamicMode.LOCAL)) {
       if (strategy.canExec(spawn, actionContextRegistry)) {
         return true;
       }
     }
-    for (SandboxedSpawnActionContext strategy :
+    for (SandboxedSpawnStrategy strategy :
         dynamicStrategyRegistry.getDynamicSpawnActionContexts(
             spawn, DynamicStrategyRegistry.DynamicMode.REMOTE)) {
       if (strategy.canExec(spawn, actionContextRegistry)) {
@@ -354,8 +353,7 @@
   }
 
   private static StopConcurrentSpawns lockOutputFiles(
-      SandboxedSpawnActionContext token,
-      @Nullable AtomicReference<SpawnActionContext> outputWriteBarrier) {
+      SandboxedSpawnStrategy token, @Nullable AtomicReference<SpawnStrategy> outputWriteBarrier) {
     if (outputWriteBarrier == null) {
       return null;
     } else {
@@ -371,12 +369,12 @@
   private static ImmutableList<SpawnResult> runLocally(
       Spawn spawn,
       ActionExecutionContext actionExecutionContext,
-      @Nullable AtomicReference<SpawnActionContext> outputWriteBarrier)
+      @Nullable AtomicReference<SpawnStrategy> outputWriteBarrier)
       throws ExecException, InterruptedException {
     DynamicStrategyRegistry dynamicStrategyRegistry =
         actionExecutionContext.getContext(DynamicStrategyRegistry.class);
 
-    for (SandboxedSpawnActionContext strategy :
+    for (SandboxedSpawnStrategy strategy :
         dynamicStrategyRegistry.getDynamicSpawnActionContexts(
             spawn, DynamicStrategyRegistry.DynamicMode.LOCAL)) {
       if (!strategy.toString().contains("worker") || supportsWorkers(spawn)) {
@@ -391,12 +389,12 @@
   private static ImmutableList<SpawnResult> runRemotely(
       Spawn spawn,
       ActionExecutionContext actionExecutionContext,
-      @Nullable AtomicReference<SpawnActionContext> outputWriteBarrier)
+      @Nullable AtomicReference<SpawnStrategy> outputWriteBarrier)
       throws ExecException, InterruptedException {
     DynamicStrategyRegistry dynamicStrategyRegistry =
         actionExecutionContext.getContext(DynamicStrategyRegistry.class);
 
-    for (SandboxedSpawnActionContext strategy :
+    for (SandboxedSpawnStrategy strategy :
         dynamicStrategyRegistry.getDynamicSpawnActionContexts(
             spawn, DynamicStrategyRegistry.DynamicMode.REMOTE)) {
       return strategy.exec(
diff --git a/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java
index 276ae3d..c7ddf47 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java
@@ -29,7 +29,7 @@
 import com.google.devtools.build.lib.actions.LostInputsExecException;
 import com.google.devtools.build.lib.actions.MetadataProvider;
 import com.google.devtools.build.lib.actions.RunningActionEvent;
-import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext;
+import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy;
 import com.google.devtools.build.lib.actions.SchedulingActionEvent;
 import com.google.devtools.build.lib.actions.Spawn;
 import com.google.devtools.build.lib.actions.SpawnResult;
@@ -54,7 +54,7 @@
 import javax.annotation.Nullable;
 
 /** Abstract common ancestor for spawn strategies implementing the common parts. */
-public abstract class AbstractSpawnStrategy implements SandboxedSpawnActionContext {
+public abstract class AbstractSpawnStrategy implements SandboxedSpawnStrategy {
 
   /**
    * Last unique identifier assigned to a spawn by this strategy.
diff --git a/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java b/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java
index 46b1c51..73da12989 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java
@@ -20,7 +20,7 @@
 import com.google.devtools.build.lib.actions.Executor;
 import com.google.devtools.build.lib.actions.ExecutorInitException;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.util.RegexFilter;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -77,7 +77,7 @@
    * Sets the strategy names to use in the remote branch of dynamic execution for a given action
    * mnemonic.
    *
-   * <p>During execution, each strategy is {@linkplain SpawnActionContext#canExec(Spawn,
+   * <p>During execution, each strategy is {@linkplain SpawnStrategy#canExec(Spawn,
    * ActionContext.ActionContextRegistry) asked} whether it can execute a given Spawn. The first
    * strategy in the list that says so will get the job.
    */
@@ -93,7 +93,7 @@
    * Sets the strategy names to use in the local branch of dynamic execution for a given action
    * mnemonic.
    *
-   * <p>During execution, each strategy is {@linkplain SpawnActionContext#canExec(Spawn,
+   * <p>During execution, each strategy is {@linkplain SpawnStrategy#canExec(Spawn,
    * ActionContext.ActionContextRegistry) asked} whether it can execute a given Spawn. The first
    * strategy in the list that says so will get the job.
    */
diff --git a/src/main/java/com/google/devtools/build/lib/exec/ProxySpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/exec/ProxySpawnActionContext.java
index c565aed..8d2d9fc 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/ProxySpawnActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/ProxySpawnActionContext.java
@@ -18,16 +18,16 @@
 import com.google.devtools.build.lib.actions.ActionExecutionContext;
 import com.google.devtools.build.lib.actions.ExecException;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnContinuation;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.UserExecException;
 import com.google.devtools.build.lib.events.NullEventHandler;
 import java.util.List;
 import java.util.stream.Collectors;
 
 /** Proxy that looks up the right SpawnActionContext for a spawn during {@link #exec}. */
-public final class ProxySpawnActionContext implements SpawnActionContext {
+public final class ProxySpawnActionContext implements SpawnStrategy {
 
   private final SpawnActionContextMaps spawnActionContextMaps;
 
@@ -35,7 +35,7 @@
    * Creates a new {@link ProxySpawnActionContext}.
    *
    * @param spawnActionContextMaps The {@link SpawnActionContextMaps} to use to decide which {@link
-   *     SpawnActionContext} should execute a given {@link Spawn} during {@link #exec}.
+   *     SpawnStrategy} should execute a given {@link Spawn} during {@link #exec}.
    */
   public ProxySpawnActionContext(SpawnActionContextMaps spawnActionContextMaps) {
     this.spawnActionContextMaps = spawnActionContextMaps;
@@ -50,18 +50,18 @@
   @Override
   public SpawnContinuation beginExecution(
       Spawn spawn, ActionExecutionContext actionExecutionContext) throws InterruptedException {
-    SpawnActionContext resolvedContext;
+    SpawnStrategy resolvedStrategy;
     try {
-      resolvedContext = resolveOne(spawn, actionExecutionContext);
+      resolvedStrategy = resolveOne(spawn, actionExecutionContext);
     } catch (ExecException e) {
       return SpawnContinuation.failedWithExecException(e);
     }
-    return resolvedContext.beginExecution(spawn, actionExecutionContext);
+    return resolvedStrategy.beginExecution(spawn, actionExecutionContext);
   }
 
-  private SpawnActionContext resolveOne(Spawn spawn, ActionExecutionContext actionExecutionContext)
+  private SpawnStrategy resolveOne(Spawn spawn, ActionExecutionContext actionExecutionContext)
       throws UserExecException {
-    List<SpawnActionContext> strategies = resolve(spawn, actionExecutionContext);
+    List<SpawnStrategy> strategies = resolve(spawn, actionExecutionContext);
 
     // Because the strategies are ordered by preference, we can execute the spawn with the best
     // possible one by simply filtering out the ones that can't execute it and then picking the
@@ -70,16 +70,16 @@
   }
 
   /**
-   * Returns the list of {@link SpawnActionContext}s that should be used to execute the given spawn.
+   * Returns the list of {@link SpawnStrategy}s that should be used to execute the given spawn.
    *
-   * @param spawn The spawn for which the correct {@link SpawnActionContext} should be determined.
+   * @param spawn The spawn for which the correct {@link SpawnStrategy} should be determined.
    * @param eventHandler An event handler that can be used to print messages while resolving the
-   *     correct {@link SpawnActionContext} for the given spawn.
+   *     correct {@link SpawnStrategy} for the given spawn.
    */
   @VisibleForTesting
-  public List<SpawnActionContext> resolve(
-      Spawn spawn, ActionExecutionContext actionExecutionContext) throws UserExecException {
-    List<SpawnActionContext> strategies =
+  public List<SpawnStrategy> resolve(Spawn spawn, ActionExecutionContext actionExecutionContext)
+      throws UserExecException {
+    List<SpawnStrategy> strategies =
         spawnActionContextMaps.getSpawnActionContexts(
             spawn, actionExecutionContext.getEventHandler());
 
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java b/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java
index 7b746f9..f28cdda 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java
@@ -32,9 +32,9 @@
 import com.google.devtools.build.lib.actions.ActionContextMarker;
 import com.google.devtools.build.lib.actions.DynamicStrategyRegistry;
 import com.google.devtools.build.lib.actions.ExecutorInitException;
-import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext;
+import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
 import com.google.devtools.build.lib.events.Reporter;
@@ -69,30 +69,28 @@
         RemoteLocalFallbackRegistry,
         ActionContext.ActionContextRegistry {
 
-  /** A stored entry for a {@link RegexFilter} to {@link SpawnActionContext} mapping. */
+  /** A stored entry for a {@link RegexFilter} to {@link SpawnStrategy} mapping. */
   @AutoValue
-  public abstract static class RegexFilterSpawnActionContext {
+  public abstract static class RegexFilterSpawnStrategy {
     public abstract RegexFilter regexFilter();
 
-    public abstract ImmutableList<SpawnActionContext> spawnActionContext();
+    public abstract ImmutableList<SpawnStrategy> strategies();
   }
 
-  private final ImmutableSortedMap<String, List<SpawnActionContext>> mnemonicToSpawnStrategiesMap;
+  private final ImmutableSortedMap<String, List<SpawnStrategy>> mnemonicToSpawnStrategiesMap;
   private final ImmutableClassToInstanceMap<ActionContext> strategies;
-  private final ImmutableList<RegexFilterSpawnActionContext> spawnStrategyRegexList;
-  private final ImmutableMultimap<String, SandboxedSpawnActionContext>
-      mnemonicToRemoteDynamicStrategies;
-  private final ImmutableMultimap<String, SandboxedSpawnActionContext>
-      mnemonicToLocalDynamicStrategies;
+  private final ImmutableList<RegexFilterSpawnStrategy> spawnStrategyRegexList;
+  private final ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToRemoteDynamicStrategies;
+  private final ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToLocalDynamicStrategies;
   private final ImmutableMap<Class<? extends ActionContext>, ActionContext> contextMap;
   @Nullable private final AbstractSpawnStrategy remoteLocalFallbackStrategy;
 
   private SpawnActionContextMaps(
-      ImmutableSortedMap<String, List<SpawnActionContext>> mnemonicToSpawnStrategiesMap,
+      ImmutableSortedMap<String, List<SpawnStrategy>> mnemonicToSpawnStrategiesMap,
       ImmutableClassToInstanceMap<ActionContext> strategies,
-      ImmutableList<RegexFilterSpawnActionContext> spawnStrategyRegexList,
-      ImmutableMultimap<String, SandboxedSpawnActionContext> mnemonicToRemoteDynamicStrategies,
-      ImmutableMultimap<String, SandboxedSpawnActionContext> mnemonicToLocalDynamicStrategies,
+      ImmutableList<RegexFilterSpawnStrategy> spawnStrategyRegexList,
+      ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToRemoteDynamicStrategies,
+      ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToLocalDynamicStrategies,
       AbstractSpawnStrategy remoteLocalFallbackStrategy) {
     this.mnemonicToSpawnStrategiesMap = mnemonicToSpawnStrategiesMap;
     this.strategies = strategies;
@@ -109,38 +107,37 @@
    * <p>If the reason for selecting the context is worth mentioning to the user, logs a message
    * using the given {@link Reporter}.
    */
-  List<SpawnActionContext> getSpawnActionContexts(Spawn spawn, EventHandler reporter) {
+  List<SpawnStrategy> getSpawnActionContexts(Spawn spawn, EventHandler reporter) {
     Preconditions.checkNotNull(spawn);
     if (!spawnStrategyRegexList.isEmpty() && spawn.getResourceOwner() != null
             // Don't override test strategies by --strategy_regexp for backwards compatibility.
             && !"TestRunner".equals(spawn.getMnemonic())) {
       String description = spawn.getResourceOwner().getProgressMessage();
       if (description != null) {
-        for (RegexFilterSpawnActionContext entry : spawnStrategyRegexList) {
-          if (entry.regexFilter().isIncluded(description) && entry.spawnActionContext() != null) {
+        for (RegexFilterSpawnStrategy entry : spawnStrategyRegexList) {
+          if (entry.regexFilter().isIncluded(description) && entry.strategies() != null) {
             reporter.handle(
-                Event.progress(
-                    description + " with context " + entry.spawnActionContext().toString()));
-            return entry.spawnActionContext();
+                Event.progress(description + " with context " + entry.strategies().toString()));
+            return entry.strategies();
           }
         }
       }
     }
-    List<SpawnActionContext> context = mnemonicToSpawnStrategiesMap.get(spawn.getMnemonic());
-    if (context != null) {
-      return context;
+    List<SpawnStrategy> strategies = mnemonicToSpawnStrategiesMap.get(spawn.getMnemonic());
+    if (strategies != null) {
+      return strategies;
     }
     return Preconditions.checkNotNull(mnemonicToSpawnStrategiesMap.get(""));
   }
 
   @Override
-  public List<SandboxedSpawnActionContext> getDynamicSpawnActionContexts(
+  public List<SandboxedSpawnStrategy> getDynamicSpawnActionContexts(
       Spawn spawn, DynamicMode dynamicMode) {
-    ImmutableMultimap<String, SandboxedSpawnActionContext> mnemonicToDynamicStrategies =
+    ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToDynamicStrategies =
         dynamicMode == DynamicStrategyRegistry.DynamicMode.REMOTE
             ? mnemonicToRemoteDynamicStrategies
             : mnemonicToLocalDynamicStrategies;
-    return ImmutableList.<SandboxedSpawnActionContext>builder()
+    return ImmutableList.<SandboxedSpawnStrategy>builder()
         .addAll(mnemonicToDynamicStrategies.get(spawn.getMnemonic()))
         .addAll(mnemonicToDynamicStrategies.get(""))
         .build();
@@ -160,7 +157,7 @@
       contextMap.put(typeToStrategy.getKey(), strategy);
       contextMap.put(strategy.getClass(), strategy);
     }
-    contextMap.put(SpawnActionContext.class, new ProxySpawnActionContext(this));
+    contextMap.put(SpawnStrategy.class, new ProxySpawnActionContext(this));
     contextMap.put(DynamicStrategyRegistry.class, this);
     contextMap.put(RemoteLocalFallbackRegistry.class, this);
     return ImmutableMap.copyOf(contextMap);
@@ -179,7 +176,7 @@
     // (so we respect insertion order but also instantiate them only once).
     LinkedHashSet<ActionContext> allContexts = new LinkedHashSet<>(strategies.values());
     mnemonicToSpawnStrategiesMap.values().forEach(allContexts::addAll);
-    spawnStrategyRegexList.forEach(x -> allContexts.addAll(x.spawnActionContext()));
+    spawnStrategyRegexList.forEach(x -> allContexts.addAll(x.strategies()));
     return ImmutableList.copyOf(allContexts);
   }
 
@@ -195,11 +192,11 @@
 
   @Override
   public void notifyUsedDynamic(ActionContextRegistry actionContextRegistry) {
-    for (SandboxedSpawnActionContext context : mnemonicToRemoteDynamicStrategies.values()) {
+    for (SandboxedSpawnStrategy context : mnemonicToRemoteDynamicStrategies.values()) {
       context.usedContext(actionContextRegistry);
     }
 
-    for (SandboxedSpawnActionContext context : mnemonicToLocalDynamicStrategies.values()) {
+    for (SandboxedSpawnStrategy context : mnemonicToLocalDynamicStrategies.values()) {
       context.usedContext(actionContextRegistry);
     }
   }
@@ -210,7 +207,7 @@
    * <p>Prints out debug information about the mappings.
    */
   void debugPrintSpawnActionContextMaps(Reporter reporter) {
-    for (Entry<String, List<SpawnActionContext>> entry : mnemonicToSpawnStrategiesMap.entrySet()) {
+    for (Entry<String, List<SpawnStrategy>> entry : mnemonicToSpawnStrategiesMap.entrySet()) {
       List<String> strategyNames =
           entry.getValue().stream()
               .map(spawnActionContext -> spawnActionContext.getClass().getSimpleName())
@@ -236,20 +233,19 @@
       }
     }
 
-    for (RegexFilterSpawnActionContext entry : spawnStrategyRegexList) {
+    for (RegexFilterSpawnStrategy entry : spawnStrategyRegexList) {
       reporter.handle(
           Event.info(
               String.format(
                   "SpawnActionContextMap: \"%s\" = %s",
-                  entry.regexFilter().toString(),
-                  entry.spawnActionContext().getClass().getSimpleName())));
+                  entry.regexFilter().toString(), entry.strategies().getClass().getSimpleName())));
     }
   }
 
   @VisibleForTesting
   public static SpawnActionContextMaps createStub(
       Map<Class<? extends ActionContext>, ActionContext> strategies,
-      Map<String, List<SpawnActionContext>> spawnStrategyMnemonicMap) {
+      Map<String, List<SpawnStrategy>> spawnStrategyMnemonicMap) {
     return new SpawnActionContextMaps(
         ImmutableSortedMap.copyOf(spawnStrategyMnemonicMap, String.CASE_INSENSITIVE_ORDER),
         ImmutableClassToInstanceMap.copyOf(strategies),
@@ -375,28 +371,28 @@
     public SpawnActionContextMaps build() throws ExecutorInitException {
       StrategyConverter strategyConverter = new StrategyConverter(actionContexts);
 
-      ImmutableSortedMap.Builder<String, List<SpawnActionContext>> spawnStrategyMap =
+      ImmutableSortedMap.Builder<String, List<SpawnStrategy>> spawnStrategyMap =
           ImmutableSortedMap.orderedBy(String.CASE_INSENSITIVE_ORDER);
       HashMap<Class<? extends ActionContext>, ActionContext> strategies = new HashMap<>();
-      ImmutableList.Builder<RegexFilterSpawnActionContext> spawnStrategyRegexList =
+      ImmutableList.Builder<RegexFilterSpawnStrategy> spawnStrategyRegexList =
           ImmutableList.builder();
 
       for (String mnemonic : strategyByMnemonicMap.keySet()) {
-        ImmutableList.Builder<SpawnActionContext> contexts = ImmutableList.builder();
+        ImmutableList.Builder<SpawnStrategy> spawnStrategies = ImmutableList.builder();
         Set<String> strategiesForMnemonic = strategyByMnemonicMap.get(mnemonic);
         for (String strategy : strategiesForMnemonic) {
-          SpawnActionContext context =
-              strategyConverter.getStrategy(SpawnActionContext.class, strategy);
-          if (context == null) {
+          SpawnStrategy spawnStrategy =
+              strategyConverter.getStrategy(SpawnStrategy.class, strategy);
+          if (spawnStrategy == null) {
             String strategyOrNull = Strings.emptyToNull(strategy);
             throw makeExceptionForInvalidStrategyValue(
                 strategy,
                 Joiner.on(' ').skipNulls().join(strategyOrNull, "spawn"),
-                strategyConverter.getValidValues(SpawnActionContext.class));
+                strategyConverter.getValidValues(SpawnStrategy.class));
           }
-          contexts.add(context);
+          spawnStrategies.add(spawnStrategy);
         }
-        spawnStrategyMap.put(mnemonic, contexts.build());
+        spawnStrategyMap.put(mnemonic, spawnStrategies.build());
       }
 
       Set<ActionContext> seenContext = new HashSet<>();
@@ -417,35 +413,34 @@
       }
 
       for (RegexFilterStrategy entry : strategyByRegexpBuilder.build()) {
-        ImmutableList.Builder<SpawnActionContext> contexts = ImmutableList.builder();
+        ImmutableList.Builder<SpawnStrategy> spawnStrategies = ImmutableList.builder();
         List<String> strategiesForRegex = entry.strategy();
         for (String strategy : strategiesForRegex) {
-          SpawnActionContext context =
-              strategyConverter.getStrategy(SpawnActionContext.class, strategy);
-          if (context == null) {
+          SpawnStrategy spawnStrategy =
+              strategyConverter.getStrategy(SpawnStrategy.class, strategy);
+          if (spawnStrategy == null) {
             strategy = Strings.emptyToNull(strategy);
             throw makeExceptionForInvalidStrategyValue(
                 entry.regexFilter().toString(),
                 Joiner.on(' ').skipNulls().join(strategy, "spawn"),
-                strategyConverter.getValidValues(SpawnActionContext.class));
+                strategyConverter.getValidValues(SpawnStrategy.class));
           }
-          contexts.add(context);
+          spawnStrategies.add(spawnStrategy);
         }
         spawnStrategyRegexList.add(
-            new AutoValue_SpawnActionContextMaps_RegexFilterSpawnActionContext(
-                entry.regexFilter(), contexts.build()));
+            new AutoValue_SpawnActionContextMaps_RegexFilterSpawnStrategy(
+                entry.regexFilter(), spawnStrategies.build()));
       }
 
       AbstractSpawnStrategy remoteLocalFallbackStrategy = null;
       if (remoteLocalFallbackStrategyName != null) {
-        SpawnActionContext strategy =
-            strategyConverter.getStrategy(
-                SpawnActionContext.class, remoteLocalFallbackStrategyName);
+        SpawnStrategy strategy =
+            strategyConverter.getStrategy(SpawnStrategy.class, remoteLocalFallbackStrategyName);
         if (!(strategy instanceof AbstractSpawnStrategy)) {
           throw makeExceptionForInvalidStrategyValue(
               remoteLocalFallbackStrategyName,
               "remote local fallback",
-              strategyConverter.getValidValues(SpawnActionContext.class, "remote"));
+              strategyConverter.getValidValues(SpawnStrategy.class, "remote"));
         }
         remoteLocalFallbackStrategy = (AbstractSpawnStrategy) strategy;
       }
@@ -459,11 +454,11 @@
           remoteLocalFallbackStrategy);
     }
 
-    private ImmutableMultimap<String, SandboxedSpawnActionContext> toActionContexts(
+    private ImmutableMultimap<String, SandboxedSpawnStrategy> toActionContexts(
         StrategyConverter strategyConverter,
         LinkedHashMultimap<String, String> dynamicStrategyByMnemonicMap)
         throws ExecutorInitException {
-      ImmutableMultimap.Builder<String, SandboxedSpawnActionContext> mnemonicToStrategies =
+      ImmutableMultimap.Builder<String, SandboxedSpawnStrategy> mnemonicToStrategies =
           ImmutableMultimap.builder();
       for (Entry<String, Collection<String>> mnemonicToIdentifiers :
           dynamicStrategyByMnemonicMap.asMap().entrySet()) {
@@ -471,20 +466,19 @@
           if (identifier.isEmpty()) {
             continue;
           }
-          SpawnActionContext context =
-              strategyConverter.getStrategy(SpawnActionContext.class, identifier);
-          if (context == null) {
+          SpawnStrategy strategy = strategyConverter.getStrategy(SpawnStrategy.class, identifier);
+          if (strategy == null) {
             throw makeExceptionForInvalidStrategyValue(
                 identifier,
                 Joiner.on(' ').skipNulls().join(Strings.emptyToNull(identifier), "spawn"),
-                strategyConverter.getValidValues(SpawnActionContext.class));
+                strategyConverter.getValidValues(SpawnStrategy.class));
           }
-          if (!(context instanceof SandboxedSpawnActionContext)) {
+          if (!(strategy instanceof SandboxedSpawnStrategy)) {
             throw new ExecutorInitException(
                 "Requested strategy " + identifier + " exists but does not support sandboxing");
           }
           mnemonicToStrategies.put(
-              mnemonicToIdentifiers.getKey(), (SandboxedSpawnActionContext) context);
+              mnemonicToIdentifiers.getKey(), (SandboxedSpawnStrategy) strategy);
         }
       }
       return mnemonicToStrategies.build();
diff --git a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
index 99cf4d3..79cdd77 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
@@ -29,9 +29,9 @@
 import com.google.devtools.build.lib.actions.ResourceSet;
 import com.google.devtools.build.lib.actions.SimpleSpawn;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnContinuation;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.TestExecException;
 import com.google.devtools.build.lib.analysis.actions.SpawnAction;
 import com.google.devtools.build.lib.analysis.test.TestConfiguration;
@@ -305,7 +305,7 @@
     long startTimeMillis = actionExecutionContext.getClock().currentTimeMillis();
     SpawnContinuation spawnContinuation =
         actionExecutionContext
-            .getContext(SpawnActionContext.class)
+            .getContext(SpawnStrategy.class)
             .beginExecution(spawn, actionExecutionContext.withFileOutErr(testOutErr));
     return new BazelTestAttemptContinuation(
         testAction,
@@ -604,14 +604,13 @@
           && fileOutErr.getOutputPath().exists()
           && !xmlOutputPath.exists()) {
         Spawn xmlGeneratingSpawn = createXmlGeneratingSpawn(testAction, primaryResult);
-        SpawnActionContext spawnActionContext =
-            actionExecutionContext.getContext(SpawnActionContext.class);
+        SpawnStrategy strategy = actionExecutionContext.getContext(SpawnStrategy.class);
         // We treat all failures to generate the test.xml here as catastrophic, and won't rerun
         // the test if this fails. We redirect the output to a temporary file.
         FileOutErr xmlSpawnOutErr = actionExecutionContext.getFileOutErr().childOutErr();
         try {
           SpawnContinuation xmlContinuation =
-              spawnActionContext.beginExecution(
+              strategy.beginExecution(
                   xmlGeneratingSpawn, actionExecutionContext.withFileOutErr(xmlSpawnOutErr));
           return new BazelXmlCreationContinuation(
               resolvedPaths, xmlSpawnOutErr, builder, spawnResults, xmlContinuation);
diff --git a/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java b/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java
index 4833130..6252111 100644
--- a/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java
+++ b/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java
@@ -39,9 +39,9 @@
 import com.google.devtools.build.lib.actions.RunfilesSupplier;
 import com.google.devtools.build.lib.actions.SimpleSpawn;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnContinuation;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -374,11 +374,11 @@
     // Don't share the originalOutErr across spawnGrep calls. Doing so would not be thread-safe.
     FileOutErr originalOutErr = actionExecutionContext.getFileOutErr();
     FileOutErr grepOutErr = originalOutErr.childOutErr();
-    SpawnActionContext context = actionExecutionContext.getContext(SpawnActionContext.class);
+    SpawnStrategy strategy = actionExecutionContext.getContext(SpawnStrategy.class);
     ActionExecutionContext spawnContext = actionExecutionContext.withFileOutErr(grepOutErr);
     List<SpawnResult> results;
     try {
-      results = context.exec(spawn, spawnContext);
+      results = strategy.exec(spawn, spawnContext);
       dump(spawnContext, actionExecutionContext);
     } catch (ExecException e) {
       dump(spawnContext, actionExecutionContext);
@@ -500,7 +500,7 @@
     SpawnContinuation spawnContinuation;
     try {
       spawnContinuation =
-          grepContext.getContext(SpawnActionContext.class).beginExecution(spawn, grepContext);
+          grepContext.getContext(SpawnStrategy.class).beginExecution(spawn, grepContext);
     } catch (InterruptedException e) {
       dump(grepContext, actionExecutionContext);
       return Futures.immediateCancelledFuture();
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java
index 8b8dc5a..0a0ed81 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java
@@ -22,7 +22,7 @@
 import com.google.devtools.build.lib.actions.ActionGraph;
 import com.google.devtools.build.lib.actions.ActionInput;
 import com.google.devtools.build.lib.actions.ExecutorInitException;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.analysis.ArtifactsToOwnerLabels;
 import com.google.devtools.build.lib.exec.ExecutionOptions;
 import com.google.devtools.build.lib.exec.ExecutorBuilder;
@@ -117,9 +117,7 @@
               logDir,
               filesToDownload);
       executorBuilder.addActionContext(
-          SpawnActionContext.class,
-          new RemoteSpawnStrategy(env.getExecRoot(), spawnRunner),
-          "remote");
+          SpawnStrategy.class, new RemoteSpawnStrategy(env.getExecRoot(), spawnRunner), "remote");
     }
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index 22d01bc..d355fbf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -47,9 +47,9 @@
 import com.google.devtools.build.lib.actions.ResourceSet;
 import com.google.devtools.build.lib.actions.SimpleSpawn;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnContinuation;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.extra.CppCompileInfo;
 import com.google.devtools.build.lib.actions.extra.EnvironmentVariable;
 import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
@@ -1379,9 +1379,7 @@
     }
 
     SpawnContinuation spawnContinuation =
-        actionExecutionContext
-            .getContext(SpawnActionContext.class)
-            .beginExecution(spawn, spawnContext);
+        actionExecutionContext.getContext(SpawnStrategy.class).beginExecution(spawn, spawnContext);
     return new CppCompileActionContinuation(
         actionExecutionContext,
         spawnContext,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
index 8fd246b..58ef75e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
@@ -42,8 +42,8 @@
 import com.google.devtools.build.lib.actions.ResourceSet;
 import com.google.devtools.build.lib.actions.SimpleSpawn;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnContinuation;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.extra.CppLinkInfo;
 import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
 import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
@@ -314,7 +314,7 @@
     Spawn spawn = createSpawn(actionExecutionContext);
     SpawnContinuation spawnContinuation =
         actionExecutionContext
-            .getContext(SpawnActionContext.class)
+            .getContext(SpawnStrategy.class)
             .beginExecution(spawn, actionExecutionContext);
     return new CppLinkActionContinuation(actionExecutionContext, spawnContinuation);
   }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index a0c303f..683f24a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -31,8 +31,8 @@
 import com.google.devtools.build.lib.actions.ExecException;
 import com.google.devtools.build.lib.actions.ResourceSet;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadCompatible;
@@ -137,8 +137,8 @@
     byte[] dotDContents = null;
     try {
       Spawn spawn = createSpawn(actionExecutionContext.getClientEnv());
-      SpawnActionContext context = actionExecutionContext.getContext(SpawnActionContext.class);
-      spawnResults = context.exec(spawn, actionExecutionContext);
+      SpawnStrategy strategy = actionExecutionContext.getContext(SpawnStrategy.class);
+      spawnResults = strategy.exec(spawn, actionExecutionContext);
       // The SpawnActionContext guarantees that the first list entry is the successful one.
       dotDContents = getDotDContents(spawnResults.get(0));
     } catch (ExecException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index d96e948..a90cd3e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -47,9 +47,9 @@
 import com.google.devtools.build.lib.actions.ResourceSet;
 import com.google.devtools.build.lib.actions.RunfilesSupplier;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnContinuation;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
 import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -339,7 +339,7 @@
     }
     SpawnContinuation spawnContinuation =
         actionExecutionContext
-            .getContext(SpawnActionContext.class)
+            .getContext(SpawnStrategy.class)
             .beginExecution(spawn, actionExecutionContext);
     return new JavaActionContinuation(actionExecutionContext, reducedClasspath, spawnContinuation);
   }
@@ -604,7 +604,7 @@
         }
         SpawnContinuation fallbackContinuation =
             actionExecutionContext
-                .getContext(SpawnActionContext.class)
+                .getContext(SpawnStrategy.class)
                 .beginExecution(spawn, actionExecutionContext);
         return new JavaFallbackActionContinuation(
             actionExecutionContext, results, fallbackContinuation);
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java
index fb29c4f..bd042e7 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java
@@ -23,8 +23,8 @@
 import com.google.devtools.build.lib.actions.ExecException;
 import com.google.devtools.build.lib.actions.ExecutorInitException;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.buildtool.BuildRequest;
 import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent;
 import com.google.devtools.build.lib.buildtool.buildevent.BuildInterruptedEvent;
@@ -276,7 +276,7 @@
                   treeDeleter));
       spawnRunners.add(spawnRunner);
       builder.addActionContext(
-          SpawnActionContext.class,
+          SpawnStrategy.class,
           new ProcessWrapperSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner),
           "sandboxed",
           "processwrapper-sandbox");
@@ -304,7 +304,7 @@
                     treeDeleter));
         spawnRunners.add(spawnRunner);
         builder.addActionContext(
-            SpawnActionContext.class,
+            SpawnStrategy.class,
             new DockerSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner),
             "docker");
       }
@@ -328,7 +328,7 @@
                   treeDeleter));
       spawnRunners.add(spawnRunner);
       builder.addActionContext(
-          SpawnActionContext.class,
+          SpawnStrategy.class,
           new LinuxSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner),
           "sandboxed",
           "linux-sandbox");
@@ -348,7 +348,7 @@
                   treeDeleter));
       spawnRunners.add(spawnRunner);
       builder.addActionContext(
-          SpawnActionContext.class,
+          SpawnStrategy.class,
           new DarwinSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner),
           "sandboxed",
           "darwin-sandbox");
@@ -361,7 +361,7 @@
               new WindowsSandboxedSpawnRunner(cmdEnv, timeoutKillDelay, windowsSandboxPath));
       spawnRunners.add(spawnRunner);
       builder.addActionContext(
-          SpawnActionContext.class,
+          SpawnStrategy.class,
           new WindowsSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner),
           "sandboxed",
           "windows-sandbox");
@@ -373,7 +373,7 @@
         || windowsSandboxSupported) {
       // This makes the "sandboxed" strategy available via --spawn_strategy=sandboxed,
       // but it is not necessarily the default.
-      builder.addStrategyByContext(SpawnActionContext.class, "sandboxed");
+      builder.addStrategyByContext(SpawnStrategy.class, "sandboxed");
 
       // This makes the "sandboxed" strategy the default Spawn strategy, unless it is
       // overridden by a later BlazeModule.
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java
index fa3e693..8c0193f 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java
+++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java
@@ -14,7 +14,7 @@
 package com.google.devtools.build.lib.standalone;
 
 import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.analysis.actions.FileWriteActionContext;
 import com.google.devtools.build.lib.analysis.actions.LocalTemplateExpansionStrategy;
 import com.google.devtools.build.lib.analysis.actions.TemplateExpansionContext;
@@ -94,7 +94,7 @@
     // could potentially be used and a spawnActionContext doesn't specify which one it wants, the
     // last one from strategies list will be used
     builder.addActionContext(
-        SpawnActionContext.class,
+        SpawnStrategy.class,
         new StandaloneSpawnStrategy(env.getExecRoot(), localSpawnRunner),
         "standalone",
         "local");
@@ -111,6 +111,6 @@
 
     // This makes the "standalone" strategy available via --spawn_strategy=standalone, but it is not
     // necessarily the default.
-    builder.addStrategyByContext(SpawnActionContext.class, "standalone");
+    builder.addStrategyByContext(SpawnStrategy.class, "standalone");
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java
index 1181260..4d521cd 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java
@@ -18,7 +18,7 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMultimap;
 import com.google.common.eventbus.Subscribe;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.buildtool.BuildRequest;
 import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent;
 import com.google.devtools.build.lib.buildtool.buildevent.BuildInterruptedEvent;
@@ -158,12 +158,10 @@
             // TODO(buchgr): Replace singleton by a command-scoped RunfilesTreeUpdater
             RunfilesTreeUpdater.INSTANCE);
     builder.addActionContext(
-        SpawnActionContext.class,
-        new WorkerSpawnStrategy(env.getExecRoot(), spawnRunner),
-        "worker");
+        SpawnStrategy.class, new WorkerSpawnStrategy(env.getExecRoot(), spawnRunner), "worker");
 
-    builder.addStrategyByContext(SpawnActionContext.class, "standalone");
-    builder.addStrategyByContext(SpawnActionContext.class, "worker");
+    builder.addStrategyByContext(SpawnStrategy.class, "standalone");
+    builder.addStrategyByContext(SpawnStrategy.class, "worker");
   }
 
   private static SpawnRunner createFallbackRunner(
diff --git a/src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyTest.java
index 1176f2e..ef01393 100644
--- a/src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyTest.java
@@ -37,10 +37,10 @@
 import com.google.devtools.build.lib.actions.Executor;
 import com.google.devtools.build.lib.actions.ExecutorInitException;
 import com.google.devtools.build.lib.actions.ResourceSet;
-import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext;
+import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.UserExecException;
 import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
 import com.google.devtools.build.lib.actions.util.ActionsTestUtil.NullAction;
@@ -116,7 +116,7 @@
    * <p>All the logic in here must be applicable to all tests. If any test needs to special-case
    * some aspect of this logic, then it must extend this subclass as necessary.
    */
-  private class MockSpawnStrategy implements SandboxedSpawnActionContext {
+  private class MockSpawnStrategy implements SandboxedSpawnStrategy {
     /** Identifier of this class for error reporting purposes. */
     private final String name;
 
@@ -318,12 +318,11 @@
 
     ExecutorBuilder executorBuilder =
         new ExecutorBuilder()
-            .addActionContext(SpawnActionContext.class, localStrategy, "mock-local")
-            .addActionContext(SpawnActionContext.class, remoteStrategy, "mock-remote");
+            .addActionContext(SpawnStrategy.class, localStrategy, "mock-local")
+            .addActionContext(SpawnStrategy.class, remoteStrategy, "mock-remote");
 
     if (sandboxedStrategy != null) {
-      executorBuilder.addActionContext(
-          SpawnActionContext.class, sandboxedStrategy, "mock-sandboxed");
+      executorBuilder.addActionContext(SpawnStrategy.class, sandboxedStrategy, "mock-sandboxed");
     }
 
     new DynamicExecutionModule(executorService).initStrategies(executorBuilder, options);
@@ -358,7 +357,7 @@
     checkState(optionalContext.isPresent(), "Expected module to register a dynamic strategy");
 
     return new AutoValue_DynamicSpawnStrategyTest_StrategyAndContext(
-        (SpawnActionContext) optionalContext.get(), actionExecutionContext);
+        (SpawnStrategy) optionalContext.get(), actionExecutionContext);
   }
 
   private static class NullActionWithMnemonic extends NullAction {
@@ -1019,7 +1018,7 @@
 
   @AutoValue
   abstract static class StrategyAndContext {
-    abstract SpawnActionContext strategy();
+    abstract SpawnStrategy strategy();
 
     abstract ActionExecutionContext context();
 
diff --git a/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java b/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
index dfb9980..aa88c4c 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
@@ -21,8 +21,8 @@
 import com.google.common.eventbus.EventBus;
 import com.google.devtools.build.lib.actions.ActionExecutionContext;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.ServerDirectories;
 import com.google.devtools.build.lib.events.Event;
@@ -79,7 +79,7 @@
         .setReporter(reporter)
         .setOptionsParser(parser)
         .setExecution("fake", "fake")
-        .addStrategy(SpawnActionContext.class, new FakeSpawnStrategy(), "fake")
+        .addStrategy(SpawnStrategy.class, new FakeSpawnStrategy(), "fake")
         .build();
 
     Event event =
@@ -96,7 +96,7 @@
         .contains("\"fake\" = [" + strategy.getClass().getSimpleName() + "]");
   }
 
-  private static class FakeSpawnStrategy implements SpawnActionContext {
+  private static class FakeSpawnStrategy implements SpawnStrategy {
 
     @Override
     public ImmutableList<SpawnResult> exec(
diff --git a/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java b/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java
index e34b58e..508ad07 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java
@@ -22,8 +22,8 @@
 import com.google.devtools.build.lib.actions.ActionExecutionMetadata;
 import com.google.devtools.build.lib.actions.ExecException;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.events.Reporter;
 import com.google.devtools.build.lib.testutil.Suite;
 import com.google.devtools.build.lib.testutil.TestSpec;
@@ -52,8 +52,8 @@
   public void setUp() {
     builder =
         new SpawnActionContextMaps.Builder()
-            .addContext(SpawnActionContext.class, ac1, "ac1")
-            .addContext(SpawnActionContext.class, ac2, "ac2");
+            .addContext(SpawnStrategy.class, ac1, "ac1")
+            .addContext(SpawnStrategy.class, ac2, "ac2");
   }
 
   @Test
@@ -61,8 +61,7 @@
     builder.strategyByMnemonicMap().put("Spawn1", "ac1");
     builder.strategyByMnemonicMap().put("Spawn1", "ac2");
     SpawnActionContextMaps maps = builder.build();
-    List<SpawnActionContext> result =
-        maps.getSpawnActionContexts(mockSpawn("Spawn1", null), reporter);
+    List<SpawnStrategy> result = maps.getSpawnActionContexts(mockSpawn("Spawn1", null), reporter);
     assertThat(result).containsExactly(ac1, ac2);
   }
 
@@ -71,8 +70,7 @@
     builder.strategyByMnemonicMap().put("Spawn1", "");
     builder.strategyByMnemonicMap().put("", "ac2");
     SpawnActionContextMaps maps = builder.build();
-    List<SpawnActionContext> result =
-        maps.getSpawnActionContexts(mockSpawn("Spawn1", null), reporter);
+    List<SpawnStrategy> result = maps.getSpawnActionContexts(mockSpawn("Spawn1", null), reporter);
     assertThat(result).containsExactly(ac2);
   }
 
@@ -82,7 +80,7 @@
     builder.addStrategyByRegexp(converter.convert("foo/bar"), ImmutableList.of("ac2"));
     SpawnActionContextMaps maps = builder.build();
 
-    List<SpawnActionContext> result =
+    List<SpawnStrategy> result =
         maps.getSpawnActionContexts(mockSpawn(null, "Doing something with foo/bar/baz"), reporter);
 
     assertThat(result).containsExactly(ac1);
@@ -94,7 +92,7 @@
     builder.addStrategyByRegexp(converter.convert("foo/bar"), ImmutableList.of("ac2"));
     SpawnActionContextMaps maps = builder.build();
 
-    List<SpawnActionContext> result =
+    List<SpawnStrategy> result =
         maps.getSpawnActionContexts(
             mockSpawn("Spawn1", "Doing something with foo/bar/baz"), reporter);
 
@@ -117,7 +115,7 @@
     return mockSpawn;
   }
 
-  private static class AC1 implements SpawnActionContext {
+  private static class AC1 implements SpawnStrategy {
     @Override
     public ImmutableList<SpawnResult> exec(
         Spawn spawn, ActionExecutionContext actionExecutionContext)
@@ -131,7 +129,7 @@
     }
   }
 
-  private static class AC2 implements SpawnActionContext {
+  private static class AC2 implements SpawnStrategy {
     @Override
     public ImmutableList<SpawnResult> exec(
         Spawn spawn, ActionExecutionContext actionExecutionContext)
diff --git a/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java b/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java
index 48fbf61..c1e0d02 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java
@@ -33,10 +33,10 @@
 import com.google.devtools.build.lib.actions.ActionKeyContext;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnContinuation;
 import com.google.devtools.build.lib.actions.SpawnResult;
 import com.google.devtools.build.lib.actions.SpawnResult.Status;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.test.TestActionContext;
 import com.google.devtools.build.lib.analysis.test.TestProvider;
@@ -91,10 +91,9 @@
   }
 
   private class FakeActionExecutionContext extends ActionExecutionContext {
-    private final SpawnActionContext spawnActionContext;
+    private final SpawnStrategy spawnActionContext;
 
-    public FakeActionExecutionContext(
-        FileOutErr fileOutErr, SpawnActionContext spawnActionContext) {
+    public FakeActionExecutionContext(FileOutErr fileOutErr, SpawnStrategy spawnActionContext) {
       super(
           /*executor=*/ null,
           /*actionInputFileCache=*/ null,
@@ -120,7 +119,7 @@
     @Override
     @Nullable
     public <T extends ActionContext> T getContext(Class<T> type) {
-      return SpawnActionContext.class.equals(type) ? type.cast(spawnActionContext) : null;
+      return SpawnStrategy.class.equals(type) ? type.cast(spawnActionContext) : null;
     }
 
     @Override
@@ -139,7 +138,7 @@
     }
   }
 
-  @Mock private SpawnActionContext spawnActionContext;
+  @Mock private SpawnStrategy spawnActionContext;
 
   private StoredEventHandler storedEvents = new StoredEventHandler();
 
diff --git a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
index af2e899..7e7dc1e 100644
--- a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
@@ -34,8 +34,8 @@
 import com.google.devtools.build.lib.actions.ResourceSet;
 import com.google.devtools.build.lib.actions.SimpleSpawn;
 import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnActionContext;
 import com.google.devtools.build.lib.actions.SpawnResult;
+import com.google.devtools.build.lib.actions.SpawnStrategy;
 import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.ServerDirectories;
@@ -196,7 +196,7 @@
   @Test
   public void testBinTrueExecutesFine() throws Exception {
     Spawn spawn = createSpawn(getTrueCommand());
-    executor.getContext(SpawnActionContext.class).exec(spawn, createContext());
+    executor.getContext(SpawnStrategy.class).exec(spawn, createContext());
 
     if (OS.getCurrent() != OS.WINDOWS) {
       assertThat(out()).isEmpty();
@@ -205,7 +205,7 @@
   }
 
   private List<SpawnResult> run(Spawn spawn) throws Exception {
-    return executor.getContext(SpawnActionContext.class).exec(spawn, createContext());
+    return executor.getContext(SpawnStrategy.class).exec(spawn, createContext());
   }
 
   private ActionExecutionContext createContext() {