Reply to accessibility method call even if semantics is not enabled (flutter/engine#31063)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user