Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_43355755
engine
提交
523c8c88
E
engine
项目概览
weixin_43355755
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
523c8c88
编写于
1月 25, 2021
作者:
A
Alexander Brusher
提交者:
GitHub
1月 25, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Adds a mechanism for announce events to be forwarded to a11y. (#23499)
上级
2707c21c
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
57 addition
and
0 deletion
+57
-0
shell/platform/fuchsia/flutter/BUILD.gn
shell/platform/fuchsia/flutter/BUILD.gn
+1
-0
shell/platform/fuchsia/flutter/accessibility_bridge.cc
shell/platform/fuchsia/flutter/accessibility_bridge.cc
+9
-0
shell/platform/fuchsia/flutter/accessibility_bridge.h
shell/platform/fuchsia/flutter/accessibility_bridge.h
+3
-0
shell/platform/fuchsia/flutter/accessibility_bridge_unittest.cc
...platform/fuchsia/flutter/accessibility_bridge_unittest.cc
+10
-0
shell/platform/fuchsia/flutter/flutter_runner_fakes.h
shell/platform/fuchsia/flutter/flutter_runner_fakes.h
+13
-0
shell/platform/fuchsia/flutter/platform_view.cc
shell/platform/fuchsia/flutter/platform_view.cc
+21
-0
未找到文件。
shell/platform/fuchsia/flutter/BUILD.gn
浏览文件 @
523c8c88
...
...
@@ -111,6 +111,7 @@ template("runner_sources") {
"//flutter/lib/ui",
"//flutter/runtime",
"//flutter/shell/common",
"//flutter/shell/platform/common/cpp/client_wrapper:client_wrapper",
]
flutter_deps = [
":fuchsia_gpu_configuration",
...
...
shell/platform/fuchsia/flutter/accessibility_bridge.cc
浏览文件 @
523c8c88
...
...
@@ -431,6 +431,15 @@ fuchsia::accessibility::semantics::Node AccessibilityBridge::GetRootNodeUpdate(
return
root_fuchsia_node
;
}
void
AccessibilityBridge
::
RequestAnnounce
(
const
std
::
string
message
)
{
fuchsia
::
accessibility
::
semantics
::
SemanticEvent
semantic_event
;
fuchsia
::
accessibility
::
semantics
::
AnnounceEvent
announce_event
;
announce_event
.
set_message
(
message
);
semantic_event
.
set_announce
(
std
::
move
(
announce_event
));
tree_ptr_
->
SendSemanticEvent
(
std
::
move
(
semantic_event
),
[]()
{});
}
void
AccessibilityBridge
::
UpdateScreenRects
()
{
std
::
unordered_set
<
int32_t
>
visited_nodes
;
UpdateScreenRects
(
kRootNodeId
,
SkM44
{},
&
visited_nodes
);
...
...
shell/platform/fuchsia/flutter/accessibility_bridge.h
浏览文件 @
523c8c88
...
...
@@ -85,6 +85,9 @@ class AccessibilityBridge
void
AddSemanticsNodeUpdate
(
const
flutter
::
SemanticsNodeUpdates
update
,
float
view_pixel_ratio
);
// Requests a message announcement from the accessibility TTS system.
void
RequestAnnounce
(
const
std
::
string
message
);
// Notifies the bridge of a 'hover move' touch exploration event.
zx_status_t
OnHoverMove
(
double
x
,
double
y
);
...
...
shell/platform/fuchsia/flutter/accessibility_bridge_unittest.cc
浏览文件 @
523c8c88
...
...
@@ -103,6 +103,16 @@ TEST_F(AccessibilityBridgeTest, EnableDisable) {
EXPECT_TRUE
(
accessibility_delegate_
.
enabled
());
}
TEST_F
(
AccessibilityBridgeTest
,
RequestAnnounce
)
{
accessibility_bridge_
->
RequestAnnounce
(
"message"
);
RunLoopUntilIdle
();
auto
&
last_events
=
semantics_manager_
.
GetLastEvents
();
ASSERT_EQ
(
last_events
.
size
(),
1u
);
ASSERT_TRUE
(
last_events
[
0
].
is_announce
());
EXPECT_EQ
(
last_events
[
0
].
announce
().
message
(),
"message"
);
}
TEST_F
(
AccessibilityBridgeTest
,
UpdatesNodeRoles
)
{
flutter
::
SemanticsNodeUpdates
updates
;
...
...
shell/platform/fuchsia/flutter/flutter_runner_fakes.h
浏览文件 @
523c8c88
...
...
@@ -90,6 +90,18 @@ class MockSemanticsManager
commit_count_
++
;
}
void
SendSemanticEvent
(
fuchsia
::
accessibility
::
semantics
::
SemanticEvent
semantic_event
,
SendSemanticEventCallback
callback
)
override
{
last_events_
.
emplace_back
(
std
::
move
(
semantic_event
));
callback
();
}
std
::
vector
<
fuchsia
::
accessibility
::
semantics
::
SemanticEvent
>&
GetLastEvents
()
{
return
last_events_
;
}
private:
bool
has_view_ref_
=
false
;
fidl
::
BindingSet
<
SemanticsManager
>
bindings_
;
...
...
@@ -102,6 +114,7 @@ class MockSemanticsManager
bool
delete_overflowed_
;
std
::
vector
<
uint32_t
>
last_deleted_node_ids_
;
int
commit_count_
;
std
::
vector
<
fuchsia
::
accessibility
::
semantics
::
SemanticEvent
>
last_events_
;
};
}
// namespace flutter_runner_test
...
...
shell/platform/fuchsia/flutter/platform_view.cc
浏览文件 @
523c8c88
...
...
@@ -15,6 +15,8 @@
#include "flutter/fml/logging.h"
#include "flutter/lib/ui/window/pointer_data.h"
#include "flutter/lib/ui/window/window.h"
#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/encodable_value.h"
#include "flutter/shell/platform/common/cpp/client_wrapper/include/flutter/standard_message_codec.h"
#include "third_party/rapidjson/include/rapidjson/document.h"
#include "third_party/rapidjson/include/rapidjson/stringbuffer.h"
#include "third_party/rapidjson/include/rapidjson/writer.h"
...
...
@@ -658,6 +660,25 @@ void PlatformView::UpdateSemantics(
void
PlatformView
::
HandleAccessibilityChannelPlatformMessage
(
fml
::
RefPtr
<
flutter
::
PlatformMessage
>
message
)
{
FML_DCHECK
(
message
->
channel
()
==
kAccessibilityChannel
);
const
flutter
::
StandardMessageCodec
&
standard_message_codec
=
flutter
::
StandardMessageCodec
::
GetInstance
(
nullptr
);
std
::
unique_ptr
<
flutter
::
EncodableValue
>
decoded
=
standard_message_codec
.
DecodeMessage
(
message
->
data
());
flutter
::
EncodableMap
map
=
std
::
get
<
flutter
::
EncodableMap
>
(
*
decoded
);
std
::
string
type
=
std
::
get
<
std
::
string
>
(
map
.
at
(
flutter
::
EncodableValue
(
"type"
)));
if
(
type
==
"announce"
)
{
flutter
::
EncodableMap
data_map
=
std
::
get
<
flutter
::
EncodableMap
>
(
map
.
at
(
flutter
::
EncodableValue
(
"data"
)));
std
::
string
text
=
std
::
get
<
std
::
string
>
(
data_map
.
at
(
flutter
::
EncodableValue
(
"message"
)));
accessibility_bridge_
->
RequestAnnounce
(
text
);
}
message
->
response
()
->
CompleteEmpty
();
}
// Channel handler for kFlutterPlatformChannel
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录