diff --git a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java index 60b2ee507cd..3c0faba5db8 100644 --- a/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java +++ b/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarController.java @@ -30,6 +30,9 @@ import android.content.IntentFilter; import android.util.FeatureFlagUtils; import android.util.Log; import android.util.Pair; +import android.view.View; +import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; @@ -284,6 +287,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController : mProfileManager.getLeAudioBroadcastAssistantProfile(); mExecutor = Executors.newSingleThreadExecutor(); mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); + mSwitchBar.getRootView().setAccessibilityDelegate(new MainSwitchAccessibilityDelegate()); } @Override @@ -564,4 +568,19 @@ public class AudioSharingSwitchBarController extends BasePreferenceController } }); } + + private static final class MainSwitchAccessibilityDelegate extends View.AccessibilityDelegate { + @Override + public boolean onRequestSendAccessibilityEvent( + @NonNull ViewGroup host, @NonNull View view, @NonNull AccessibilityEvent event) { + if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED + && (event.getContentChangeTypes() + & AccessibilityEvent.CONTENT_CHANGE_TYPE_ENABLED) + != 0) { + Log.d(TAG, "Skip accessibility event for CONTENT_CHANGE_TYPE_ENABLED"); + return false; + } + return super.onRequestSendAccessibilityEvent(host, view, event); + } + } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragmentTest.java index 8e4915cc8ff..7d8846d0506 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingDashboardFragmentTest.java @@ -21,10 +21,12 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.app.settings.SettingsEnums; import android.content.Context; import android.os.Bundle; +import android.view.View; import androidx.test.core.app.ApplicationProvider; @@ -52,6 +54,7 @@ public class AudioSharingDashboardFragmentTest { @Mock private SettingsActivity mActivity; @Mock private SettingsMainSwitchBar mSwitchBar; + @Mock private View mView; @Mock private AudioSharingDeviceVolumeGroupController mVolumeGroupController; @Mock private AudioSharingCallAudioPreferenceController mCallAudioController; @Mock private AudioSharingPlaySoundPreferenceController mPlaySoundController; @@ -61,6 +64,7 @@ public class AudioSharingDashboardFragmentTest { @Before public void setUp() { + when(mSwitchBar.getRootView()).thenReturn(mView); mFragment = new AudioSharingDashboardFragment(); } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java index bfb4f2f754c..711ef6f6955 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/audiosharing/AudioSharingSwitchBarControllerTest.java @@ -51,6 +51,8 @@ import android.os.Looper; import android.platform.test.flag.junit.SetFlagsRule; import android.util.FeatureFlagUtils; import android.util.Pair; +import android.view.View; +import android.view.accessibility.AccessibilityEvent; import android.widget.CompoundButton; import androidx.fragment.app.DialogFragment; @@ -590,4 +592,26 @@ public class AudioSharingSwitchBarControllerTest { mController.mBroadcastAssistantCallback.onSourceLost(/* broadcastId= */ 1); verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider); } + + @Test + public void testAccessibilityDelegate() { + View view = new View(mContext); + AccessibilityEvent event = + new AccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); + event.setContentChangeTypes(AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED); + assertThat( + mSwitchBar + .getRootView() + .getAccessibilityDelegate() + .onRequestSendAccessibilityEvent(mSwitchBar, view, event)) + .isTrue(); + + event.setContentChangeTypes(AccessibilityEvent.CONTENT_CHANGE_TYPE_ENABLED); + assertThat( + mSwitchBar + .getRootView() + .getAccessibilityDelegate() + .onRequestSendAccessibilityEvent(mSwitchBar, view, event)) + .isFalse(); + } }