Make sure setting switch bar state is announced.

When the switch is clicked, a TYPE_VIEW_CLICKED a11y
event is produced. It works fine if the switch bar is
clicked, but if the switch itself is clicked the event
comes from the switch, which is marked as not important
for accessibility. Re-dispatching events from the switch
as coming from the switch bar makes sure that the event
comes from a view that accessibility services can see.

Bug: 30484493
Change-Id: Ie48cc78594c64b1cc5735475e1cb5959fadaaf4a
diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java
index 95fd19a..240c062 100644
--- a/src/com/android/settings/widget/SwitchBar.java
+++ b/src/com/android/settings/widget/SwitchBar.java
@@ -341,6 +341,14 @@
         return Switch.class.getName();
     }
 
+    @Override
+    public boolean onRequestSendAccessibilityEvent(View child, AccessibilityEvent event) {
+        // Since the children are marked as not important for accessibility, re-dispatch all
+        // of their events as if they came from this view
+        event.setSource(this);
+        return true;
+    }
+
     /** @hide */
     @Override
     public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {