Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
92693a1b
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,发现更多精彩内容 >>
提交
92693a1b
编写于
6月 25, 2018
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
API: UriHandler, rename and docs
上级
5d44411f
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
42 addition
and
16 deletion
+42
-16
extensions/git/src/protocolHandler.ts
extensions/git/src/protocolHandler.ts
+3
-3
src/vs/vscode.proposed.d.ts
src/vs/vscode.proposed.d.ts
+29
-3
src/vs/workbench/api/electron-browser/mainThreadUrls.ts
src/vs/workbench/api/electron-browser/mainThreadUrls.ts
+2
-2
src/vs/workbench/api/node/extHost.api.impl.ts
src/vs/workbench/api/node/extHost.api.impl.ts
+2
-2
src/vs/workbench/api/node/extHost.protocol.ts
src/vs/workbench/api/node/extHost.protocol.ts
+2
-2
src/vs/workbench/api/node/extHostUrls.ts
src/vs/workbench/api/node/extHostUrls.ts
+4
-4
未找到文件。
extensions/git/src/protocolHandler.ts
浏览文件 @
92693a1b
...
...
@@ -5,16 +5,16 @@
'
use strict
'
;
import
{
Protocol
Handler
,
Uri
,
window
,
Disposable
,
commands
}
from
'
vscode
'
;
import
{
Uri
Handler
,
Uri
,
window
,
Disposable
,
commands
}
from
'
vscode
'
;
import
{
dispose
}
from
'
./util
'
;
import
*
as
querystring
from
'
querystring
'
;
export
class
GitProtocolHandler
implements
Protocol
Handler
{
export
class
GitProtocolHandler
implements
Uri
Handler
{
private
disposables
:
Disposable
[]
=
[];
constructor
()
{
this
.
disposables
.
push
(
window
.
register
Protocol
Handler
(
this
));
this
.
disposables
.
push
(
window
.
register
Uri
Handler
(
this
));
}
handleUri
(
uri
:
Uri
):
void
{
...
...
src/vs/vscode.proposed.d.ts
浏览文件 @
92693a1b
...
...
@@ -497,16 +497,42 @@ declare module 'vscode' {
//#region URLs
export
interface
ProtocolHandler
{
/**
* A Uri handler is responsible for handling system-wide [Uris](#Uri).
*
* @see [window.registerUriHandler](#window.registerUriHandler).
*/
export
interface
UriHandler
{
/**
* Handle the provided system-wide [Uri](#Uri).
*
* @see [window.registerUriHandler](#window.registerUriHandler).
*/
handleUri
(
uri
:
Uri
):
void
;
}
export
namespace
window
{
/**
* Registers a protocol handler capable of handling system-wide URIs.
* Registers a [Uri handler](#UriHandler) capable of handling system-wide [Uris](#Uri).
* A Uri handler is scoped to the extension it is contributed from: it will only
* be able to handle Uris which are directed to the extension itself.
*
* For example, if the `vscode.git` extension registers a Uri handler, it will only
* be allowed to handle Uris with the prefix `{scheme}://vscode.git`, in which `{scheme}`
* is either `vscode` or `vscode-insiders`. All the following Uris are examples:
*
* - `vscode://vscode.git`
* - `vscode://vscode.git/`
* - `vscode-insiders://vscode.git/status`
* - `vscode-insiders://vscode.git/clone?url=foobar`
*
* An extension can only register a single Uri handler in its entire activation lifetime.
*
* @param handler The Uri handler to register for this extension.
*/
export
function
register
ProtocolHandler
(
handler
:
Protocol
Handler
):
Disposable
;
export
function
register
UriHandler
(
handler
:
Uri
Handler
):
Disposable
;
}
//#endregion
...
...
src/vs/workbench/api/electron-browser/mainThreadUrls.ts
浏览文件 @
92693a1b
...
...
@@ -42,7 +42,7 @@ export class MainThreadUrls implements MainThreadUrlsShape {
this
.
proxy
=
context
.
getProxy
(
ExtHostContext
.
ExtHostUrls
);
}
$register
Protocol
Handler
(
handle
:
number
,
extensionId
:
string
):
TPromise
<
void
>
{
$register
Uri
Handler
(
handle
:
number
,
extensionId
:
string
):
TPromise
<
void
>
{
const
handler
=
new
ExtensionUrlHandler
(
this
.
proxy
,
handle
,
extensionId
);
const
disposable
=
this
.
urlService
.
registerHandler
(
handler
);
...
...
@@ -52,7 +52,7 @@ export class MainThreadUrls implements MainThreadUrlsShape {
return
TPromise
.
as
(
null
);
}
$unregister
Protocol
Handler
(
handle
:
number
):
TPromise
<
void
>
{
$unregister
Uri
Handler
(
handle
:
number
):
TPromise
<
void
>
{
const
tuple
=
this
.
handlers
.
get
(
handle
);
if
(
!
tuple
)
{
...
...
src/vs/workbench/api/node/extHost.api.impl.ts
浏览文件 @
92693a1b
...
...
@@ -452,8 +452,8 @@ export function createApiFactory(
registerWebviewPanelSerializer
:
proposedApiFunction
(
extension
,
(
viewType
:
string
,
serializer
:
vscode
.
WebviewPanelSerializer
)
=>
{
return
extHostWebviews
.
registerWebviewPanelSerializer
(
viewType
,
serializer
);
}),
register
ProtocolHandler
:
proposedApiFunction
(
extension
,
(
handler
:
vscode
.
Protocol
Handler
)
=>
{
return
extHostUrls
.
register
Protocol
Handler
(
extension
.
id
,
handler
);
register
UriHandler
:
proposedApiFunction
(
extension
,
(
handler
:
vscode
.
Uri
Handler
)
=>
{
return
extHostUrls
.
register
Uri
Handler
(
extension
.
id
,
handler
);
}),
get
quickInputBackButton
()
{
return
proposedApiFunction
(
extension
,
():
vscode
.
QuickInputButton
=>
{
...
...
src/vs/workbench/api/node/extHost.protocol.ts
浏览文件 @
92693a1b
...
...
@@ -462,8 +462,8 @@ export interface ExtHostWebviewsShape {
}
export
interface
MainThreadUrlsShape
extends
IDisposable
{
$register
Protocol
Handler
(
handle
:
number
,
extensionId
:
string
):
TPromise
<
void
>
;
$unregister
Protocol
Handler
(
handle
:
number
):
TPromise
<
void
>
;
$register
Uri
Handler
(
handle
:
number
,
extensionId
:
string
):
TPromise
<
void
>
;
$unregister
Uri
Handler
(
handle
:
number
):
TPromise
<
void
>
;
}
export
interface
ExtHostUrlsShape
{
...
...
src/vs/workbench/api/node/extHostUrls.ts
浏览文件 @
92693a1b
...
...
@@ -15,7 +15,7 @@ export class ExtHostUrls implements ExtHostUrlsShape {
private
readonly
_proxy
:
MainThreadUrlsShape
;
private
handles
=
new
Set
<
string
>
();
private
handlers
=
new
Map
<
number
,
vscode
.
Protocol
Handler
>
();
private
handlers
=
new
Map
<
number
,
vscode
.
Uri
Handler
>
();
constructor
(
mainContext
:
IMainContext
...
...
@@ -23,7 +23,7 @@ export class ExtHostUrls implements ExtHostUrlsShape {
this
.
_proxy
=
mainContext
.
getProxy
(
MainContext
.
MainThreadUrls
);
}
register
ProtocolHandler
(
extensionId
:
string
,
handler
:
vscode
.
Protocol
Handler
):
vscode
.
Disposable
{
register
UriHandler
(
extensionId
:
string
,
handler
:
vscode
.
Uri
Handler
):
vscode
.
Disposable
{
if
(
this
.
handles
.
has
(
extensionId
))
{
throw
new
Error
(
`Protocol handler already registered for extension
${
extensionId
}
`
);
}
...
...
@@ -31,12 +31,12 @@ export class ExtHostUrls implements ExtHostUrlsShape {
const
handle
=
ExtHostUrls
.
HandlePool
++
;
this
.
handles
.
add
(
extensionId
);
this
.
handlers
.
set
(
handle
,
handler
);
this
.
_proxy
.
$register
Protocol
Handler
(
handle
,
extensionId
);
this
.
_proxy
.
$register
Uri
Handler
(
handle
,
extensionId
);
return
toDisposable
(()
=>
{
this
.
handles
.
delete
(
extensionId
);
this
.
handlers
.
delete
(
handle
);
this
.
_proxy
.
$unregister
Protocol
Handler
(
handle
);
this
.
_proxy
.
$unregister
Uri
Handler
(
handle
);
});
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录