Properly filter out Aspect attributes when `blaze query` requests --noimplicit_deps and/or --nohost_deps.

RELNOTES: --noimplicit_deps and --nohost_deps work correctly for Aspect attributes.

--
MOS_MIGRATED_REVID=112724917
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
index 5c905ba..875d9dc 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
@@ -24,7 +24,6 @@
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy;
 import com.google.devtools.build.lib.packages.NativeAspectClass.NativeAspectFactory;
-import com.google.devtools.build.lib.util.BinaryPredicate;
 import com.google.devtools.build.lib.util.Preconditions;
 
 import java.util.Collection;
@@ -141,21 +140,23 @@
    * Returns the attribute -> set of labels that are provided by aspects of attribute.
    */
   public static ImmutableMultimap<Attribute, Label> visitAspectsIfRequired(
-      Target from, Attribute attribute, Target to) {
+      Target from, Attribute attribute, Target to,
+      DependencyFilter dependencyFilter) {
     // Aspect can be declared only for Rules.
     if (!(from instanceof Rule) || !(to instanceof Rule)) {
       return ImmutableMultimap.of();
     }
     RuleClass ruleClass = ((Rule) to).getRuleClassObject();
     ImmutableSet<Class<?>> providers = ruleClass.getAdvertisedProviders();
-    return visitAspectsIfRequired((Rule) from, attribute, toStringSet(providers));
+    return visitAspectsIfRequired((Rule) from, attribute, toStringSet(providers), dependencyFilter);
   }
 
   /**
    * Returns the attribute -&gt; set of labels that are provided by aspects of attribute.
    */
   public static ImmutableMultimap<Attribute, Label> visitAspectsIfRequired(
-      Rule from, Attribute attribute, Set<String> advertisedProviders) {
+      Rule from, Attribute attribute, Set<String> advertisedProviders,
+      DependencyFilter dependencyFilter) {
     if (advertisedProviders.isEmpty()) {
       return ImmutableMultimap.of();
     }
@@ -168,8 +169,7 @@
           candidateClass.getDefinition().getRequiredProviderNames())) {
         continue;
       }
-      addAllAttributesOfAspect(
-          from, result, candidateClass.getDefinition(), DependencyFilter.ALL_DEPS);
+      addAllAttributesOfAspect(from, result, candidateClass, dependencyFilter);
     }
     return ImmutableMultimap.copyOf(result);
   }
@@ -188,11 +188,11 @@
   public static void addAllAttributesOfAspect(
       Rule from,
       Multimap<Attribute, Label> labelBuilder,
-      AspectDefinition aspectDefinition,
-      BinaryPredicate<? super Rule, Attribute> predicate) {
-    ImmutableMap<String, Attribute> attributes = aspectDefinition.getAttributes();
+      Aspect aspect,
+      DependencyFilter dependencyFilter) {
+    ImmutableMap<String, Attribute> attributes = aspect.getDefinition().getAttributes();
     for (Attribute aspectAttribute : attributes.values()) {
-      if (!predicate.apply(from, aspectAttribute)) {
+      if (!dependencyFilter.apply(aspect, aspectAttribute)) {
         continue;
       }
       if (aspectAttribute.getType() == BuildType.LABEL) {