Merge "Revert "The source of subtree chagnes should be the viewParent""
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 6d4128b..1779a80 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -13386,10 +13386,10 @@
 
         if ((mPrivateFlags2 & PFLAG2_SUBTREE_ACCESSIBILITY_STATE_CHANGED) == 0) {
             mPrivateFlags2 |= PFLAG2_SUBTREE_ACCESSIBILITY_STATE_CHANGED;
-            if (mParent != null && mParent instanceof View) {
+            if (mParent != null) {
                 try {
                     mParent.notifySubtreeAccessibilityStateChanged(
-                            this, (View) mParent, AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
+                            this, this, AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
                 } catch (AbstractMethodError e) {
                     Log.e(VIEW_LOG_TAG, mParent.getClass().getSimpleName() +
                             " does not fully implement ViewParent", e);
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 7ee8865..82a5fa9 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -5144,7 +5144,7 @@
         }
 
         if (child.getVisibility() != View.GONE) {
-            child.notifySubtreeAccessibilityStateChangedIfNeeded();
+            notifySubtreeAccessibilityStateChangedIfNeeded();
         }
 
         if (mTransientIndices != null) {
@@ -5432,7 +5432,7 @@
         dispatchViewRemoved(view);
 
         if (view.getVisibility() != View.GONE) {
-            view.notifySubtreeAccessibilityStateChangedIfNeeded();
+            notifySubtreeAccessibilityStateChangedIfNeeded();
         }
 
         int transientCount = mTransientIndices == null ? 0 : mTransientIndices.size();
@@ -5740,7 +5740,7 @@
         }
         dispatchVisibilityAggregated(isAttachedToWindow() && getWindowVisibility() == VISIBLE
                 && isShown());
-        child.notifySubtreeAccessibilityStateChangedIfNeeded();
+        notifySubtreeAccessibilityStateChangedIfNeeded();
     }
 
     /**
@@ -6146,8 +6146,7 @@
         if (invalidate) {
             invalidateViewProperty(false, false);
         }
-        notifySubtreeAccessibilityStateChanged(
-                this, this, AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
+        notifySubtreeAccessibilityStateChangedIfNeeded();
     }
 
     @Override
diff --git a/core/java/android/widget/AdapterView.java b/core/java/android/widget/AdapterView.java
index 5359e27..c55f7d6 100644
--- a/core/java/android/widget/AdapterView.java
+++ b/core/java/android/widget/AdapterView.java
@@ -1106,8 +1106,7 @@
             checkSelectionChanged();
         }
 
-        notifySubtreeAccessibilityStateChanged(
-                this, this, AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
+        notifySubtreeAccessibilityStateChangedIfNeeded();
     }
 
     /**