Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
0358d081
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,发现更多精彩内容 >>
提交
0358d081
编写于
6月 21, 2019
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Re-use extractLocalHostUriMetaDataForPortMapping for openUri
上级
d27ab54d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
15 deletion
+6
-15
src/vs/workbench/api/browser/mainThreadWindow.ts
src/vs/workbench/api/browser/mainThreadWindow.ts
+6
-15
未找到文件。
src/vs/workbench/api/browser/mainThreadWindow.ts
浏览文件 @
0358d081
...
...
@@ -11,6 +11,7 @@ import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import
{
ExtHostContext
,
ExtHostWindowShape
,
IExtHostContext
,
MainContext
,
MainThreadWindowShape
,
IOpenUriOptions
}
from
'
../common/extHost.protocol
'
;
import
{
ITunnelService
,
RemoteTunnel
}
from
'
vs/platform/remote/common/tunnel
'
;
import
{
IWorkbenchEnvironmentService
}
from
'
vs/workbench/services/environment/common/environmentService
'
;
import
{
extractLocalHostUriMetaDataForPortMapping
}
from
'
vs/workbench/contrib/webview/common/portMapping
'
;
@
extHostNamedCustomer
(
MainContext
.
MainThreadWindow
)
export
class
MainThreadWindow
implements
MainThreadWindowShape
{
...
...
@@ -48,13 +49,11 @@ export class MainThreadWindow implements MainThreadWindowShape {
async
$openUri
(
uriComponent
:
UriComponents
,
options
:
IOpenUriOptions
):
Promise
<
boolean
>
{
let
uri
=
URI
.
revive
(
uriComponent
);
if
(
options
.
allowTunneling
&&
!!
this
.
environmentService
.
configuration
.
remoteAuthority
)
{
if
(
uri
.
scheme
===
'
http
'
||
uri
.
scheme
===
'
https
'
)
{
const
port
=
this
.
getLocalhostPort
(
uri
);
if
(
typeof
port
===
'
number
'
)
{
const
tunnel
=
await
this
.
getOrCreateTunnel
(
port
);
if
(
tunnel
)
{
uri
=
uri
.
with
({
authority
:
`localhost:
${
tunnel
.
tunnelLocalPort
}
`
});
}
const
portMappingRequest
=
extractLocalHostUriMetaDataForPortMapping
(
uri
);
if
(
portMappingRequest
)
{
const
tunnel
=
await
this
.
getOrCreateTunnel
(
portMappingRequest
.
port
);
if
(
tunnel
)
{
uri
=
uri
.
with
({
authority
:
`127.0.0.1:
${
tunnel
.
tunnelLocalPort
}
`
});
}
}
}
...
...
@@ -62,14 +61,6 @@ export class MainThreadWindow implements MainThreadWindowShape {
return
this
.
windowsService
.
openExternal
(
uri
.
toString
());
}
private
getLocalhostPort
(
uri
:
URI
):
number
|
undefined
{
const
match
=
/^localhost:
(\d
+
)
$/
.
exec
(
uri
.
authority
);
if
(
match
)
{
return
+
match
[
1
];
}
return
undefined
;
}
private
getOrCreateTunnel
(
remotePort
:
number
):
Promise
<
RemoteTunnel
>
|
undefined
{
const
existing
=
this
.
_tunnels
.
get
(
remotePort
);
if
(
existing
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录