Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
e30008eb
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e30008eb
编写于
2月 28, 2019
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Leave determining which webviews a reviver supports entirely up to that reviver
Don't key off of `viewType` first, let the reviver decide
上级
f62d1f25
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
15 addition
and
25 deletion
+15
-25
src/vs/workbench/api/electron-browser/mainThreadWebview.ts
src/vs/workbench/api/electron-browser/mainThreadWebview.ts
+2
-2
src/vs/workbench/contrib/webview/electron-browser/webviewEditorService.ts
.../contrib/webview/electron-browser/webviewEditorService.ts
+13
-23
未找到文件。
src/vs/workbench/api/electron-browser/mainThreadWebview.ts
浏览文件 @
e30008eb
...
@@ -62,7 +62,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv
...
@@ -62,7 +62,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv
_editorService
.
onDidActiveEditorChange
(
this
.
onActiveEditorChanged
,
this
,
this
.
_toDispose
);
_editorService
.
onDidActiveEditorChange
(
this
.
onActiveEditorChanged
,
this
,
this
.
_toDispose
);
_editorService
.
onDidVisibleEditorsChange
(
this
.
onVisibleEditorsChanged
,
this
,
this
.
_toDispose
);
_editorService
.
onDidVisibleEditorsChange
(
this
.
onVisibleEditorsChanged
,
this
,
this
.
_toDispose
);
this
.
_toDispose
.
push
(
_webviewService
.
registerReviver
(
MainThreadWebviews
.
viewType
,
this
));
this
.
_toDispose
.
push
(
_webviewService
.
registerReviver
(
this
));
lifecycleService
.
onBeforeShutdown
(
e
=>
{
lifecycleService
.
onBeforeShutdown
(
e
=>
{
e
.
veto
(
this
.
_onBeforeShutdown
());
e
.
veto
(
this
.
_onBeforeShutdown
());
...
@@ -242,7 +242,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv
...
@@ -242,7 +242,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv
}
}
public
canRevive
(
webview
:
WebviewEditorInput
):
boolean
{
public
canRevive
(
webview
:
WebviewEditorInput
):
boolean
{
if
(
webview
.
isDisposed
()
||
!
webview
.
state
)
{
if
(
webview
.
isDisposed
()
||
!
webview
.
state
||
webview
.
viewType
!==
MainThreadWebviews
.
viewType
)
{
return
false
;
return
false
;
}
}
...
...
src/vs/workbench/contrib/webview/electron-browser/webviewEditorService.ts
浏览文件 @
e30008eb
...
@@ -49,7 +49,6 @@ export interface IWebviewEditorService {
...
@@ -49,7 +49,6 @@ export interface IWebviewEditorService {
):
void
;
):
void
;
registerReviver
(
registerReviver
(
viewType
:
string
,
reviver
:
WebviewReviver
reviver
:
WebviewReviver
):
IDisposable
;
):
IDisposable
;
...
@@ -90,7 +89,7 @@ export function areWebviewInputOptionsEqual(a: WebviewInputOptions, b: WebviewIn
...
@@ -90,7 +89,7 @@ export function areWebviewInputOptionsEqual(a: WebviewInputOptions, b: WebviewIn
export
class
WebviewEditorService
implements
IWebviewEditorService
{
export
class
WebviewEditorService
implements
IWebviewEditorService
{
_serviceBrand
:
any
;
_serviceBrand
:
any
;
private
readonly
_revivers
=
new
Map
<
string
,
WebviewReviver
[]
>
();
private
readonly
_revivers
=
new
Set
<
WebviewReviver
>
();
private
_awaitingRevival
:
{
input
:
WebviewEditorInput
,
resolve
:
(
x
:
any
)
=>
void
}[]
=
[];
private
_awaitingRevival
:
{
input
:
WebviewEditorInput
,
resolve
:
(
x
:
any
)
=>
void
}[]
=
[];
constructor
(
constructor
(
...
@@ -135,7 +134,7 @@ export class WebviewEditorService implements IWebviewEditorService {
...
@@ -135,7 +134,7 @@ export class WebviewEditorService implements IWebviewEditorService {
):
WebviewEditorInput
{
):
WebviewEditorInput
{
const
webviewInput
=
this
.
_instantiationService
.
createInstance
(
WebviewEditorInput
,
viewType
,
id
,
title
,
options
,
state
,
{},
extensionLocation
,
{
const
webviewInput
=
this
.
_instantiationService
.
createInstance
(
WebviewEditorInput
,
viewType
,
id
,
title
,
options
,
state
,
{},
extensionLocation
,
{
canRevive
:
(
_webview
)
=>
{
canRevive
:
(
_webview
)
=>
{
return
true
;
return
_webview
===
webviewInput
;
},
},
reviveWebview
:
(
webview
:
WebviewEditorInput
):
Promise
<
void
>
=>
{
reviveWebview
:
(
webview
:
WebviewEditorInput
):
Promise
<
void
>
=>
{
return
this
.
tryRevive
(
webview
).
then
(
didRevive
=>
{
return
this
.
tryRevive
(
webview
).
then
(
didRevive
=>
{
...
@@ -156,47 +155,38 @@ export class WebviewEditorService implements IWebviewEditorService {
...
@@ -156,47 +155,38 @@ export class WebviewEditorService implements IWebviewEditorService {
}
}
registerReviver
(
registerReviver
(
viewType
:
string
,
reviver
:
WebviewReviver
reviver
:
WebviewReviver
):
IDisposable
{
):
IDisposable
{
const
currentRevivers
=
this
.
_revivers
.
get
(
viewType
);
this
.
_revivers
.
add
(
reviver
);
if
(
currentRevivers
)
{
currentRevivers
.
push
(
reviver
);
}
else
{
this
.
_revivers
.
set
(
viewType
,
[
reviver
]);
}
// Resolve any pending views
// Resolve any pending views
const
toRevive
=
this
.
_awaitingRevival
.
filter
(
x
=>
x
.
input
.
viewType
===
viewType
);
const
toRevive
=
this
.
_awaitingRevival
.
filter
(
x
=>
reviver
.
canRevive
(
x
.
input
)
);
this
.
_awaitingRevival
=
this
.
_awaitingRevival
.
filter
(
x
=>
x
.
input
.
viewType
!==
viewType
);
this
.
_awaitingRevival
=
this
.
_awaitingRevival
.
filter
(
x
=>
!
reviver
.
canRevive
(
x
.
input
)
);
for
(
const
input
of
toRevive
)
{
for
(
const
input
of
toRevive
)
{
reviver
.
reviveWebview
(
input
.
input
).
then
(()
=>
input
.
resolve
(
undefined
));
reviver
.
reviveWebview
(
input
.
input
).
then
(()
=>
input
.
resolve
(
undefined
));
}
}
return
toDisposable
(()
=>
{
return
toDisposable
(()
=>
{
this
.
_revivers
.
delete
(
viewType
);
this
.
_revivers
.
delete
(
reviver
);
});
});
}
}
canRevive
(
canRevive
(
webview
:
WebviewEditorInput
webview
:
WebviewEditorInput
):
boolean
{
):
boolean
{
const
viewType
=
webview
.
viewType
;
for
(
const
reviver
of
this
.
_revivers
)
{
const
revivers
=
this
.
_revivers
.
get
(
viewType
);
if
(
reviver
.
canRevive
(
webview
))
{
return
!!
revivers
&&
revivers
.
some
(
reviver
=>
reviver
.
canRevive
(
webview
));
return
true
;
}
}
return
false
;
}
}
private
async
tryRevive
(
private
async
tryRevive
(
webview
:
WebviewEditorInput
webview
:
WebviewEditorInput
):
Promise
<
boolean
>
{
):
Promise
<
boolean
>
{
const
revivers
=
this
.
_revivers
.
get
(
webview
.
viewType
);
for
(
const
reviver
of
this
.
_revivers
)
{
if
(
!
revivers
)
{
return
false
;
}
for
(
const
reviver
of
revivers
)
{
if
(
reviver
.
canRevive
(
webview
))
{
if
(
reviver
.
canRevive
(
webview
))
{
await
reviver
.
reviveWebview
(
webview
);
await
reviver
.
reviveWebview
(
webview
);
return
true
;
return
true
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录