Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxychenjing
engine
提交
cd920398
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,发现更多精彩内容 >>
未验证
提交
cd920398
编写于
9月 04, 2019
作者:
M
Mouad Debbar
提交者:
GitHub
9月 04, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Handle new navigation platform messages (#11880)
上级
898480fe
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
82 addition
and
8 deletion
+82
-8
lib/web_ui/lib/src/engine/window.dart
lib/web_ui/lib/src/engine/window.dart
+15
-1
lib/web_ui/lib/src/ui/initialization.dart
lib/web_ui/lib/src/ui/initialization.dart
+1
-1
lib/web_ui/lib/src/ui/test_embedding.dart
lib/web_ui/lib/src/ui/test_embedding.dart
+0
-6
lib/web_ui/test/engine/navigation_test.dart
lib/web_ui/test/engine/navigation_test.dart
+66
-0
未找到文件。
lib/web_ui/lib/src/engine/window.dart
浏览文件 @
cd920398
...
...
@@ -77,7 +77,7 @@ class EngineWindow extends ui.Window {
/// Setting this member will automatically update [_browserHistory].
///
/// By setting this to null, the browser history will be disabled.
set
webOnlyL
ocationStrategy
(
LocationStrategy
strategy
)
{
set
l
ocationStrategy
(
LocationStrategy
strategy
)
{
_browserHistory
.
locationStrategy
=
strategy
;
}
...
...
@@ -147,6 +147,20 @@ class EngineWindow extends ui.Window {
// In widget tests we want to bypass processing of platform messages.
accessibilityAnnouncements
.
handleMessage
(
data
);
return
;
case
'flutter/navigation'
:
const
MethodCodec
codec
=
JSONMethodCodec
();
final
MethodCall
decoded
=
codec
.
decodeMethodCall
(
data
);
final
Map
<
String
,
dynamic
>
message
=
decoded
.
arguments
;
switch
(
decoded
.
method
)
{
case
'routePushed'
:
_browserHistory
.
setRouteName
(
message
[
'routeName'
]);
break
;
case
'routePopped'
:
_browserHistory
.
setRouteName
(
message
[
'previousRouteName'
]);
break
;
}
return
;
}
if
(
pluginMessageCallHandler
!=
null
)
{
...
...
lib/web_ui/lib/src/ui/initialization.dart
浏览文件 @
cd920398
...
...
@@ -9,7 +9,7 @@ Future<void> webOnlyInitializePlatform({
engine
.
AssetManager
assetManager
,
})
async
{
if
(!
debugEmulateFlutterTesterEnvironment
)
{
engine
.
window
.
webOnlyL
ocationStrategy
=
const
engine
.
HashLocationStrategy
();
engine
.
window
.
l
ocationStrategy
=
const
engine
.
HashLocationStrategy
();
}
engine
.
webOnlyInitializeEngine
();
...
...
lib/web_ui/lib/src/ui/test_embedding.dart
浏览文件 @
cd920398
...
...
@@ -24,12 +24,6 @@ Future<dynamic> ensureTestPlatformInitializedThenRunTest(
return
_testPlatformInitializedFuture
.
then
<
dynamic
>((
_
)
=>
body
());
}
/// This setter is used by [WebNavigatorObserver] to update the url to
/// reflect the [Navigator]'s current route name.
set
webOnlyRouteName
(
String
routeName
)
{
engine
.
window
.
webOnlyRouteName
=
routeName
;
}
/// Used to track when the platform is initialized. This ensures the test fonts
/// are available.
Future
<
void
>
_platformInitializedFuture
;
...
...
lib/web_ui/test/engine/navigation_test.dart
0 → 100644
浏览文件 @
cd920398
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import
'dart:typed_data'
;
import
'package:test/test.dart'
;
import
'package:ui/src/engine.dart'
as
engine
;
engine
.
TestLocationStrategy
_strategy
;
const
engine
.
MethodCodec
codec
=
engine
.
JSONMethodCodec
();
void
emptyCallback
(
ByteData
date
)
{}
void
main
(
)
{
setUp
(()
{
engine
.
window
.
locationStrategy
=
_strategy
=
engine
.
TestLocationStrategy
();
});
tearDown
(()
{
engine
.
window
.
locationStrategy
=
_strategy
=
null
;
});
test
(
'Tracks pushed and popped routes'
,
()
{
engine
.
window
.
sendPlatformMessage
(
'flutter/navigation'
,
codec
.
encodeMethodCall
(
const
engine
.
MethodCall
(
'routePushed'
,
<
String
,
dynamic
>{
'previousRouteName'
:
'/'
,
'routeName'
:
'/foo'
},
)),
emptyCallback
,
);
expect
(
_strategy
.
path
,
'/foo'
);
engine
.
window
.
sendPlatformMessage
(
'flutter/navigation'
,
codec
.
encodeMethodCall
(
const
engine
.
MethodCall
(
'routePushed'
,
<
String
,
dynamic
>{
'previousRouteName'
:
'/foo'
,
'routeName'
:
'/bar'
},
)),
emptyCallback
,
);
expect
(
_strategy
.
path
,
'/bar'
);
engine
.
window
.
sendPlatformMessage
(
'flutter/navigation'
,
codec
.
encodeMethodCall
(
const
engine
.
MethodCall
(
'routePopped'
,
<
String
,
dynamic
>{
'previousRouteName'
:
'/foo'
,
'routeName'
:
'/bar'
},
)),
emptyCallback
,
);
expect
(
_strategy
.
path
,
'/foo'
);
engine
.
window
.
sendPlatformMessage
(
'flutter/navigation'
,
codec
.
encodeMethodCall
(
const
engine
.
MethodCall
(
'routePushed'
,
<
String
,
dynamic
>{
'previousRouteName'
:
'/foo'
,
'routeName'
:
'/bar/baz'
},
)),
emptyCallback
,
);
expect
(
_strategy
.
path
,
'/bar/baz'
);
});
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录