Merge "CheckBoxPreferences do not fire accessibility events" into honeycomb-mr1
diff --git a/core/java/android/preference/CheckBoxPreference.java b/core/java/android/preference/CheckBoxPreference.java
index f16a7e4..2bf6c7b 100644
--- a/core/java/android/preference/CheckBoxPreference.java
+++ b/core/java/android/preference/CheckBoxPreference.java
@@ -24,8 +24,10 @@
 import android.os.Parcelable;
 import android.util.AttributeSet;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityManager;
+import android.widget.CheckBox;
 import android.widget.Checkable;
 import android.widget.TextView;
 
@@ -90,8 +92,16 @@
                     checkboxView.isEnabled()) {
                 mSendAccessibilityEventViewClickedType = false;
 
-                int eventType = AccessibilityEvent.TYPE_VIEW_CLICKED;
-                checkboxView.sendAccessibilityEventUnchecked(AccessibilityEvent.obtain(eventType));
+                // we send an event on behalf of the check box because in onBind the latter
+                // is detached from its parent and such views do not send accessibility events
+                AccessibilityEvent event = AccessibilityEvent.obtain(
+                        AccessibilityEvent.TYPE_VIEW_CLICKED);
+                event.setClassName(checkboxView.getClass().getName());
+                event.setPackageName(getContext().getPackageName());
+                event.setEnabled(checkboxView.isEnabled());
+                event.setContentDescription(checkboxView.getContentDescription());
+                event.setChecked(((Checkable) checkboxView).isChecked());
+                mAccessibilityManager.sendAccessibilityEvent(event);
             }
         }