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