未验证 提交 056fd459 编写于 作者: M Michael Goderbauer 提交者: GitHub

Revert " Add parameters to SemanticActions; implement extend selection for a11y (#4444)" (#4448)

This reverts commit 59c3a37e.
上级 59c3a37e
......@@ -85,13 +85,12 @@ void _dispatchPointerDataPacket(ByteData packet) {
_invoke1<PointerDataPacket>(window.onPointerDataPacket, window._onPointerDataPacketZone, _unpackPointerDataPacket(packet));
}
void _dispatchSemanticsAction(int id, int action, ByteData args) {
_invoke3<int, SemanticsAction, ByteData>(
void _dispatchSemanticsAction(int id, int action) {
_invoke2<int, SemanticsAction>(
window.onSemanticsAction,
window._onSemanticsActionZone,
id,
SemanticsAction.values[action],
args,
);
}
......
......@@ -14,7 +14,7 @@ typedef void FrameCallback(Duration duration);
typedef void PointerDataPacketCallback(PointerDataPacket packet);
/// Signature for [Window.onSemanticsAction].
typedef void SemanticsActionCallback(int id, SemanticsAction action, ByteData args);
typedef void SemanticsActionCallback(int id, SemanticsAction action);
/// Signature for responses to platform messages.
///
......
......@@ -223,22 +223,14 @@ void Window::DispatchPointerDataPacket(const PointerDataPacket& packet) {
{data_handle});
}
void Window::DispatchSemanticsAction(int32_t id,
SemanticsAction action,
std::vector<uint8_t> args) {
void Window::DispatchSemanticsAction(int32_t id, SemanticsAction action) {
tonic::DartState* dart_state = library_.dart_state().get();
if (!dart_state)
return;
tonic::DartState::Scope scope(dart_state);
Dart_Handle args_handle = (args.empty()) ? Dart_Null() : ToByteData(args);
if (Dart_IsError(args_handle))
return;
DartInvokeField(
library_.value(), "_dispatchSemanticsAction",
{ToDart(id), ToDart(static_cast<int32_t>(action)), args_handle});
DartInvokeField(library_.value(), "_dispatchSemanticsAction",
{ToDart(id), ToDart(static_cast<int32_t>(action))});
}
void Window::BeginFrame(fxl::TimePoint frameTime) {
......
......@@ -49,9 +49,7 @@ class Window {
void UpdateSemanticsEnabled(bool enabled);
void DispatchPlatformMessage(fxl::RefPtr<PlatformMessage> message);
void DispatchPointerDataPacket(const PointerDataPacket& packet);
void DispatchSemanticsAction(int32_t id,
SemanticsAction action,
std::vector<uint8_t> args);
void DispatchSemanticsAction(int32_t id, SemanticsAction action);
void BeginFrame(fxl::TimePoint frameTime);
void CompletePlatformMessageResponse(int response_id,
......
......@@ -106,11 +106,10 @@ void RuntimeController::DispatchPointerDataPacket(
}
void RuntimeController::DispatchSemanticsAction(int32_t id,
SemanticsAction action,
std::vector<uint8_t> args) {
SemanticsAction action) {
TRACE_EVENT1("flutter", "RuntimeController::DispatchSemanticsAction", "mode",
"basic");
GetWindow()->DispatchSemanticsAction(id, action, std::move(args));
GetWindow()->DispatchSemanticsAction(id, action);
}
Window* RuntimeController::GetWindow() {
......
......@@ -42,9 +42,7 @@ class RuntimeController : public WindowClient, public IsolateClient {
void DispatchPlatformMessage(fxl::RefPtr<PlatformMessage> message);
void DispatchPointerDataPacket(const PointerDataPacket& packet);
void DispatchSemanticsAction(int32_t id,
SemanticsAction action,
std::vector<uint8_t> args);
void DispatchSemanticsAction(int32_t id, SemanticsAction action);
Dart_Port GetMainPort();
std::string GetIsolateName();
......
......@@ -554,11 +554,9 @@ void Engine::DispatchPointerDataPacket(const PointerDataPacket& packet) {
runtime_->DispatchPointerDataPacket(packet);
}
void Engine::DispatchSemanticsAction(int id,
blink::SemanticsAction action,
std::vector<uint8_t> args) {
void Engine::DispatchSemanticsAction(int id, blink::SemanticsAction action) {
if (runtime_)
runtime_->DispatchSemanticsAction(id, action, std::move(args));
runtime_->DispatchSemanticsAction(id, action);
}
void Engine::SetSemanticsEnabled(bool enabled) {
......
......@@ -72,9 +72,7 @@ class Engine : public blink::RuntimeDelegate {
void SetViewportMetrics(const blink::ViewportMetrics& metrics);
void DispatchPlatformMessage(fxl::RefPtr<blink::PlatformMessage> message);
void DispatchPointerDataPacket(const PointerDataPacket& packet);
void DispatchSemanticsAction(int id,
blink::SemanticsAction action,
std::vector<uint8_t> args);
void DispatchSemanticsAction(int id, blink::SemanticsAction action);
void SetSemanticsEnabled(bool enabled);
void ScheduleFrame(bool regenerate_layer_tree = true) override;
......
......@@ -55,13 +55,12 @@ void PlatformView::DispatchPlatformMessage(
}
void PlatformView::DispatchSemanticsAction(int32_t id,
blink::SemanticsAction action,
std::vector<uint8_t> args) {
blink::SemanticsAction action) {
blink::Threads::UI()->PostTask(
[ engine = engine_->GetWeakPtr(), id, action, args = std::move(args) ] {
[ engine = engine_->GetWeakPtr(), id, action ] {
if (engine) {
engine->DispatchSemanticsAction(
id, static_cast<blink::SemanticsAction>(action), std::move(args));
id, static_cast<blink::SemanticsAction>(action));
}
});
}
......
......@@ -41,9 +41,7 @@ class PlatformView : public std::enable_shared_from_this<PlatformView> {
virtual void Attach() = 0;
void DispatchPlatformMessage(fxl::RefPtr<blink::PlatformMessage> message);
void DispatchSemanticsAction(int32_t id,
blink::SemanticsAction action,
std::vector<uint8_t> args);
void DispatchSemanticsAction(int32_t id, blink::SemanticsAction action);
void SetSemanticsEnabled(bool enabled);
void NotifyCreated(std::unique_ptr<Surface> surface);
......
......@@ -312,16 +312,17 @@ class AccessibilityBridge extends AccessibilityNodeProvider implements BasicMess
boolean performCursorMoveAction(SemanticsObject object, int virtualViewId, Bundle arguments, boolean forward) {
final int granularity = arguments.getInt(
AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT);
final boolean extendSelection = arguments.getBoolean(
AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN);
// TODO(goderbauer): support extending selections.
// final boolean extendSelection = arguments.getBoolean(
// AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN);
switch (granularity) {
case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER: {
if (forward && object.hasAction(Action.MOVE_CURSOR_FORWARD_BY_CHARACTER)) {
mOwner.dispatchSemanticsAction(virtualViewId, Action.MOVE_CURSOR_FORWARD_BY_CHARACTER, extendSelection);
mOwner.dispatchSemanticsAction(virtualViewId, Action.MOVE_CURSOR_FORWARD_BY_CHARACTER);
return true;
}
if (!forward && object.hasAction(Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER)) {
mOwner.dispatchSemanticsAction(virtualViewId, Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER, extendSelection);
mOwner.dispatchSemanticsAction(virtualViewId, Action.MOVE_CURSOR_BACKWARD_BY_CHARACTER);
return true;
}
}
......
......@@ -682,7 +682,7 @@ public class FlutterView extends SurfaceView
ByteBuffer buffer, int position);
private static native void nativeDispatchSemanticsAction(long nativePlatformViewAndroid, int id,
int action, ByteBuffer args, int argsPosition);
int action);
private static native void nativeSetSemanticsEnabled(long nativePlatformViewAndroid,
boolean enabled);
......@@ -743,19 +743,9 @@ public class FlutterView extends SurfaceView
private TouchExplorationListener mTouchExplorationListener;
protected void dispatchSemanticsAction(int id, AccessibilityBridge.Action action) {
dispatchSemanticsAction(id, action, null);
}
protected void dispatchSemanticsAction(int id, AccessibilityBridge.Action action, Object args) {
if (!isAttached())
return;
ByteBuffer encodedArgs = null;
int position = 0;
if (args != null) {
encodedArgs = StandardMessageCodec.INSTANCE.encodeMessage(args);
position = encodedArgs.position();
}
nativeDispatchSemanticsAction(mNativeView.get(), id, action.value, encodedArgs, position);
nativeDispatchSemanticsAction(mNativeView.get(), id, action.value);
}
@Override
......
......@@ -410,24 +410,9 @@ void PlatformViewAndroid::HandlePlatformMessageEmptyResponse(int response_id) {
nullptr);
}
void PlatformViewAndroid::DispatchSemanticsAction(JNIEnv* env,
jint id,
jint action,
jobject args,
jint args_position) {
if (env->IsSameObject(args, NULL)) {
std::vector<uint8_t> args_vector;
void PlatformViewAndroid::DispatchSemanticsAction(jint id, jint action) {
PlatformView::DispatchSemanticsAction(
id, static_cast<blink::SemanticsAction>(action), args_vector);
return;
}
uint8_t* args_data = static_cast<uint8_t*>(env->GetDirectBufferAddress(args));
std::vector<uint8_t> args_vector =
std::vector<uint8_t>(args_data, args_data + args_position);
PlatformView::DispatchSemanticsAction(
id, static_cast<blink::SemanticsAction>(action), std::move(args_vector));
id, static_cast<blink::SemanticsAction>(action));
}
void PlatformViewAndroid::SetSemanticsEnabled(jboolean enabled) {
......
......@@ -79,11 +79,7 @@ class PlatformViewAndroid : public PlatformView {
void InvokePlatformMessageEmptyResponseCallback(JNIEnv* env,
jint response_id);
void DispatchSemanticsAction(JNIEnv* env,
jint id,
jint action,
jobject args,
jint args_position);
void DispatchSemanticsAction(jint id, jint action);
void SetSemanticsEnabled(jboolean enabled);
......
......@@ -236,11 +236,8 @@ static void DispatchSemanticsAction(JNIEnv* env,
jobject jcaller,
jlong platform_view,
jint id,
jint action,
jobject args,
jint args_position) {
return PLATFORM_VIEW->DispatchSemanticsAction(env, id, action, args,
args_position);
jint action) {
return PLATFORM_VIEW->DispatchSemanticsAction(id, action);
}
static void SetSemanticsEnabled(JNIEnv* env,
......@@ -416,7 +413,7 @@ bool PlatformViewAndroid::Register(JNIEnv* env) {
},
{
.name = "nativeDispatchSemanticsAction",
.signature = "(JIILjava/nio/ByteBuffer;I)V",
.signature = "(JII)V",
.fnPtr = reinterpret_cast<void*>(&shell::DispatchSemanticsAction),
},
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册