[Audiosharing] Not announce enable/disable when toggle main switch

Fix: 356318679
Test: atest
Flag: com.android.settingslib.flags.enable_le_audio_sharing
Change-Id: I3331f9ded48352f442712287a6b536da883fe73d
This commit is contained in:
Yiyi Shen
2024-07-31 16:41:53 +08:00
parent 7b2435a01c
commit 124a9e1ebd
3 changed files with 47 additions and 0 deletions

View File

@@ -30,6 +30,9 @@ import android.content.IntentFilter;
import android.util.FeatureFlagUtils; import android.util.FeatureFlagUtils;
import android.util.Log; import android.util.Log;
import android.util.Pair; 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;
import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.CompoundButton.OnCheckedChangeListener;
@@ -284,6 +287,7 @@ public class AudioSharingSwitchBarController extends BasePreferenceController
: mProfileManager.getLeAudioBroadcastAssistantProfile(); : mProfileManager.getLeAudioBroadcastAssistantProfile();
mExecutor = Executors.newSingleThreadExecutor(); mExecutor = Executors.newSingleThreadExecutor();
mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
mSwitchBar.getRootView().setAccessibilityDelegate(new MainSwitchAccessibilityDelegate());
} }
@Override @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);
}
}
} }

View File

@@ -21,10 +21,12 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
@@ -52,6 +54,7 @@ public class AudioSharingDashboardFragmentTest {
@Mock private SettingsActivity mActivity; @Mock private SettingsActivity mActivity;
@Mock private SettingsMainSwitchBar mSwitchBar; @Mock private SettingsMainSwitchBar mSwitchBar;
@Mock private View mView;
@Mock private AudioSharingDeviceVolumeGroupController mVolumeGroupController; @Mock private AudioSharingDeviceVolumeGroupController mVolumeGroupController;
@Mock private AudioSharingCallAudioPreferenceController mCallAudioController; @Mock private AudioSharingCallAudioPreferenceController mCallAudioController;
@Mock private AudioSharingPlaySoundPreferenceController mPlaySoundController; @Mock private AudioSharingPlaySoundPreferenceController mPlaySoundController;
@@ -61,6 +64,7 @@ public class AudioSharingDashboardFragmentTest {
@Before @Before
public void setUp() { public void setUp() {
when(mSwitchBar.getRootView()).thenReturn(mView);
mFragment = new AudioSharingDashboardFragment(); mFragment = new AudioSharingDashboardFragment();
} }

View File

@@ -51,6 +51,8 @@ import android.os.Looper;
import android.platform.test.flag.junit.SetFlagsRule; import android.platform.test.flag.junit.SetFlagsRule;
import android.util.FeatureFlagUtils; import android.util.FeatureFlagUtils;
import android.util.Pair; import android.util.Pair;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import androidx.fragment.app.DialogFragment; import androidx.fragment.app.DialogFragment;
@@ -590,4 +592,26 @@ public class AudioSharingSwitchBarControllerTest {
mController.mBroadcastAssistantCallback.onSourceLost(/* broadcastId= */ 1); mController.mBroadcastAssistantCallback.onSourceLost(/* broadcastId= */ 1);
verifyNoMoreInteractions(mFeatureFactory.metricsFeatureProvider); 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();
}
} }