Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
8687508a
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,发现更多精彩内容 >>
提交
8687508a
编写于
5月 25, 2020
作者:
R
rebornix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
avoid content override when updating local resource roots.
上级
7e407b54
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
60 addition
and
16 deletion
+60
-16
src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts
...ntrib/notebook/browser/view/renderers/backLayerWebView.ts
+44
-16
src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts
...s/workbench/contrib/webview/browser/baseWebviewElement.ts
+5
-0
src/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.ts
...ch/contrib/webview/browser/dynamicWebviewEditorOverlay.ts
+5
-0
src/vs/workbench/contrib/webview/browser/webview.ts
src/vs/workbench/contrib/webview/browser/webview.ts
+1
-0
src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts
...kbench/contrib/webview/electron-browser/webviewElement.ts
+5
-0
未找到文件。
src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts
浏览文件 @
8687508a
...
@@ -24,6 +24,11 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/
...
@@ -24,6 +24,11 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/
import
{
dirname
}
from
'
vs/base/common/resources
'
;
import
{
dirname
}
from
'
vs/base/common/resources
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
export
interface
WebviewIntialized
{
__vscode_notebook_message
:
boolean
;
type
:
'
initialized
'
}
export
interface
IDimensionMessage
{
export
interface
IDimensionMessage
{
__vscode_notebook_message
:
boolean
;
__vscode_notebook_message
:
boolean
;
type
:
'
dimension
'
;
type
:
'
dimension
'
;
...
@@ -107,6 +112,7 @@ export interface IScrollRequestMessage {
...
@@ -107,6 +112,7 @@ export interface IScrollRequestMessage {
export
interface
IUpdatePreloadResourceMessage
{
export
interface
IUpdatePreloadResourceMessage
{
type
:
'
preload
'
;
type
:
'
preload
'
;
resources
:
string
[];
resources
:
string
[];
source
:
string
;
}
}
interface
ICachedInset
{
interface
ICachedInset
{
...
@@ -124,7 +130,7 @@ function html(strings: TemplateStringsArray, ...values: any[]): string {
...
@@ -124,7 +130,7 @@ function html(strings: TemplateStringsArray, ...values: any[]): string {
return
str
;
return
str
;
}
}
type
IMessage
=
IDimensionMessage
|
IScrollAckMessage
|
IWheelMessage
|
IMouseEnterMessage
|
IMouseLeaveMessage
|
IBlurOutputMessage
;
type
IMessage
=
IDimensionMessage
|
IScrollAckMessage
|
IWheelMessage
|
IMouseEnterMessage
|
IMouseLeaveMessage
|
IBlurOutputMessage
|
WebviewIntialized
;
let
version
=
0
;
let
version
=
0
;
export
class
BackLayerWebView
extends
Disposable
{
export
class
BackLayerWebView
extends
Disposable
{
...
@@ -134,12 +140,12 @@ export class BackLayerWebView extends Disposable {
...
@@ -134,12 +140,12 @@ export class BackLayerWebView extends Disposable {
hiddenInsetMapping
:
Set
<
IOutput
>
=
new
Set
();
hiddenInsetMapping
:
Set
<
IOutput
>
=
new
Set
();
reversedInsetMapping
:
Map
<
string
,
IOutput
>
=
new
Map
();
reversedInsetMapping
:
Map
<
string
,
IOutput
>
=
new
Map
();
preloadsCache
:
Map
<
string
,
boolean
>
=
new
Map
();
preloadsCache
:
Map
<
string
,
boolean
>
=
new
Map
();
kernelPreloadsCache
:
Map
<
string
,
boolean
>
=
new
Map
();
localResourceRootsCache
:
URI
[]
|
undefined
=
undefined
;
localResourceRootsCache
:
URI
[]
|
undefined
=
undefined
;
rendererRootsCache
:
URI
[]
=
[];
rendererRootsCache
:
URI
[]
=
[];
kernelRootsCache
:
URI
[]
=
[];
kernelRootsCache
:
URI
[]
=
[];
private
readonly
_onMessage
=
this
.
_register
(
new
Emitter
<
any
>
());
private
readonly
_onMessage
=
this
.
_register
(
new
Emitter
<
any
>
());
public
readonly
onMessage
:
Event
<
any
>
=
this
.
_onMessage
.
event
;
public
readonly
onMessage
:
Event
<
any
>
=
this
.
_onMessage
.
event
;
private
_loaded
!
:
Promise
<
void
>
;
private
_initalized
:
Promise
<
void
>
;
private
_initalized
:
Promise
<
void
>
;
private
_disposed
=
false
;
private
_disposed
=
false
;
...
@@ -473,6 +479,11 @@ ${loaderJs}
...
@@ -473,6 +479,11 @@ ${loaderJs}
}
}
}
}
});
});
vscode.postMessage({
__vscode_notebook_message: true,
type: 'initialized'
});
}());
}());
</script>
</script>
...
@@ -584,6 +595,19 @@ ${loaderJs}
...
@@ -584,6 +595,19 @@ ${loaderJs}
allowScripts
:
true
,
allowScripts
:
true
,
localResourceRoots
:
this
.
localResourceRootsCache
localResourceRoots
:
this
.
localResourceRootsCache
},
undefined
);
},
undefined
);
let
resolveFunc
:
()
=>
void
;
this
.
_loaded
=
new
Promise
<
void
>
((
resolve
,
reject
)
=>
{
resolveFunc
=
resolve
;
});
let
dispose
=
webview
.
onMessage
((
data
:
IMessage
)
=>
{
if
(
data
.
__vscode_notebook_message
&&
data
.
type
===
'
initialized
'
)
{
resolveFunc
();
dispose
.
dispose
();
}
});
webview
.
html
=
content
;
webview
.
html
=
content
;
return
webview
;
return
webview
;
}
}
...
@@ -744,11 +768,13 @@ ${loaderJs}
...
@@ -744,11 +768,13 @@ ${loaderJs}
},
50
);
},
50
);
}
}
updateKernelPreloads
(
extensionLocations
:
URI
[],
preloads
:
URI
[])
{
async
updateKernelPreloads
(
extensionLocations
:
URI
[],
preloads
:
URI
[])
{
if
(
this
.
_disposed
)
{
if
(
this
.
_disposed
)
{
return
;
return
;
}
}
await
this
.
_loaded
;
let
resources
:
string
[]
=
[];
let
resources
:
string
[]
=
[];
preloads
=
preloads
.
map
(
preload
=>
{
preloads
=
preloads
.
map
(
preload
=>
{
if
(
this
.
environmentService
.
isExtensionDevelopment
&&
(
preload
.
scheme
===
'
http
'
||
preload
.
scheme
===
'
https
'
))
{
if
(
this
.
environmentService
.
isExtensionDevelopment
&&
(
preload
.
scheme
===
'
http
'
||
preload
.
scheme
===
'
https
'
))
{
...
@@ -758,9 +784,9 @@ ${loaderJs}
...
@@ -758,9 +784,9 @@ ${loaderJs}
});
});
preloads
.
forEach
(
e
=>
{
preloads
.
forEach
(
e
=>
{
if
(
!
this
.
kernelP
reloadsCache
.
has
(
e
.
toString
()))
{
if
(
!
this
.
p
reloadsCache
.
has
(
e
.
toString
()))
{
resources
.
push
(
e
.
toString
());
resources
.
push
(
e
.
toString
());
this
.
kernelP
reloadsCache
.
set
(
e
.
toString
(),
true
);
this
.
p
reloadsCache
.
set
(
e
.
toString
(),
true
);
}
}
});
});
...
@@ -769,14 +795,16 @@ ${loaderJs}
...
@@ -769,14 +795,16 @@ ${loaderJs}
}
}
this
.
kernelRootsCache
=
[...
extensionLocations
,
...
this
.
kernelRootsCache
];
this
.
kernelRootsCache
=
[...
extensionLocations
,
...
this
.
kernelRootsCache
];
this
.
_updatePreloads
(
resources
);
this
.
_updatePreloads
(
resources
,
'
kernel
'
);
}
}
updateRendererPreloads
(
preloads
:
ReadonlySet
<
number
>
)
{
async
updateRendererPreloads
(
preloads
:
ReadonlySet
<
number
>
)
{
if
(
this
.
_disposed
)
{
if
(
this
.
_disposed
)
{
return
;
return
;
}
}
await
this
.
_loaded
;
let
resources
:
string
[]
=
[];
let
resources
:
string
[]
=
[];
let
extensionLocations
:
URI
[]
=
[];
let
extensionLocations
:
URI
[]
=
[];
preloads
.
forEach
(
preload
=>
{
preloads
.
forEach
(
preload
=>
{
...
@@ -799,23 +827,23 @@ ${loaderJs}
...
@@ -799,23 +827,23 @@ ${loaderJs}
}
}
});
});
if
(
!
resources
.
length
)
{
return
;
}
this
.
rendererRootsCache
=
extensionLocations
;
this
.
rendererRootsCache
=
extensionLocations
;
this
.
_updatePreloads
(
resources
);
this
.
_updatePreloads
(
resources
,
'
renderer
'
);
}
}
private
_updatePreloads
(
resources
:
string
[])
{
private
_updatePreloads
(
resources
:
string
[]
,
source
:
string
)
{
const
mixedResourceRoots
=
[...(
this
.
localResourceRootsCache
||
[]),
...
this
.
rendererRootsCache
,
...
this
.
kernelRootsCache
];
const
mixedResourceRoots
=
[...(
this
.
localResourceRootsCache
||
[]),
...
this
.
rendererRootsCache
,
...
this
.
kernelRootsCache
];
this
.
webview
.
contentOptions
=
{
this
.
webview
.
localResourcesRoot
=
mixedResourceRoots
;
allowMultipleAPIAcquire
:
true
,
allowScripts
:
true
,
enableCommandUris
:
true
,
localResourceRoots
:
mixedResourceRoots
};
let
message
:
IUpdatePreloadResourceMessage
=
{
let
message
:
IUpdatePreloadResourceMessage
=
{
type
:
'
preload
'
,
type
:
'
preload
'
,
resources
:
resources
resources
:
resources
,
source
:
source
};
};
this
.
webview
.
sendMessage
(
message
);
this
.
webview
.
sendMessage
(
message
);
...
...
src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts
浏览文件 @
8687508a
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
import
{
addClass
}
from
'
vs/base/browser/dom
'
;
import
{
addClass
}
from
'
vs/base/browser/dom
'
;
import
{
IMouseWheelEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
IMouseWheelEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
Disposable
,
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Disposable
,
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
ExtensionIdentifier
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
ExtensionIdentifier
}
from
'
vs/platform/extensions/common/extensions
'
;
...
@@ -248,6 +249,10 @@ export abstract class BaseWebview<T extends HTMLElement> extends Disposable {
...
@@ -248,6 +249,10 @@ export abstract class BaseWebview<T extends HTMLElement> extends Disposable {
this
.
doUpdateContent
();
this
.
doUpdateContent
();
}
}
public
set
localResourcesRoot
(
resources
:
URI
[])
{
/** no op */
}
public
set
state
(
state
:
string
|
undefined
)
{
public
set
state
(
state
:
string
|
undefined
)
{
this
.
content
=
{
this
.
content
=
{
html
:
this
.
content
.
html
,
html
:
this
.
content
.
html
,
...
...
src/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay.ts
浏览文件 @
8687508a
...
@@ -7,6 +7,7 @@ import { Dimension } from 'vs/base/browser/dom';
...
@@ -7,6 +7,7 @@ import { Dimension } from 'vs/base/browser/dom';
import
{
IMouseWheelEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
IMouseWheelEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
memoize
}
from
'
vs/base/common/decorators
'
;
import
{
memoize
}
from
'
vs/base/common/decorators
'
;
import
{
Emitter
,
Event
}
from
'
vs/base/common/event
'
;
import
{
Emitter
,
Event
}
from
'
vs/base/common/event
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
Disposable
,
DisposableStore
,
MutableDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Disposable
,
DisposableStore
,
MutableDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IContextKey
,
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IContextKey
,
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
ExtensionIdentifier
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
ExtensionIdentifier
}
from
'
vs/platform/extensions/common/extensions
'
;
...
@@ -174,6 +175,10 @@ export class DynamicWebviewEditorOverlay extends Disposable implements WebviewOv
...
@@ -174,6 +175,10 @@ export class DynamicWebviewEditorOverlay extends Disposable implements WebviewOv
this
.
withWebview
(
webview
=>
webview
.
contentOptions
=
value
);
this
.
withWebview
(
webview
=>
webview
.
contentOptions
=
value
);
}
}
public
set
localResourcesRoot
(
resources
:
URI
[])
{
this
.
withWebview
(
webview
=>
webview
.
localResourcesRoot
=
resources
);
}
private
readonly
_onDidFocus
=
this
.
_register
(
new
Emitter
<
void
>
());
private
readonly
_onDidFocus
=
this
.
_register
(
new
Emitter
<
void
>
());
public
readonly
onDidFocus
:
Event
<
void
>
=
this
.
_onDidFocus
.
event
;
public
readonly
onDidFocus
:
Event
<
void
>
=
this
.
_onDidFocus
.
event
;
...
...
src/vs/workbench/contrib/webview/browser/webview.ts
浏览文件 @
8687508a
...
@@ -76,6 +76,7 @@ export interface WebviewExtensionDescription {
...
@@ -76,6 +76,7 @@ export interface WebviewExtensionDescription {
export
interface
Webview
extends
IDisposable
{
export
interface
Webview
extends
IDisposable
{
html
:
string
;
html
:
string
;
contentOptions
:
WebviewContentOptions
;
contentOptions
:
WebviewContentOptions
;
localResourcesRoot
:
URI
[];
extension
:
WebviewExtensionDescription
|
undefined
;
extension
:
WebviewExtensionDescription
|
undefined
;
initialScrollProgress
:
number
;
initialScrollProgress
:
number
;
state
:
string
|
undefined
;
state
:
string
|
undefined
;
...
...
src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts
浏览文件 @
8687508a
...
@@ -380,6 +380,11 @@ export class ElectronWebviewBasedWebview extends BaseWebview<WebviewTag> impleme
...
@@ -380,6 +380,11 @@ export class ElectronWebviewBasedWebview extends BaseWebview<WebviewTag> impleme
super
.
contentOptions
=
options
;
super
.
contentOptions
=
options
;
}
}
public
set
localResourcesRoot
(
resources
:
URI
[])
{
this
.
_protocolProvider
.
update
(
resources
||
[]);
super
.
localResourcesRoot
=
resources
;
}
protected
readonly
extraContentOptions
=
{};
protected
readonly
extraContentOptions
=
{};
public
set
html
(
value
:
string
)
{
public
set
html
(
value
:
string
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录