Reply to accessibility method call even if semantics is not enabled (flutter/engine#31063)

This commit is contained in:
chunhtai
2022-02-02 09:05:11 -08:00
committed by GitHub
parent a519c9501a
commit fd09dc3626
3 changed files with 39 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ package io.flutter.embedding.engine.systemchannels;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import io.flutter.Log;
import io.flutter.embedding.engine.FlutterJNI;
import io.flutter.embedding.engine.dart.DartExecutor;
@@ -23,7 +24,8 @@ public class AccessibilityChannel {
@NonNull public final FlutterJNI flutterJNI;
@Nullable private AccessibilityMessageHandler handler;
private final BasicMessageChannel.MessageHandler<Object> parsingMessageHandler =
@VisibleForTesting
final BasicMessageChannel.MessageHandler<Object> parsingMessageHandler =
new BasicMessageChannel.MessageHandler<Object>() {
@Override
public void onMessage(
@@ -31,6 +33,7 @@ public class AccessibilityChannel {
// If there is no handler to respond to this message then we don't need to
// parse it. Return.
if (handler == null) {
reply.reply(null);
return;
}

View File

@@ -26,6 +26,7 @@ import io.flutter.embedding.engine.loader.FlutterLoaderTest;
import io.flutter.embedding.engine.mutatorsstack.FlutterMutatorViewTest;
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistryTest;
import io.flutter.embedding.engine.renderer.FlutterRendererTest;
import io.flutter.embedding.engine.systemchannels.AccessibilityChannelTest;
import io.flutter.embedding.engine.systemchannels.DeferredComponentChannelTest;
import io.flutter.embedding.engine.systemchannels.KeyEventChannelTest;
import io.flutter.embedding.engine.systemchannels.PlatformChannelTest;
@@ -56,6 +57,7 @@ import test.io.flutter.embedding.engine.PluginComponentTest;
@RunWith(Suite.class)
@SuiteClasses({
AccessibilityBridgeTest.class,
AccessibilityChannelTest.class,
ApplicationInfoLoaderTest.class,
BinaryCodecTest.class,
DartExecutorTest.class,

View File

@@ -0,0 +1,33 @@
package io.flutter.embedding.engine.systemchannels;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import android.annotation.TargetApi;
import io.flutter.embedding.engine.FlutterJNI;
import io.flutter.embedding.engine.dart.DartExecutor;
import io.flutter.plugin.common.BasicMessageChannel;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@Config(
manifest = Config.NONE,
shadows = {})
@RunWith(RobolectricTestRunner.class)
@TargetApi(24)
public class AccessibilityChannelTest {
@Test
public void repliesWhenNoAccessibilityHandler() throws JSONException {
AccessibilityChannel accessibilityChannel =
new AccessibilityChannel(mock(DartExecutor.class), mock(FlutterJNI.class));
JSONObject arguments = new JSONObject();
arguments.put("type", "announce");
BasicMessageChannel.Reply reply = mock(BasicMessageChannel.Reply.class);
accessibilityChannel.parsingMessageHandler.onMessage(arguments, reply);
verify(reply).reply(null);
}
}