Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
139dde2e
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,发现更多精彩内容 >>
提交
139dde2e
编写于
10月 21, 2019
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
web - change environment to payload API
上级
98cd33b3
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
23 addition
and
23 deletion
+23
-23
src/vs/code/browser/workbench/workbench.ts
src/vs/code/browser/workbench/workbench.ts
+11
-12
src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts
...kbench/contrib/debug/browser/extensionHostDebugService.ts
+4
-3
src/vs/workbench/services/environment/browser/environmentService.ts
...kbench/services/environment/browser/environmentService.ts
+3
-2
src/vs/workbench/services/host/browser/browserHostService.ts
src/vs/workbench/services/host/browser/browserHostService.ts
+5
-6
未找到文件。
src/vs/code/browser/workbench/workbench.ts
浏览文件 @
139dde2e
...
...
@@ -208,11 +208,11 @@ class WorkspaceProvider implements IWorkspaceProvider {
constructor
(
public
readonly
workspace
:
IWorkspace
,
public
readonly
environment
:
ReadonlyMap
<
string
,
string
>
public
readonly
payload
:
object
)
{
}
async
open
(
workspace
:
IWorkspace
,
options
?:
{
reuse
?:
boolean
,
environment
?:
Map
<
string
,
string
>
}):
Promise
<
void
>
{
if
(
options
&&
options
.
reuse
&&
!
options
.
environment
&&
this
.
isSame
(
this
.
workspace
,
workspace
))
{
async
open
(
workspace
:
IWorkspace
,
options
?:
{
reuse
?:
boolean
,
payload
?:
object
}):
Promise
<
void
>
{
if
(
options
&&
options
.
reuse
&&
!
options
.
payload
&&
this
.
isSame
(
this
.
workspace
,
workspace
))
{
return
;
// return early if workspace and environment is not changing and we are reusing window
}
...
...
@@ -233,10 +233,8 @@ class WorkspaceProvider implements IWorkspaceProvider {
}
// Environment
if
(
options
&&
options
.
environment
)
{
for
(
const
[
key
,
value
]
of
options
.
environment
)
{
targetHref
+=
`&
${
key
}
=
${
encodeURIComponent
(
value
)}
`
;
}
if
(
options
&&
options
.
payload
)
{
targetHref
+=
`&payload=
${
encodeURIComponent
(
JSON
.
stringify
(
options
.
payload
))}
`
;
}
if
(
targetHref
)
{
...
...
@@ -290,8 +288,8 @@ class WorkspaceProvider implements IWorkspaceProvider {
workspace
=
undefined
;
}
// Find
environmental properties
const
environment
=
new
Map
<
string
,
string
>
(
);
// Find
payload
let
payload
=
Object
.
create
(
null
);
if
(
document
&&
document
.
location
&&
document
.
location
.
search
)
{
const
query
=
document
.
location
.
search
.
substring
(
1
);
const
vars
=
query
.
split
(
'
&
'
);
...
...
@@ -299,14 +297,15 @@ class WorkspaceProvider implements IWorkspaceProvider {
const
pair
=
p
.
split
(
'
=
'
);
if
(
pair
.
length
===
2
)
{
const
[
key
,
value
]
=
pair
;
if
(
key
!==
WorkspaceProvider
.
QUERY_PARAM_EMPTY_WINDOW
&&
key
!==
WorkspaceProvider
.
QUERY_PARAM_FOLDER
&&
key
!==
WorkspaceProvider
.
QUERY_PARAM_WORKSPACE
)
{
environment
.
set
(
key
,
decodeURIComponent
(
value
));
if
(
key
===
'
payload
'
)
{
payload
=
JSON
.
parse
(
decodeURIComponent
(
value
));
break
;
}
}
}
}
options
.
workspaceProvider
=
new
WorkspaceProvider
(
workspace
,
environment
);
options
.
workspaceProvider
=
new
WorkspaceProvider
(
workspace
,
payload
);
options
.
urlCallbackProvider
=
new
PollingURLCallbackProvider
();
options
.
credentialsProvider
=
new
LocalStorageCredentialsProvider
();
...
...
src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts
浏览文件 @
139dde2e
...
...
@@ -13,6 +13,7 @@ import { TelemetryService } from 'vs/platform/telemetry/common/telemetryService'
import
{
IChannel
}
from
'
vs/base/parts/ipc/common/ipc
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
mapToSerializable
}
from
'
vs/base/common/map
'
;
import
{
IWorkbenchEnvironmentService
}
from
'
vs/workbench/services/environment/common/environmentService
'
;
import
{
IWorkspaceProvider
,
IWorkspace
}
from
'
vs/workbench/services/host/browser/browserHostService
'
;
...
...
@@ -64,7 +65,7 @@ class BrowserExtensionHostDebugService extends ExtensionHostDebugChannelClient i
}
async
openExtensionDevelopmentHostWindow
(
args
:
string
[]):
Promise
<
void
>
{
if
(
!
this
.
workspaceProvider
.
environment
)
{
if
(
!
this
.
workspaceProvider
.
payload
)
{
// TODO@Ben remove me once environment is adopted
return
this
.
openExtensionDevelopmentHostWindowLegacy
(
args
);
}
...
...
@@ -96,8 +97,8 @@ class BrowserExtensionHostDebugService extends ExtensionHostDebugChannelClient i
// Open debug window as new window. Pass ParsedArgs over.
this
.
workspaceProvider
.
open
(
debugWorkspace
,
{
reuse
:
false
,
// debugging always requires a new window
environment
// mandatory properties to enable debugging
reuse
:
false
,
// debugging always requires a new window
payload
:
mapToSerializable
(
environment
)
// mandatory properties to enable debugging
});
}
...
...
src/vs/workbench/services/environment/browser/environmentService.ts
浏览文件 @
139dde2e
...
...
@@ -16,6 +16,7 @@ import { ISingleFolderWorkspaceIdentifier, IWorkspaceIdentifier } from 'vs/platf
import
{
IWorkbenchEnvironmentService
}
from
'
vs/workbench/services/environment/common/environmentService
'
;
import
{
IWorkbenchConstructionOptions
}
from
'
vs/workbench/workbench.web.api
'
;
import
product
from
'
vs/platform/product/common/product
'
;
import
{
serializableToMap
}
from
'
vs/base/common/map
'
;
export
class
BrowserWindowConfiguration
implements
IWindowConfiguration
{
...
...
@@ -101,8 +102,8 @@ export class BrowserWorkbenchEnvironmentService implements IWorkbenchEnvironment
this
.
untitledWorkspacesHome
=
URI
.
from
({
scheme
:
Schemas
.
untitled
,
path
:
'
Workspaces
'
});
// Fill in selected extra environmental properties
if
(
options
.
workspaceProvider
&&
options
.
workspaceProvider
.
environment
)
{
const
environment
=
options
.
workspaceProvider
.
environment
;
if
(
options
.
workspaceProvider
&&
Array
.
isArray
(
options
.
workspaceProvider
.
payload
)
)
{
const
environment
=
serializableToMap
(
options
.
workspaceProvider
.
payload
)
;
for
(
const
[
key
,
value
]
of
environment
)
{
switch
(
key
)
{
case
'
extensionDevelopmentPath
'
:
...
...
src/vs/workbench/services/host/browser/browserHostService.ts
浏览文件 @
139dde2e
...
...
@@ -34,10 +34,9 @@ export interface IWorkspaceProvider {
readonly
workspace
:
IWorkspace
;
/**
* Optionally a set of environmental properties to be used
* as environment for the workspace to open.
* Arbitrary payload from the `IWorkspaceProvider.open` call.
*/
readonly
environment
?:
ReadonlyMap
<
string
,
string
>
;
readonly
payload
?:
object
;
/**
* Asks to open a workspace in the current or a new window.
...
...
@@ -45,10 +44,10 @@ export interface IWorkspaceProvider {
* @param workspace the workspace to open.
* @param options optional options for the workspace to open.
* - `reuse`: wether to open inside the current window or a new window
* - `
environment`: a map of environmental properties that should b
e
*
filled into the environment of the workspace to open
.
* - `
payload`: arbitrary payload that should be made availabl
e
*
to the opening window via the `IWorkspaceProvider.payload` property
.
*/
open
(
workspace
:
IWorkspace
,
options
?:
{
reuse
?:
boolean
,
environment
?:
Map
<
string
,
string
>
}):
Promise
<
void
>
;
open
(
workspace
:
IWorkspace
,
options
?:
{
reuse
?:
boolean
,
payload
?:
object
}):
Promise
<
void
>
;
}
export
class
BrowserHostService
extends
Disposable
implements
IHostService
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录