Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
30159785
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
30159785
编写于
6月 11, 2020
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add connectionData to IInitData.remote
上级
767b4ea7
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
61 addition
and
25 deletion
+61
-25
src/vs/workbench/api/common/extHost.protocol.ts
src/vs/workbench/api/common/extHost.protocol.ts
+7
-1
src/vs/workbench/services/extensions/browser/extensionService.ts
...workbench/services/extensions/browser/extensionService.ts
+14
-4
src/vs/workbench/services/extensions/browser/webWorkerExtensionHostStarter.ts
...vices/extensions/browser/webWorkerExtensionHostStarter.ts
+1
-0
src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts
...h/services/extensions/common/remoteExtensionHostClient.ts
+19
-12
src/vs/workbench/services/extensions/electron-browser/extensionHost.ts
...nch/services/extensions/electron-browser/extensionHost.ts
+1
-0
src/vs/workbench/services/extensions/electron-browser/extensionService.ts
.../services/extensions/electron-browser/extensionService.ts
+18
-7
src/vs/workbench/test/electron-browser/api/extHostSearch.test.ts
...workbench/test/electron-browser/api/extHostSearch.test.ts
+1
-1
未找到文件。
src/vs/workbench/api/common/extHost.protocol.ts
浏览文件 @
30159785
...
@@ -85,6 +85,12 @@ export interface IWorkspaceData extends IStaticWorkspaceData {
...
@@ -85,6 +85,12 @@ export interface IWorkspaceData extends IStaticWorkspaceData {
folders
:
{
uri
:
UriComponents
,
name
:
string
,
index
:
number
;
}[];
folders
:
{
uri
:
UriComponents
,
name
:
string
,
index
:
number
;
}[];
}
}
export
interface
IRemoteConnectionData
{
host
:
string
;
port
:
number
;
connectionToken
:
string
;
}
export
interface
IInitData
{
export
interface
IInitData
{
version
:
string
;
version
:
string
;
commit
?:
string
;
commit
?:
string
;
...
@@ -99,7 +105,7 @@ export interface IInitData {
...
@@ -99,7 +105,7 @@ export interface IInitData {
logsLocation
:
URI
;
logsLocation
:
URI
;
logFile
:
URI
;
logFile
:
URI
;
autoStart
:
boolean
;
autoStart
:
boolean
;
remote
:
{
isRemote
:
boolean
;
authority
:
string
|
undefined
;
};
remote
:
{
isRemote
:
boolean
;
authority
:
string
|
undefined
;
connectionData
:
IRemoteConnectionData
|
undefined
;
};
uiKind
:
UIKind
;
uiKind
:
UIKind
;
}
}
...
...
src/vs/workbench/services/extensions/browser/extensionService.ts
浏览文件 @
30159785
...
@@ -28,6 +28,7 @@ import { Schemas } from 'vs/base/common/network';
...
@@ -28,6 +28,7 @@ import { Schemas } from 'vs/base/common/network';
import
{
DisposableStore
}
from
'
vs/base/common/lifecycle
'
;
import
{
DisposableStore
}
from
'
vs/base/common/lifecycle
'
;
import
{
IStaticExtensionsService
}
from
'
vs/workbench/services/extensions/common/staticExtensions
'
;
import
{
IStaticExtensionsService
}
from
'
vs/workbench/services/extensions/common/staticExtensions
'
;
import
{
DeltaExtensionsResult
}
from
'
vs/workbench/services/extensions/common/extensionDescriptionRegistry
'
;
import
{
DeltaExtensionsResult
}
from
'
vs/workbench/services/extensions/common/extensionDescriptionRegistry
'
;
import
{
IRemoteAuthorityResolverService
}
from
'
vs/platform/remote/common/remoteAuthorityResolver
'
;
export
class
ExtensionService
extends
AbstractExtensionService
implements
IExtensionService
{
export
class
ExtensionService
extends
AbstractExtensionService
implements
IExtensionService
{
...
@@ -42,6 +43,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten
...
@@ -42,6 +43,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten
@
IWorkbenchExtensionEnablementService
extensionEnablementService
:
IWorkbenchExtensionEnablementService
,
@
IWorkbenchExtensionEnablementService
extensionEnablementService
:
IWorkbenchExtensionEnablementService
,
@
IFileService
fileService
:
IFileService
,
@
IFileService
fileService
:
IFileService
,
@
IProductService
productService
:
IProductService
,
@
IProductService
productService
:
IProductService
,
@
IRemoteAuthorityResolverService
private
readonly
_remoteAuthorityResolverService
:
IRemoteAuthorityResolverService
,
@
IRemoteAgentService
private
readonly
_remoteAgentService
:
IRemoteAgentService
,
@
IRemoteAgentService
private
readonly
_remoteAgentService
:
IRemoteAgentService
,
@
IConfigurationService
private
readonly
_configService
:
IConfigurationService
,
@
IConfigurationService
private
readonly
_configService
:
IConfigurationService
,
@
IStaticExtensionsService
private
readonly
_staticExtensions
:
IStaticExtensionsService
,
@
IStaticExtensionsService
private
readonly
_staticExtensions
:
IStaticExtensionsService
,
...
@@ -74,10 +76,18 @@ export class ExtensionService extends AbstractExtensionService implements IExten
...
@@ -74,10 +76,18 @@ export class ExtensionService extends AbstractExtensionService implements IExten
private
_createProvider
(
remoteAuthority
:
string
):
IInitDataProvider
{
private
_createProvider
(
remoteAuthority
:
string
):
IInitDataProvider
{
return
{
return
{
remoteAuthority
:
remoteAuthority
,
remoteAuthority
:
remoteAuthority
,
getInitData
:
()
=>
{
getInitData
:
async
()
=>
{
return
this
.
whenInstalledExtensionsRegistered
().
then
(()
=>
{
await
this
.
whenInstalledExtensionsRegistered
();
return
this
.
_remoteExtensionsEnvironmentData
!
;
const
resolverResult
=
await
this
.
_remoteAuthorityResolverService
.
resolveAuthority
(
remoteAuthority
);
});
const
remoteEnvironment
=
this
.
_remoteExtensionsEnvironmentData
!
;
return
{
connectionData
:
{
host
:
resolverResult
.
authority
.
host
,
port
:
resolverResult
.
authority
.
port
,
connectionToken
:
remoteEnvironment
.
connectionToken
},
remoteEnvironment
:
remoteEnvironment
};
}
}
};
};
}
}
...
...
src/vs/workbench/services/extensions/browser/webWorkerExtensionHostStarter.ts
浏览文件 @
30159785
...
@@ -160,6 +160,7 @@ export class WebWorkerExtensionHostStarter implements IExtensionHostStarter {
...
@@ -160,6 +160,7 @@ export class WebWorkerExtensionHostStarter implements IExtensionHostStarter {
autoStart
:
this
.
_autoStart
,
autoStart
:
this
.
_autoStart
,
remote
:
{
remote
:
{
authority
:
this
.
_environmentService
.
configuration
.
remoteAuthority
,
authority
:
this
.
_environmentService
.
configuration
.
remoteAuthority
,
connectionData
:
undefined
,
isRemote
:
false
isRemote
:
false
},
},
uiKind
:
platform
.
isWeb
?
UIKind
.
Web
:
UIKind
.
Desktop
uiKind
:
platform
.
isWeb
?
UIKind
.
Web
:
UIKind
.
Desktop
...
...
src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts
浏览文件 @
30159785
...
@@ -11,7 +11,7 @@ import { ILogService } from 'vs/platform/log/common/log';
...
@@ -11,7 +11,7 @@ import { ILogService } from 'vs/platform/log/common/log';
import
{
connectRemoteAgentExtensionHost
,
IRemoteExtensionHostStartParams
,
IConnectionOptions
,
ISocketFactory
}
from
'
vs/platform/remote/common/remoteAgentConnection
'
;
import
{
connectRemoteAgentExtensionHost
,
IRemoteExtensionHostStartParams
,
IConnectionOptions
,
ISocketFactory
}
from
'
vs/platform/remote/common/remoteAgentConnection
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IWorkspaceContextService
,
WorkbenchState
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceContextService
,
WorkbenchState
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IInitData
,
UIKind
}
from
'
vs/workbench/api/common/extHost.protocol
'
;
import
{
IInitData
,
UIKind
,
IRemoteConnectionData
}
from
'
vs/workbench/api/common/extHost.protocol
'
;
import
{
MessageType
,
createMessageOfType
,
isMessageOfType
}
from
'
vs/workbench/services/extensions/common/extensionHostProtocol
'
;
import
{
MessageType
,
createMessageOfType
,
isMessageOfType
}
from
'
vs/workbench/services/extensions/common/extensionHostProtocol
'
;
import
{
IExtensionHostStarter
,
ExtensionHostLogFileName
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
IExtensionHostStarter
,
ExtensionHostLogFileName
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
parseExtensionDevOptions
}
from
'
vs/workbench/services/extensions/common/extensionDevOptions
'
;
import
{
parseExtensionDevOptions
}
from
'
vs/workbench/services/extensions/common/extensionDevOptions
'
;
...
@@ -33,9 +33,14 @@ import { Registry } from 'vs/platform/registry/common/platform';
...
@@ -33,9 +33,14 @@ import { Registry } from 'vs/platform/registry/common/platform';
import
{
IOutputChannelRegistry
,
Extensions
}
from
'
vs/workbench/services/output/common/output
'
;
import
{
IOutputChannelRegistry
,
Extensions
}
from
'
vs/workbench/services/output/common/output
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
localize
}
from
'
vs/nls
'
;
export
interface
IRemoteInitData
{
readonly
connectionData
:
IRemoteConnectionData
;
readonly
remoteEnvironment
:
IRemoteAgentEnvironment
;
}
export
interface
IInitDataProvider
{
export
interface
IInitDataProvider
{
readonly
remoteAuthority
:
string
;
readonly
remoteAuthority
:
string
;
getInitData
():
Promise
<
IRemote
AgentEnvironment
>
;
getInitData
():
Promise
<
IRemote
InitData
>
;
}
}
export
class
RemoteExtensionHostClient
extends
Disposable
implements
IExtensionHostStarter
{
export
class
RemoteExtensionHostClient
extends
Disposable
implements
IExtensionHostStarter
{
...
@@ -190,26 +195,27 @@ export class RemoteExtensionHostClient extends Disposable implements IExtensionH
...
@@ -190,26 +195,27 @@ export class RemoteExtensionHostClient extends Disposable implements IExtensionH
}
}
private
_createExtHostInitData
(
isExtensionDevelopmentDebug
:
boolean
):
Promise
<
IInitData
>
{
private
_createExtHostInitData
(
isExtensionDevelopmentDebug
:
boolean
):
Promise
<
IInitData
>
{
return
Promise
.
all
([
this
.
_allExtensions
,
this
.
_telemetryService
.
getTelemetryInfo
(),
this
.
_initDataProvider
.
getInitData
()]).
then
(([
allExtensions
,
telemetryInfo
,
remote
ExtensionHos
tData
])
=>
{
return
Promise
.
all
([
this
.
_allExtensions
,
this
.
_telemetryService
.
getTelemetryInfo
(),
this
.
_initDataProvider
.
getInitData
()]).
then
(([
allExtensions
,
telemetryInfo
,
remote
Ini
tData
])
=>
{
// Collect all identifiers for extension ids which can be considered "resolved"
// Collect all identifiers for extension ids which can be considered "resolved"
const
resolvedExtensions
=
allExtensions
.
filter
(
extension
=>
!
extension
.
main
).
map
(
extension
=>
extension
.
identifier
);
const
resolvedExtensions
=
allExtensions
.
filter
(
extension
=>
!
extension
.
main
).
map
(
extension
=>
extension
.
identifier
);
const
hostExtensions
=
allExtensions
.
filter
(
extension
=>
extension
.
main
&&
extension
.
api
===
'
none
'
).
map
(
extension
=>
extension
.
identifier
);
const
hostExtensions
=
allExtensions
.
filter
(
extension
=>
extension
.
main
&&
extension
.
api
===
'
none
'
).
map
(
extension
=>
extension
.
identifier
);
const
workspace
=
this
.
_contextService
.
getWorkspace
();
const
workspace
=
this
.
_contextService
.
getWorkspace
();
const
remoteEnv
=
remoteInitData
.
remoteEnvironment
;
const
r
:
IInitData
=
{
const
r
:
IInitData
=
{
commit
:
this
.
_productService
.
commit
,
commit
:
this
.
_productService
.
commit
,
version
:
this
.
_productService
.
version
,
version
:
this
.
_productService
.
version
,
parentPid
:
remoteE
xtensionHostData
.
pid
,
parentPid
:
remoteE
nv
.
pid
,
environment
:
{
environment
:
{
isExtensionDevelopmentDebug
,
isExtensionDevelopmentDebug
,
appRoot
:
remoteE
xtensionHostData
.
appRoot
,
appRoot
:
remoteE
nv
.
appRoot
,
appSettingsHome
:
remoteE
xtensionHostData
.
appSettingsHome
,
appSettingsHome
:
remoteE
nv
.
appSettingsHome
,
appName
:
this
.
_productService
.
nameLong
,
appName
:
this
.
_productService
.
nameLong
,
appUriScheme
:
this
.
_productService
.
urlProtocol
,
appUriScheme
:
this
.
_productService
.
urlProtocol
,
appLanguage
:
platform
.
language
,
appLanguage
:
platform
.
language
,
extensionDevelopmentLocationURI
:
this
.
_environmentService
.
extensionDevelopmentLocationURI
,
extensionDevelopmentLocationURI
:
this
.
_environmentService
.
extensionDevelopmentLocationURI
,
extensionTestsLocationURI
:
this
.
_environmentService
.
extensionTestsLocationURI
,
extensionTestsLocationURI
:
this
.
_environmentService
.
extensionTestsLocationURI
,
globalStorageHome
:
remoteE
xtensionHostData
.
globalStorageHome
,
globalStorageHome
:
remoteE
nv
.
globalStorageHome
,
userHome
:
remoteE
xtensionHostData
.
userHome
,
userHome
:
remoteE
nv
.
userHome
,
webviewResourceRoot
:
this
.
_environmentService
.
webviewResourceRoot
,
webviewResourceRoot
:
this
.
_environmentService
.
webviewResourceRoot
,
webviewCspSource
:
this
.
_environmentService
.
webviewCspSource
,
webviewCspSource
:
this
.
_environmentService
.
webviewCspSource
,
},
},
...
@@ -220,15 +226,16 @@ export class RemoteExtensionHostClient extends Disposable implements IExtensionH
...
@@ -220,15 +226,16 @@ export class RemoteExtensionHostClient extends Disposable implements IExtensionH
},
},
remote
:
{
remote
:
{
isRemote
:
true
,
isRemote
:
true
,
authority
:
this
.
_initDataProvider
.
remoteAuthority
authority
:
this
.
_initDataProvider
.
remoteAuthority
,
connectionData
:
remoteInitData
.
connectionData
},
},
resolvedExtensions
:
resolvedExtensions
,
resolvedExtensions
:
resolvedExtensions
,
hostExtensions
:
hostExtensions
,
hostExtensions
:
hostExtensions
,
extensions
:
remoteE
xtensionHostData
.
extensions
,
extensions
:
remoteE
nv
.
extensions
,
telemetryInfo
,
telemetryInfo
,
logLevel
:
this
.
_logService
.
getLevel
(),
logLevel
:
this
.
_logService
.
getLevel
(),
logsLocation
:
remoteE
xtensionHostData
.
extensionHostLogsPath
,
logsLocation
:
remoteE
nv
.
extensionHostLogsPath
,
logFile
:
joinPath
(
remoteE
xtensionHostData
.
extensionHostLogsPath
,
`
${
ExtensionHostLogFileName
}
.log`
),
logFile
:
joinPath
(
remoteE
nv
.
extensionHostLogsPath
,
`
${
ExtensionHostLogFileName
}
.log`
),
autoStart
:
true
,
autoStart
:
true
,
uiKind
:
platform
.
isWeb
?
UIKind
.
Web
:
UIKind
.
Desktop
uiKind
:
platform
.
isWeb
?
UIKind
.
Web
:
UIKind
.
Desktop
};
};
...
...
src/vs/workbench/services/extensions/electron-browser/extensionHost.ts
浏览文件 @
30159785
...
@@ -440,6 +440,7 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter {
...
@@ -440,6 +440,7 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter {
},
},
remote
:
{
remote
:
{
authority
:
this
.
_environmentService
.
configuration
.
remoteAuthority
,
authority
:
this
.
_environmentService
.
configuration
.
remoteAuthority
,
connectionData
:
undefined
,
isRemote
:
false
isRemote
:
false
},
},
resolvedExtensions
:
[],
resolvedExtensions
:
[],
...
...
src/vs/workbench/services/extensions/electron-browser/extensionService.ts
浏览文件 @
30159785
...
@@ -52,7 +52,8 @@ class DeltaExtensionsQueueItem {
...
@@ -52,7 +52,8 @@ class DeltaExtensionsQueueItem {
export
class
ExtensionService
extends
AbstractExtensionService
implements
IExtensionService
{
export
class
ExtensionService
extends
AbstractExtensionService
implements
IExtensionService
{
private
readonly
_remoteExtensionsEnvironmentData
:
Map
<
string
,
IRemoteAgentEnvironment
>
;
private
readonly
_remoteEnvironment
:
Map
<
string
,
IRemoteAgentEnvironment
>
;
private
readonly
_remoteResolvedAuthority
:
Map
<
string
,
ResolverResult
>
;
private
readonly
_extensionScanner
:
CachedExtensionScanner
;
private
readonly
_extensionScanner
:
CachedExtensionScanner
;
private
_deltaExtensionsQueue
:
DeltaExtensionsQueueItem
[];
private
_deltaExtensionsQueue
:
DeltaExtensionsQueueItem
[];
...
@@ -95,7 +96,8 @@ export class ExtensionService extends AbstractExtensionService implements IExten
...
@@ -95,7 +96,8 @@ export class ExtensionService extends AbstractExtensionService implements IExten
}]);
}]);
}
}
this
.
_remoteExtensionsEnvironmentData
=
new
Map
<
string
,
IRemoteAgentEnvironment
>
();
this
.
_remoteEnvironment
=
new
Map
<
string
,
IRemoteAgentEnvironment
>
();
this
.
_remoteResolvedAuthority
=
new
Map
<
string
,
ResolverResult
>
();
this
.
_extensionScanner
=
instantiationService
.
createInstance
(
CachedExtensionScanner
);
this
.
_extensionScanner
=
instantiationService
.
createInstance
(
CachedExtensionScanner
);
this
.
_deltaExtensionsQueue
=
[];
this
.
_deltaExtensionsQueue
=
[];
...
@@ -344,10 +346,18 @@ export class ExtensionService extends AbstractExtensionService implements IExten
...
@@ -344,10 +346,18 @@ export class ExtensionService extends AbstractExtensionService implements IExten
private
_createProvider
(
remoteAuthority
:
string
):
IInitDataProvider
{
private
_createProvider
(
remoteAuthority
:
string
):
IInitDataProvider
{
return
{
return
{
remoteAuthority
:
remoteAuthority
,
remoteAuthority
:
remoteAuthority
,
getInitData
:
()
=>
{
getInitData
:
async
()
=>
{
return
this
.
whenInstalledExtensionsRegistered
().
then
(()
=>
{
await
this
.
whenInstalledExtensionsRegistered
();
return
this
.
_remoteExtensionsEnvironmentData
.
get
(
remoteAuthority
)
!
;
const
remoteEnvironment
=
this
.
_remoteEnvironment
.
get
(
remoteAuthority
)
!
;
});
const
resolvedAuthority
=
this
.
_remoteResolvedAuthority
.
get
(
remoteAuthority
)
!
.
authority
;
return
{
connectionData
:
{
host
:
resolvedAuthority
.
host
,
port
:
resolvedAuthority
.
port
,
connectionToken
:
remoteEnvironment
.
connectionToken
},
remoteEnvironment
:
remoteEnvironment
};
}
}
};
};
}
}
...
@@ -547,7 +557,8 @@ export class ExtensionService extends AbstractExtensionService implements IExten
...
@@ -547,7 +557,8 @@ export class ExtensionService extends AbstractExtensionService implements IExten
remoteEnv
.
extensions
=
remoteEnv
.
extensions
.
filter
(
ext
=>
runningLocation
.
get
(
ExtensionIdentifier
.
toKey
(
ext
.
identifier
))
===
RunningLocation
.
Remote
);
remoteEnv
.
extensions
=
remoteEnv
.
extensions
.
filter
(
ext
=>
runningLocation
.
get
(
ExtensionIdentifier
.
toKey
(
ext
.
identifier
))
===
RunningLocation
.
Remote
);
// save for remote extension's init data
// save for remote extension's init data
this
.
_remoteExtensionsEnvironmentData
.
set
(
remoteAuthority
,
remoteEnv
);
this
.
_remoteEnvironment
.
set
(
remoteAuthority
,
remoteEnv
);
this
.
_remoteResolvedAuthority
.
set
(
remoteAuthority
,
resolvedAuthority
);
await
this
.
_startLocalExtensionHost
(
extensionHost
,
remoteEnv
.
extensions
.
concat
(
localExtensions
),
localExtensions
.
map
(
extension
=>
extension
.
identifier
));
await
this
.
_startLocalExtensionHost
(
extensionHost
,
remoteEnv
.
extensions
.
concat
(
localExtensions
),
localExtensions
.
map
(
extension
=>
extension
.
identifier
));
}
else
{
}
else
{
...
...
src/vs/workbench/test/electron-browser/api/extHostSearch.test.ts
浏览文件 @
30159785
...
@@ -144,7 +144,7 @@ suite('ExtHostSearch', () => {
...
@@ -144,7 +144,7 @@ suite('ExtHostSearch', () => {
constructor
()
{
constructor
()
{
super
(
super
(
rpcProtocol
,
rpcProtocol
,
new
class
extends
mock
<
IExtHostInitDataService
>
()
{
remote
=
{
isRemote
:
false
,
authority
:
undefined
};
},
new
class
extends
mock
<
IExtHostInitDataService
>
()
{
remote
=
{
isRemote
:
false
,
authority
:
undefined
,
connectionData
:
undefined
};
},
new
URITransformerService
(
null
),
new
URITransformerService
(
null
),
logService
logService
);
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录