[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.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);
}
}
}

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.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();
}

View File

@@ -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();
}
}