Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxychenjing
engine
提交
091b6cc5
E
engine
项目概览
sxychenjing
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
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,发现更多精彩内容 >>
未验证
提交
091b6cc5
编写于
11月 12, 2020
作者:
E
Emmanuel Garcia
提交者:
GitHub
11月 12, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix talkback in hybrid composition while using FlutterFragmentActivity (#22429)
上级
8534407d
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
16 addition
and
10 deletion
+16
-10
shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java
...r/plugin/platform/PlatformViewsAccessibilityDelegate.java
+7
-0
shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java
...d/io/flutter/plugin/platform/PlatformViewsController.java
+5
-0
shell/platform/android/io/flutter/view/AccessibilityBridge.java
...platform/android/io/flutter/view/AccessibilityBridge.java
+2
-5
shell/platform/android/test/io/flutter/view/AccessibilityBridgeTest.java
...android/test/io/flutter/view/AccessibilityBridgeTest.java
+2
-5
未找到文件。
shell/platform/android/io/flutter/plugin/platform/PlatformViewsAccessibilityDelegate.java
浏览文件 @
091b6cc5
...
@@ -15,6 +15,13 @@ public interface PlatformViewsAccessibilityDelegate {
...
@@ -15,6 +15,13 @@ public interface PlatformViewsAccessibilityDelegate {
*/
*/
View
getPlatformViewById
(
Integer
id
);
View
getPlatformViewById
(
Integer
id
);
/**
* Returns true if the platform view uses virtual displays.
*
* @hide
*/
boolean
usesVirtualDisplay
(
Integer
id
);
/**
/**
* Attaches an accessibility bridge for this platform views accessibility delegate.
* Attaches an accessibility bridge for this platform views accessibility delegate.
*
*
...
...
shell/platform/android/io/flutter/plugin/platform/PlatformViewsController.java
浏览文件 @
091b6cc5
...
@@ -584,6 +584,11 @@ public class PlatformViewsController implements PlatformViewsAccessibilityDelega
...
@@ -584,6 +584,11 @@ public class PlatformViewsController implements PlatformViewsAccessibilityDelega
return
controller
.
getView
();
return
controller
.
getView
();
}
}
@Override
public
boolean
usesVirtualDisplay
(
Integer
id
)
{
return
vdControllers
.
containsKey
(
id
);
}
private
void
lockInputConnection
(
@NonNull
VirtualDisplayController
controller
)
{
private
void
lockInputConnection
(
@NonNull
VirtualDisplayController
controller
)
{
if
(
textInputPlugin
==
null
)
{
if
(
textInputPlugin
==
null
)
{
return
;
return
;
...
...
shell/platform/android/io/flutter/view/AccessibilityBridge.java
浏览文件 @
091b6cc5
...
@@ -28,7 +28,6 @@ import androidx.annotation.RequiresApi;
...
@@ -28,7 +28,6 @@ import androidx.annotation.RequiresApi;
import
androidx.annotation.VisibleForTesting
;
import
androidx.annotation.VisibleForTesting
;
import
io.flutter.BuildConfig
;
import
io.flutter.BuildConfig
;
import
io.flutter.Log
;
import
io.flutter.Log
;
import
io.flutter.embedding.android.FlutterActivity
;
import
io.flutter.embedding.engine.systemchannels.AccessibilityChannel
;
import
io.flutter.embedding.engine.systemchannels.AccessibilityChannel
;
import
io.flutter.plugin.platform.PlatformViewsAccessibilityDelegate
;
import
io.flutter.plugin.platform.PlatformViewsAccessibilityDelegate
;
import
io.flutter.util.Predicate
;
import
io.flutter.util.Predicate
;
...
@@ -558,8 +557,7 @@ public class AccessibilityBridge extends AccessibilityNodeProvider {
...
@@ -558,8 +557,7 @@ public class AccessibilityBridge extends AccessibilityNodeProvider {
if
(
semanticsNode
.
platformViewId
!=
-
1
)
{
if
(
semanticsNode
.
platformViewId
!=
-
1
)
{
View
embeddedView
=
View
embeddedView
=
platformViewsAccessibilityDelegate
.
getPlatformViewById
(
semanticsNode
.
platformViewId
);
platformViewsAccessibilityDelegate
.
getPlatformViewById
(
semanticsNode
.
platformViewId
);
boolean
childUsesVirtualDisplay
=
!(
embeddedView
.
getContext
()
instanceof
FlutterActivity
);
if
(
platformViewsAccessibilityDelegate
.
usesVirtualDisplay
(
semanticsNode
.
platformViewId
))
{
if
(
childUsesVirtualDisplay
)
{
Rect
bounds
=
semanticsNode
.
getGlobalRect
();
Rect
bounds
=
semanticsNode
.
getGlobalRect
();
return
accessibilityViewEmbedder
.
getRootNode
(
embeddedView
,
semanticsNode
.
id
,
bounds
);
return
accessibilityViewEmbedder
.
getRootNode
(
embeddedView
,
semanticsNode
.
id
,
bounds
);
}
}
...
@@ -853,8 +851,7 @@ public class AccessibilityBridge extends AccessibilityNodeProvider {
...
@@ -853,8 +851,7 @@ public class AccessibilityBridge extends AccessibilityNodeProvider {
// mirrored.
// mirrored.
//
//
// See the case above for how virtual displays are handled.
// See the case above for how virtual displays are handled.
boolean
childUsesHybridComposition
=
embeddedView
.
getContext
()
instanceof
FlutterActivity
;
if
(!
platformViewsAccessibilityDelegate
.
usesVirtualDisplay
(
child
.
platformViewId
))
{
if
(
childUsesHybridComposition
)
{
result
.
addChild
(
embeddedView
);
result
.
addChild
(
embeddedView
);
continue
;
continue
;
}
}
...
...
shell/platform/android/test/io/flutter/view/AccessibilityBridgeTest.java
浏览文件 @
091b6cc5
...
@@ -17,7 +17,6 @@ import static org.mockito.Mockito.verify;
...
@@ -17,7 +17,6 @@ import static org.mockito.Mockito.verify;
import
static
org
.
mockito
.
Mockito
.
when
;
import
static
org
.
mockito
.
Mockito
.
when
;
import
android.annotation.TargetApi
;
import
android.annotation.TargetApi
;
import
android.app.Activity
;
import
android.content.ContentResolver
;
import
android.content.ContentResolver
;
import
android.content.Context
;
import
android.content.Context
;
import
android.graphics.Rect
;
import
android.graphics.Rect
;
...
@@ -27,7 +26,6 @@ import android.view.ViewParent;
...
@@ -27,7 +26,6 @@ import android.view.ViewParent;
import
android.view.accessibility.AccessibilityEvent
;
import
android.view.accessibility.AccessibilityEvent
;
import
android.view.accessibility.AccessibilityManager
;
import
android.view.accessibility.AccessibilityManager
;
import
android.view.accessibility.AccessibilityNodeInfo
;
import
android.view.accessibility.AccessibilityNodeInfo
;
import
io.flutter.embedding.android.FlutterActivity
;
import
io.flutter.embedding.engine.systemchannels.AccessibilityChannel
;
import
io.flutter.embedding.engine.systemchannels.AccessibilityChannel
;
import
io.flutter.plugin.platform.PlatformViewsAccessibilityDelegate
;
import
io.flutter.plugin.platform.PlatformViewsAccessibilityDelegate
;
import
java.nio.ByteBuffer
;
import
java.nio.ByteBuffer
;
...
@@ -430,8 +428,7 @@ public class AccessibilityBridgeTest {
...
@@ -430,8 +428,7 @@ public class AccessibilityBridgeTest {
View
embeddedView
=
mock
(
View
.
class
);
View
embeddedView
=
mock
(
View
.
class
);
when
(
accessibilityDelegate
.
getPlatformViewById
(
1
)).
thenReturn
(
embeddedView
);
when
(
accessibilityDelegate
.
getPlatformViewById
(
1
)).
thenReturn
(
embeddedView
);
when
(
accessibilityDelegate
.
usesVirtualDisplay
(
1
)).
thenReturn
(
false
);
when
(
embeddedView
.
getContext
()).
thenReturn
(
mock
(
FlutterActivity
.
class
));
AccessibilityNodeInfo
nodeInfo
=
mock
(
AccessibilityNodeInfo
.
class
);
AccessibilityNodeInfo
nodeInfo
=
mock
(
AccessibilityNodeInfo
.
class
);
when
(
embeddedView
.
createAccessibilityNodeInfo
()).
thenReturn
(
nodeInfo
);
when
(
embeddedView
.
createAccessibilityNodeInfo
()).
thenReturn
(
nodeInfo
);
...
@@ -464,7 +461,7 @@ public class AccessibilityBridgeTest {
...
@@ -464,7 +461,7 @@ public class AccessibilityBridgeTest {
View
embeddedView
=
mock
(
View
.
class
);
View
embeddedView
=
mock
(
View
.
class
);
when
(
accessibilityDelegate
.
getPlatformViewById
(
1
)).
thenReturn
(
embeddedView
);
when
(
accessibilityDelegate
.
getPlatformViewById
(
1
)).
thenReturn
(
embeddedView
);
when
(
embeddedView
.
getContext
()).
thenReturn
(
mock
(
Activity
.
class
)
);
when
(
accessibilityDelegate
.
usesVirtualDisplay
(
1
)).
thenReturn
(
true
);
accessibilityBridge
.
createAccessibilityNodeInfo
(
0
);
accessibilityBridge
.
createAccessibilityNodeInfo
(
0
);
verify
(
accessibilityViewEmbedder
).
getRootNode
(
eq
(
embeddedView
),
eq
(
0
),
any
(
Rect
.
class
));
verify
(
accessibilityViewEmbedder
).
getRootNode
(
eq
(
embeddedView
),
eq
(
0
),
any
(
Rect
.
class
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录