Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
630665f0
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,发现更多精彩内容 >>
未验证
提交
630665f0
编写于
7月 29, 2020
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Have a separate call for extension scanning (outside of remote agent environment)
上级
18587654
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
47 addition
and
17 deletion
+47
-17
src/vs/platform/remote/common/remoteAgentEnvironment.ts
src/vs/platform/remote/common/remoteAgentEnvironment.ts
+0
-2
src/vs/workbench/services/extensions/browser/extensionService.ts
...workbench/services/extensions/browser/extensionService.ts
+4
-3
src/vs/workbench/services/extensions/electron-browser/extensionService.ts
.../services/extensions/electron-browser/extensionService.ts
+7
-4
src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts
...ench/services/remote/common/abstractRemoteAgentService.ts
+9
-1
src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts
...h/services/remote/common/remoteAgentEnvironmentChannel.ts
+22
-7
src/vs/workbench/services/remote/common/remoteAgentService.ts
...vs/workbench/services/remote/common/remoteAgentService.ts
+5
-0
未找到文件。
src/vs/platform/remote/common/remoteAgentEnvironment.ts
浏览文件 @
630665f0
...
...
@@ -5,7 +5,6 @@
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
OperatingSystem
}
from
'
vs/base/common/platform
'
;
import
{
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
export
interface
IRemoteAgentEnvironment
{
pid
:
number
;
...
...
@@ -18,7 +17,6 @@ export interface IRemoteAgentEnvironment {
globalStorageHome
:
URI
;
workspaceStorageHome
:
URI
;
userHome
:
URI
;
extensions
:
IExtensionDescription
[];
os
:
OperatingSystem
;
}
...
...
src/vs/workbench/services/extensions/browser/extensionService.ts
浏览文件 @
630665f0
...
...
@@ -111,12 +111,13 @@ export class ExtensionService extends AbstractExtensionService implements IExten
protected
async
_scanAndHandleExtensions
():
Promise
<
void
>
{
// fetch the remote environment
let
[
localExtensions
,
remoteEnv
]
=
await
Promise
.
all
([
let
[
localExtensions
,
remoteEnv
,
remoteExtensions
]
=
await
Promise
.
all
([
this
.
_webExtensionsScannerService
.
scanExtensions
().
then
(
extensions
=>
extensions
.
map
(
parseScannedExtension
)),
this
.
_remoteAgentService
.
getEnvironment
()
this
.
_remoteAgentService
.
getEnvironment
(),
this
.
_remoteAgentService
.
scanExtensions
()
]);
localExtensions
=
this
.
_checkEnabledAndProposedAPI
(
localExtensions
);
let
remoteExtensions
=
remoteEnv
?
this
.
_checkEnabledAndProposedAPI
(
remoteEnv
.
extensions
)
:
[]
;
remoteExtensions
=
this
.
_checkEnabledAndProposedAPI
(
remoteExtensions
)
;
const
remoteAgentConnection
=
this
.
_remoteAgentService
.
getConnection
();
this
.
_runningLocation
=
_determineRunningLocation
(
this
.
_productService
,
this
.
_configService
,
localExtensions
,
remoteExtensions
,
Boolean
(
remoteEnv
&&
remoteAgentConnection
));
...
...
src/vs/workbench/services/extensions/electron-browser/extensionService.ts
浏览文件 @
630665f0
...
...
@@ -500,6 +500,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten
const
localExtensions
=
this
.
_checkEnabledAndProposedAPI
(
await
this
.
_scanAllLocalExtensions
());
let
remoteEnv
:
IRemoteAgentEnvironment
|
null
=
null
;
let
remoteExtensions
:
IExtensionDescription
[]
=
[];
if
(
remoteAuthority
)
{
let
resolverResult
:
ResolverResult
;
...
...
@@ -538,7 +539,11 @@ export class ExtensionService extends AbstractExtensionService implements IExten
}
// fetch the remote environment
remoteEnv
=
await
this
.
_remoteAgentService
.
getEnvironment
();
[
remoteEnv
,
remoteExtensions
]
=
await
Promise
.
all
([
this
.
_remoteAgentService
.
getEnvironment
(),
this
.
_remoteAgentService
.
scanExtensions
()
]);
remoteExtensions
=
this
.
_checkEnabledAndProposedAPI
(
remoteExtensions
);
if
(
!
remoteEnv
)
{
this
.
_notificationService
.
notify
({
severity
:
Severity
.
Error
,
message
:
nls
.
localize
(
'
getEnvironmentFailure
'
,
"
Could not fetch remote environment
"
)
});
...
...
@@ -551,9 +556,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten
await
this
.
_startLocalExtensionHost
(
localExtensions
,
remoteAuthority
,
remoteEnv
);
}
private
async
_startLocalExtensionHost
(
localExtensions
:
IExtensionDescription
[],
remoteAuthority
:
string
|
undefined
=
undefined
,
remoteEnv
:
IRemoteAgentEnvironment
|
null
=
null
):
Promise
<
void
>
{
let
remoteExtensions
=
remoteEnv
?
this
.
_checkEnabledAndProposedAPI
(
remoteEnv
.
extensions
)
:
[];
private
async
_startLocalExtensionHost
(
localExtensions
:
IExtensionDescription
[],
remoteAuthority
:
string
|
undefined
=
undefined
,
remoteEnv
:
IRemoteAgentEnvironment
|
null
=
null
,
remoteExtensions
:
IExtensionDescription
[]
=
[]):
Promise
<
void
>
{
this
.
_runningLocation
=
_determineRunningLocation
(
this
.
_productService
,
this
.
_configurationService
,
localExtensions
,
remoteExtensions
,
Boolean
(
remoteAuthority
),
this
.
_enableLocalWebWorker
);
...
...
src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts
浏览文件 @
630665f0
...
...
@@ -22,6 +22,7 @@ import { Emitter } from 'vs/base/common/event';
import
{
ISignService
}
from
'
vs/platform/sign/common/sign
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
import
{
ITelemetryData
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
ExtensionIdentifier
,
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
export
abstract
class
AbstractRemoteAgentService
extends
Disposable
implements
IRemoteAgentService
{
...
...
@@ -50,7 +51,7 @@ export abstract class AbstractRemoteAgentService extends Disposable implements I
if
(
!
this
.
_environment
)
{
this
.
_environment
=
this
.
_withChannel
(
async
(
channel
,
connection
)
=>
{
const
env
=
await
RemoteExtensionEnvironmentChannelClient
.
getEnvironmentData
(
channel
,
connection
.
remoteAuthority
,
this
.
_environmentService
.
extensionDevelopmentLocationURI
);
const
env
=
await
RemoteExtensionEnvironmentChannelClient
.
getEnvironmentData
(
channel
,
connection
.
remoteAuthority
);
this
.
_remoteAuthorityResolverService
.
_setAuthorityConnectionToken
(
connection
.
remoteAuthority
,
env
.
connectionToken
);
return
env
;
},
...
...
@@ -60,6 +61,13 @@ export abstract class AbstractRemoteAgentService extends Disposable implements I
return
this
.
_environment
;
}
scanExtensions
(
skipExtensions
:
ExtensionIdentifier
[]
=
[]):
Promise
<
IExtensionDescription
[]
>
{
return
this
.
_withChannel
(
(
channel
,
connection
)
=>
RemoteExtensionEnvironmentChannelClient
.
scanExtensions
(
channel
,
connection
.
remoteAuthority
,
this
.
_environmentService
.
extensionDevelopmentLocationURI
,
skipExtensions
),
[]
).
then
(
undefined
,
()
=>
[]);
}
getDiagnosticInfo
(
options
:
IDiagnosticInfoOptions
):
Promise
<
IDiagnosticInfo
|
undefined
>
{
return
this
.
_withChannel
(
channel
=>
RemoteExtensionEnvironmentChannelClient
.
getDiagnosticInfo
(
channel
,
options
),
...
...
src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel.ts
浏览文件 @
630665f0
...
...
@@ -6,15 +6,20 @@
import
*
as
platform
from
'
vs/base/common/platform
'
;
import
{
URI
,
UriComponents
}
from
'
vs/base/common/uri
'
;
import
{
IChannel
}
from
'
vs/base/parts/ipc/common/ipc
'
;
import
{
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
IExtensionDescription
,
ExtensionIdentifier
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
IRemoteAgentEnvironment
}
from
'
vs/platform/remote/common/remoteAgentEnvironment
'
;
import
{
IDiagnosticInfoOptions
,
IDiagnosticInfo
}
from
'
vs/platform/diagnostics/common/diagnostics
'
;
import
{
ITelemetryData
}
from
'
vs/platform/telemetry/common/telemetry
'
;
export
interface
IGetEnvironmentDataArguments
{
remoteAuthority
:
string
;
}
export
interface
IScanExtensionsArguments
{
language
:
string
;
remoteAuthority
:
string
;
extensionDevelopmentPath
:
UriComponents
[]
|
undefined
;
skipExtensions
:
ExtensionIdentifier
[];
}
export
interface
IRemoteAgentEnvironmentDTO
{
...
...
@@ -28,17 +33,14 @@ export interface IRemoteAgentEnvironmentDTO {
globalStorageHome
:
UriComponents
;
workspaceStorageHome
:
UriComponents
;
userHome
:
UriComponents
;
extensions
:
IExtensionDescription
[];
os
:
platform
.
OperatingSystem
;
}
export
class
RemoteExtensionEnvironmentChannelClient
{
static
async
getEnvironmentData
(
channel
:
IChannel
,
remoteAuthority
:
string
,
extensionDevelopmentPath
?:
URI
[]
):
Promise
<
IRemoteAgentEnvironment
>
{
static
async
getEnvironmentData
(
channel
:
IChannel
,
remoteAuthority
:
string
):
Promise
<
IRemoteAgentEnvironment
>
{
const
args
:
IGetEnvironmentDataArguments
=
{
language
:
platform
.
language
,
remoteAuthority
,
extensionDevelopmentPath
remoteAuthority
};
const
data
=
await
channel
.
call
<
IRemoteAgentEnvironmentDTO
>
(
'
getEnvironmentData
'
,
args
);
...
...
@@ -54,11 +56,24 @@ export class RemoteExtensionEnvironmentChannelClient {
globalStorageHome
:
URI
.
revive
(
data
.
globalStorageHome
),
workspaceStorageHome
:
URI
.
revive
(
data
.
workspaceStorageHome
),
userHome
:
URI
.
revive
(
data
.
userHome
),
extensions
:
data
.
extensions
.
map
(
ext
=>
{
(
<
any
>
ext
).
extensionLocation
=
URI
.
revive
(
ext
.
extensionLocation
);
return
ext
;
}),
os
:
data
.
os
};
}
static
async
scanExtensions
(
channel
:
IChannel
,
remoteAuthority
:
string
,
extensionDevelopmentPath
:
URI
[]
|
undefined
,
skipExtensions
:
ExtensionIdentifier
[]):
Promise
<
IExtensionDescription
[]
>
{
const
args
:
IScanExtensionsArguments
=
{
language
:
platform
.
language
,
remoteAuthority
,
extensionDevelopmentPath
,
skipExtensions
};
const
extensions
=
await
channel
.
call
<
IExtensionDescription
[]
>
(
'
scanExtensions
'
,
args
);
extensions
.
forEach
(
ext
=>
{
(
<
any
>
ext
).
extensionLocation
=
URI
.
revive
(
ext
.
extensionLocation
);
});
return
extensions
;
}
static
getDiagnosticInfo
(
channel
:
IChannel
,
options
:
IDiagnosticInfoOptions
):
Promise
<
IDiagnosticInfo
>
{
return
channel
.
call
<
IDiagnosticInfo
>
(
'
getDiagnosticInfo
'
,
options
);
}
...
...
src/vs/workbench/services/remote/common/remoteAgentService.ts
浏览文件 @
630665f0
...
...
@@ -10,6 +10,7 @@ import { IDiagnosticInfoOptions, IDiagnosticInfo } from 'vs/platform/diagnostics
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
PersistenConnectionEvent
as
PersistentConnectionEvent
,
ISocketFactory
}
from
'
vs/platform/remote/common/remoteAgentConnection
'
;
import
{
ITelemetryData
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
ExtensionIdentifier
,
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
export
const
RemoteExtensionLogFileName
=
'
remoteagent
'
;
...
...
@@ -29,6 +30,10 @@ export interface IRemoteAgentService {
* Get the remote environment. Can return an error.
*/
getRawEnvironment
():
Promise
<
IRemoteAgentEnvironment
|
null
>
;
/**
* Scan remote extensions.
*/
scanExtensions
(
skipExtensions
?:
ExtensionIdentifier
[]):
Promise
<
IExtensionDescription
[]
>
;
getDiagnosticInfo
(
options
:
IDiagnosticInfoOptions
):
Promise
<
IDiagnosticInfo
|
undefined
>
;
disableTelemetry
():
Promise
<
void
>
;
logTelemetry
(
eventName
:
string
,
data
?:
ITelemetryData
):
Promise
<
void
>
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录