Add an escape hatch to quickly disable --experimental_extra_action_top_level_only for Aspects.

--
MOS_MIGRATED_REVID=139003012
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index f90123d..5f03ec2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -187,6 +187,18 @@
             help = "Only schedules extra_actions for top level targets.")
     public boolean extraActionTopLevelOnly;
 
+    @Option(
+      name = "experimental_extra_action_top_level_only_with_aspects",
+      defaultValue = "true",
+      category = "experimental",
+      help =
+          "If true and --experimental_extra_action_top_level_only=true, will include actions "
+              + "from aspects injected by top-level rules. "
+              + "This is an escape hatch in case commit df9e5e16c370391098c4432779ad4d1c9dd693ca "
+              + "breaks something."
+    )
+    public boolean extraActionTopLevelOnlyWithAspects;
+
     @Option(name = "version_window_for_dirty_node_gc",
             defaultValue = "0",
             category = "undocumented",
@@ -656,22 +668,26 @@
           target.getProvider(ExtraActionArtifactsProvider.class);
       if (provider != null) {
         if (viewOptions.extraActionTopLevelOnly) {
-          // Collect all aspect-classes that topLevel might inject.
-          Set<AspectClass> aspectClasses = new HashSet<>();
-          for (Attribute attr : target.getTarget().getAssociatedRule().getAttributes()) {
-            aspectClasses.addAll(attr.getAspectClasses());
-          }
-
-          Iterable<Artifact> artifacts;
-          if (aspectClasses.isEmpty()) {
-            artifacts = provider.getExtraActionArtifacts();
+          if (!viewOptions.extraActionTopLevelOnlyWithAspects) {
+            builder.add(ExtraArtifactSet.of(target.getLabel(), provider.getExtraActionArtifacts()));
           } else {
-            ImmutableList.Builder<Artifact> artifactBuilder = ImmutableList.builder();
-            artifactBuilder.addAll(provider.getExtraActionArtifacts());
-            artifactBuilder.addAll(filterTransitiveExtraActions(provider, aspectClasses));
-            artifacts = artifactBuilder.build();
+            // Collect all aspect-classes that topLevel might inject.
+            Set<AspectClass> aspectClasses = new HashSet<>();
+            for (Attribute attr : target.getTarget().getAssociatedRule().getAttributes()) {
+              aspectClasses.addAll(attr.getAspectClasses());
+            }
+
+            Iterable<Artifact> artifacts;
+            if (aspectClasses.isEmpty()) {
+              artifacts = provider.getExtraActionArtifacts();
+            } else {
+              ImmutableList.Builder<Artifact> artifactBuilder = ImmutableList.builder();
+              artifactBuilder.addAll(provider.getExtraActionArtifacts());
+              artifactBuilder.addAll(filterTransitiveExtraActions(provider, aspectClasses));
+              artifacts = artifactBuilder.build();
+            }
+            builder.add(ExtraArtifactSet.of(target.getLabel(), artifacts));
           }
-          builder.add(ExtraArtifactSet.of(target.getLabel(), artifacts));
         } else {
           builder.addTransitive(provider.getTransitiveExtraActionArtifacts());
         }