diff --git a/Android.bp b/Android.bp
index 17b77d6..048b78e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -53,7 +53,7 @@
     tools: ["layoutlib_create"],
     out: ["temp_layoutlib.jar"],
     srcs: [
-        ":atf-prebuilt-357817562{.jar}",
+        ":atf-prebuilt{.jar}",
         ":core-icu4j-for-host{.jar}",
         ":core-libart-for-host{.jar}",
         ":framework-all{.jar}",
diff --git a/bridge/tests/src/com/android/tools/idea/validator/AccessibilityValidatorTests.java b/bridge/tests/src/com/android/tools/idea/validator/AccessibilityValidatorTests.java
index 9f4f83c..dc3c444 100644
--- a/bridge/tests/src/com/android/tools/idea/validator/AccessibilityValidatorTests.java
+++ b/bridge/tests/src/com/android/tools/idea/validator/AccessibilityValidatorTests.java
@@ -153,7 +153,7 @@
             ExpectedLevels expectedLevels = new ExpectedLevels();
             expectedLevels.expectedVerboses = 1;
             expectedLevels.expectedErrors = 1;
-            expectedLevels.expectedFixes = 1;
+            expectedLevels.expectedFixes = 0;
             expectedLevels.check(speakableCheck);
 
             // Make sure no other errors in the system.
diff --git a/validator/src/com/android/tools/idea/validator/ValidatorData.java b/validator/src/com/android/tools/idea/validator/ValidatorData.java
index 956f7eb..167cab1 100644
--- a/validator/src/com/android/tools/idea/validator/ValidatorData.java
+++ b/validator/src/com/android/tools/idea/validator/ValidatorData.java
@@ -182,13 +182,18 @@
      * Represents a view attribute which contains a namespace and an attribute name.
      */
     public static class ViewAttribute {
-        //TODO: Consider adding uri info as well for xml modifications.
+        /** The namespace used in XML files for this view attribute. */
+        @NotNull public final String mNamespaceUri;
         /** The namespace of this view attribute. */
         @NotNull public final String mNamespace;
         /** The attribute name of this view attribute. */
         @NotNull public final String mAttributeName;
 
-        public ViewAttribute(@NotNull String namespace, @NotNull String attributeName) {
+        public ViewAttribute(
+                @NotNull String namespaceUri,
+                @NotNull String namespace,
+                @NotNull String attributeName) {
+            mNamespaceUri = namespaceUri;
             mNamespace = namespace;
             mAttributeName = attributeName;
         }
diff --git a/validator/src/com/android/tools/idea/validator/ValidatorUtil.java b/validator/src/com/android/tools/idea/validator/ValidatorUtil.java
index 51c341a..63bea1b 100644
--- a/validator/src/com/android/tools/idea/validator/ValidatorUtil.java
+++ b/validator/src/com/android/tools/idea/validator/ValidatorUtil.java
@@ -51,6 +51,10 @@
 import com.google.android.apps.common.testing.accessibility.framework.AccessibilityHierarchyCheck;
 import com.google.android.apps.common.testing.accessibility.framework.AccessibilityHierarchyCheckResult;
 import com.google.android.apps.common.testing.accessibility.framework.Parameters;
+import com.google.android.apps.common.testing.accessibility.framework.checks.EditableContentDescCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.RedundantDescriptionCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.TextContrastCheck;
+import com.google.android.apps.common.testing.accessibility.framework.checks.TouchTargetSizeCheck;
 import com.google.android.apps.common.testing.accessibility.framework.strings.StringManager;
 import com.google.android.apps.common.testing.accessibility.framework.suggestions.CompoundFixSuggestions;
 import com.google.android.apps.common.testing.accessibility.framework.suggestions.FixSuggestion;
@@ -64,6 +68,7 @@
 import com.google.android.apps.common.testing.accessibility.framework.uielement.DefaultCustomViewBuilderAndroid;
 import com.google.android.apps.common.testing.accessibility.framework.uielement.ViewHierarchyElementAndroid;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 
 public class ValidatorUtil {
 
@@ -88,6 +93,15 @@
             new DefaultCustomViewBuilderAndroid();
 
     /**
+     * Fixes could be only provided for a {@link AccessibilityHierarchyCheckResult}s generated by
+     * a predefined set of {@link AccessibilityHierarchyCheck}s.
+     */
+    private final static ImmutableSet<Class<? extends AccessibilityHierarchyCheck>>
+            sAllowedCheckResultClassSet4Fix = ImmutableSet.of(TextContrastCheck.class,
+            TouchTargetSizeCheck.class, RedundantDescriptionCheck.class,
+            EditableContentDescCheck.class);
+
+    /**s
      * @param policy policy to apply for the hierarchy
      * @param view root view to build hierarchy from
      * @param image screenshot image that matches the view
@@ -301,9 +315,12 @@
             @NotNull AccessibilityHierarchyCheckResult result,
             @NotNull AccessibilityHierarchy hierarchy,
             @Nullable Parameters parameters) {
-        ImmutableList<FixSuggestion> fixSuggestions =
-                FixSuggestionPreset.provideFixSuggestions(result, hierarchy, parameters);
-        return fixSuggestions.isEmpty() ? null : convertFix(fixSuggestions.get(0));
+        if (sAllowedCheckResultClassSet4Fix.contains(result.getSourceCheckClass())) {
+            ImmutableList<FixSuggestion> fixSuggestions =
+                    FixSuggestionPreset.provideFixSuggestions(result, hierarchy, parameters);
+            return fixSuggestions.isEmpty() ? null : convertFix(fixSuggestions.get(0));
+        }
+        return null;
     }
 
     /** Convert {@link FixSuggestion} to {@link ValidatorData.Fix} */
@@ -319,35 +336,31 @@
                             .collect(Collectors.toList());
             return new CompoundFix(
                     fixes,
-                    convertHtml(compoundFixSuggestions.getDescription(Locale.ENGLISH)));
+                    compoundFixSuggestions.getDescription(Locale.ENGLISH));
         } else if (fixSuggestion instanceof RemoveViewAttributeFixSuggestion) {
             RemoveViewAttributeFixSuggestion removeViewAttributeFix =
                     (RemoveViewAttributeFixSuggestion)fixSuggestion;
             return new RemoveViewAttributeFix(
                     convertViewAttribute(removeViewAttributeFix.getViewAttribute()),
-                    convertHtml(removeViewAttributeFix.getDescription(Locale.ENGLISH)));
+                    removeViewAttributeFix.getDescription(Locale.ENGLISH));
         } else if (fixSuggestion instanceof SetViewAttributeFixSuggestion) {
             SetViewAttributeFixSuggestion setViewAttributeFixSuggestion =
                     (SetViewAttributeFixSuggestion)fixSuggestion;
             return new SetViewAttributeFix(
                     convertViewAttribute(setViewAttributeFixSuggestion.getViewAttribute()),
                     setViewAttributeFixSuggestion.getSuggestedValue(),
-                    convertHtml(setViewAttributeFixSuggestion.getDescription(Locale.ENGLISH)));
+                    setViewAttributeFixSuggestion.getDescription(Locale.ENGLISH));
         }
         return null;
     }
 
-    @NotNull
-    private static String convertHtml(CharSequence html) {
-        //TODO: Provide descriptions without formatting markup in ATF
-        return Jsoup.parse(html.toString()).text();
-    }
-
     /** Convert {@link ViewAttribute} to {@link ValidatorData.ViewAttribute} */
     @NotNull
     private static ValidatorData.ViewAttribute convertViewAttribute(
             @NotNull ViewAttribute viewAttribute) {
-        return new ValidatorData.ViewAttribute(viewAttribute.getNamespace(),
+        return new ValidatorData.ViewAttribute(
+                viewAttribute.getNamespaceUri(),
+                viewAttribute.getNamespace(),
                 viewAttribute.getAttributeName());
     }
 }
