Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
a901902c
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,发现更多精彩内容 >>
提交
a901902c
编写于
12月 10, 2018
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove TPromise.wrapError
related to #63897
上级
2f863c62
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
124 addition
and
117 deletion
+124
-117
src/vs/platform/driver/electron-browser/driver.ts
src/vs/platform/driver/electron-browser/driver.ts
+32
-41
src/vs/platform/driver/node/driver.ts
src/vs/platform/driver/node/driver.ts
+73
-74
test/smoke/src/vscode/code.ts
test/smoke/src/vscode/code.ts
+2
-2
test/smoke/tools/copy-driver-definition.js
test/smoke/tools/copy-driver-definition.js
+17
-0
未找到文件。
src/vs/platform/driver/electron-browser/driver.ts
浏览文件 @
a901902c
...
...
@@ -3,7 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IDisposable
,
toDisposable
,
combinedDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IWindowDriver
,
IElement
,
WindowDriverChannel
,
WindowDriverRegistryChannelClient
}
from
'
vs/platform/driver/node/driver
'
;
import
{
IPCClient
}
from
'
vs/base/parts/ipc/node/ipc
'
;
...
...
@@ -50,19 +49,19 @@ class WindowDriver implements IWindowDriver {
@
IWindowService
private
windowService
:
IWindowService
)
{
}
click
(
selector
:
string
,
xoffset
?:
number
,
yoffset
?:
number
):
T
Promise
<
void
>
{
click
(
selector
:
string
,
xoffset
?:
number
,
yoffset
?:
number
):
Promise
<
void
>
{
return
this
.
_click
(
selector
,
1
,
xoffset
,
yoffset
);
}
doubleClick
(
selector
:
string
):
T
Promise
<
void
>
{
doubleClick
(
selector
:
string
):
Promise
<
void
>
{
return
this
.
_click
(
selector
,
2
);
}
private
_getElementXY
(
selector
:
string
,
xoffset
?:
number
,
yoffset
?:
number
):
T
Promise
<
{
x
:
number
;
y
:
number
;
}
>
{
private
async
_getElementXY
(
selector
:
string
,
xoffset
?:
number
,
yoffset
?:
number
):
Promise
<
{
x
:
number
;
y
:
number
;
}
>
{
const
element
=
document
.
querySelector
(
selector
);
if
(
!
element
)
{
return
TPromise
.
wrapError
(
new
Error
(
`Element not found:
${
selector
}
`
));
return
Promise
.
reject
(
new
Error
(
`Element not found:
${
selector
}
`
));
}
const
{
left
,
top
}
=
getTopLeftOffset
(
element
as
HTMLElement
);
...
...
@@ -80,27 +79,25 @@ class WindowDriver implements IWindowDriver {
x
=
Math
.
round
(
x
);
y
=
Math
.
round
(
y
);
return
TPromise
.
as
({
x
,
y
})
;
return
{
x
,
y
}
;
}
private
_click
(
selector
:
string
,
clickCount
:
number
,
xoffset
?:
number
,
yoffset
?:
number
):
T
Promise
<
void
>
{
return
this
.
_getElementXY
(
selector
,
xoffset
,
yoffset
).
then
(({
x
,
y
})
=>
{
private
async
_click
(
selector
:
string
,
clickCount
:
number
,
xoffset
?:
number
,
yoffset
?:
number
):
Promise
<
void
>
{
const
{
x
,
y
}
=
await
this
.
_getElementXY
(
selector
,
xoffset
,
yoffset
);
const
webContents
:
electron
.
WebContents
=
(
electron
as
any
).
remote
.
getCurrentWebContents
();
webContents
.
sendInputEvent
({
type
:
'
mouseDown
'
,
x
,
y
,
button
:
'
left
'
,
clickCount
}
as
any
);
const
webContents
:
electron
.
WebContents
=
(
electron
as
any
).
remote
.
getCurrentWebContents
();
webContents
.
sendInputEvent
({
type
:
'
mouseDown
'
,
x
,
y
,
button
:
'
left
'
,
clickCount
}
as
any
);
await
timeout
(
10
);
return
TPromise
.
wrap
(
timeout
(
10
)).
then
(()
=>
{
webContents
.
sendInputEvent
({
type
:
'
mouseUp
'
,
x
,
y
,
button
:
'
left
'
,
clickCount
}
as
any
);
return
TPromise
.
wrap
(
timeout
(
100
));
});
});
webContents
.
sendInputEvent
({
type
:
'
mouseUp
'
,
x
,
y
,
button
:
'
left
'
,
clickCount
}
as
any
);
await
timeout
(
100
);
}
setValue
(
selector
:
string
,
text
:
string
):
T
Promise
<
void
>
{
async
setValue
(
selector
:
string
,
text
:
string
):
Promise
<
void
>
{
const
element
=
document
.
querySelector
(
selector
);
if
(
!
element
)
{
return
TPromise
.
wrapError
(
new
Error
(
`Element not found:
${
selector
}
`
));
return
Promise
.
reject
(
new
Error
(
`Element not found:
${
selector
}
`
));
}
const
inputElement
=
element
as
HTMLInputElement
;
...
...
@@ -108,15 +105,13 @@ class WindowDriver implements IWindowDriver {
const
event
=
new
Event
(
'
input
'
,
{
bubbles
:
true
,
cancelable
:
true
});
inputElement
.
dispatchEvent
(
event
);
return
TPromise
.
as
(
null
);
}
getTitle
():
T
Promise
<
string
>
{
return
TPromise
.
as
(
document
.
title
)
;
async
getTitle
():
Promise
<
string
>
{
return
document
.
title
;
}
isActiveElement
(
selector
:
string
):
T
Promise
<
boolean
>
{
async
isActiveElement
(
selector
:
string
):
Promise
<
boolean
>
{
const
element
=
document
.
querySelector
(
selector
);
if
(
element
!==
document
.
activeElement
)
{
...
...
@@ -132,13 +127,13 @@ class WindowDriver implements IWindowDriver {
el
=
el
.
parentElement
;
}
return
TPromise
.
wrapError
(
new
Error
(
`Active element not found. Current active element is '
${
chain
.
join
(
'
>
'
)}
'. Looking for
${
selector
}
`
)
);
throw
new
Error
(
`Active element not found. Current active element is '
${
chain
.
join
(
'
>
'
)}
'. Looking for
${
selector
}
`
);
}
return
TPromise
.
as
(
true
)
;
return
true
;
}
getElements
(
selector
:
string
,
recursive
:
boolean
):
T
Promise
<
IElement
[]
>
{
async
getElements
(
selector
:
string
,
recursive
:
boolean
):
Promise
<
IElement
[]
>
{
const
query
=
document
.
querySelectorAll
(
selector
);
const
result
:
IElement
[]
=
[];
...
...
@@ -147,14 +142,14 @@ class WindowDriver implements IWindowDriver {
result
.
push
(
serializeElement
(
element
,
recursive
));
}
return
TPromise
.
as
(
result
)
;
return
result
;
}
typeInEditor
(
selector
:
string
,
text
:
string
):
T
Promise
<
void
>
{
async
typeInEditor
(
selector
:
string
,
text
:
string
):
Promise
<
void
>
{
const
element
=
document
.
querySelector
(
selector
);
if
(
!
element
)
{
return
TPromise
.
wrapError
(
new
Error
(
`Editor not found:
${
selector
}
`
)
);
throw
new
Error
(
`Editor not found:
${
selector
}
`
);
}
const
textarea
=
element
as
HTMLTextAreaElement
;
...
...
@@ -168,21 +163,19 @@ class WindowDriver implements IWindowDriver {
const
event
=
new
Event
(
'
input
'
,
{
'
bubbles
'
:
true
,
'
cancelable
'
:
true
});
textarea
.
dispatchEvent
(
event
);
return
TPromise
.
as
(
null
);
}
getTerminalBuffer
(
selector
:
string
):
T
Promise
<
string
[]
>
{
async
getTerminalBuffer
(
selector
:
string
):
Promise
<
string
[]
>
{
const
element
=
document
.
querySelector
(
selector
);
if
(
!
element
)
{
return
TPromise
.
wrapError
(
new
Error
(
`Terminal not found:
${
selector
}
`
)
);
throw
new
Error
(
`Terminal not found:
${
selector
}
`
);
}
const
xterm
:
Terminal
=
(
element
as
any
).
xterm
;
if
(
!
xterm
)
{
return
TPromise
.
wrapError
(
new
Error
(
`Xterm not found:
${
selector
}
`
)
);
throw
new
Error
(
`Xterm not found:
${
selector
}
`
);
}
const
lines
:
string
[]
=
[];
...
...
@@ -191,29 +184,27 @@ class WindowDriver implements IWindowDriver {
lines
.
push
(
xterm
.
_core
.
buffer
.
translateBufferLineToString
(
i
,
true
));
}
return
TPromise
.
as
(
lines
)
;
return
lines
;
}
writeInTerminal
(
selector
:
string
,
text
:
string
):
T
Promise
<
void
>
{
async
writeInTerminal
(
selector
:
string
,
text
:
string
):
Promise
<
void
>
{
const
element
=
document
.
querySelector
(
selector
);
if
(
!
element
)
{
return
TPromise
.
wrapError
(
new
Error
(
`Element not found:
${
selector
}
`
)
);
throw
new
Error
(
`Element not found:
${
selector
}
`
);
}
const
xterm
:
Terminal
=
(
element
as
any
).
xterm
;
if
(
!
xterm
)
{
return
TPromise
.
wrapError
(
new
Error
(
`Xterm not found:
${
selector
}
`
)
);
throw
new
Error
(
`Xterm not found:
${
selector
}
`
);
}
xterm
.
_core
.
handler
(
text
);
return
TPromise
.
as
(
null
);
}
openDevTools
():
T
Promise
<
void
>
{
return
this
.
windowService
.
openDevTools
({
mode
:
'
detach
'
});
async
openDevTools
():
Promise
<
void
>
{
await
this
.
windowService
.
openDevTools
({
mode
:
'
detach
'
});
}
}
...
...
src/vs/platform/driver/node/driver.ts
浏览文件 @
a901902c
...
...
@@ -4,7 +4,6 @@
*--------------------------------------------------------------------------------------------*/
import
{
connect
as
connectNet
,
Client
}
from
'
vs/base/parts/ipc/node/ipc.net
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
createDecorator
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IChannel
,
IServerChannel
}
from
'
vs/base/parts/ipc/node/ipc
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
...
...
@@ -28,19 +27,19 @@ export interface IElement {
export
interface
IDriver
{
_serviceBrand
:
any
;
getWindowIds
():
T
Promis
e
<
number
[]
>
;
capturePage
(
windowId
:
number
):
T
Promis
e
<
string
>
;
reloadWindow
(
windowId
:
number
):
T
Promis
e
<
void
>
;
dispatchKeybinding
(
windowId
:
number
,
keybinding
:
string
):
T
Promis
e
<
void
>
;
click
(
windowId
:
number
,
selector
:
string
,
xoffset
?:
number
|
undefined
,
yoffset
?:
number
|
undefined
):
T
Promis
e
<
void
>
;
doubleClick
(
windowId
:
number
,
selector
:
string
):
T
Promis
e
<
void
>
;
setValue
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
;
getTitle
(
windowId
:
number
):
T
Promis
e
<
string
>
;
isActiveElement
(
windowId
:
number
,
selector
:
string
):
T
Promis
e
<
boolean
>
;
getElements
(
windowId
:
number
,
selector
:
string
,
recursive
?:
boolean
):
T
Promis
e
<
IElement
[]
>
;
typeInEditor
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
;
getTerminalBuffer
(
windowId
:
number
,
selector
:
string
):
T
Promis
e
<
string
[]
>
;
writeInTerminal
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
;
getWindowIds
():
T
henabl
e
<
number
[]
>
;
capturePage
(
windowId
:
number
):
T
henabl
e
<
string
>
;
reloadWindow
(
windowId
:
number
):
T
henabl
e
<
void
>
;
dispatchKeybinding
(
windowId
:
number
,
keybinding
:
string
):
T
henabl
e
<
void
>
;
click
(
windowId
:
number
,
selector
:
string
,
xoffset
?:
number
|
undefined
,
yoffset
?:
number
|
undefined
):
T
henabl
e
<
void
>
;
doubleClick
(
windowId
:
number
,
selector
:
string
):
T
henabl
e
<
void
>
;
setValue
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
;
getTitle
(
windowId
:
number
):
T
henabl
e
<
string
>
;
isActiveElement
(
windowId
:
number
,
selector
:
string
):
T
henabl
e
<
boolean
>
;
getElements
(
windowId
:
number
,
selector
:
string
,
recursive
?:
boolean
):
T
henabl
e
<
IElement
[]
>
;
typeInEditor
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
;
getTerminalBuffer
(
windowId
:
number
,
selector
:
string
):
T
henabl
e
<
string
[]
>
;
writeInTerminal
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
;
}
//*END
...
...
@@ -52,7 +51,7 @@ export class DriverChannel implements IServerChannel {
throw
new
Error
(
'
No event found
'
);
}
call
(
_
,
command
:
string
,
arg
?:
any
):
T
Promis
e
<
any
>
{
call
(
_
,
command
:
string
,
arg
?:
any
):
T
henabl
e
<
any
>
{
switch
(
command
)
{
case
'
getWindowIds
'
:
return
this
.
driver
.
getWindowIds
();
case
'
capturePage
'
:
return
this
.
driver
.
capturePage
(
arg
);
...
...
@@ -79,56 +78,56 @@ export class DriverChannelClient implements IDriver {
constructor
(
private
channel
:
IChannel
)
{
}
getWindowIds
():
T
Promis
e
<
number
[]
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
getWindowIds
'
)
);
getWindowIds
():
T
henabl
e
<
number
[]
>
{
return
this
.
channel
.
call
(
'
getWindowIds
'
);
}
capturePage
(
windowId
:
number
):
T
Promis
e
<
string
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
capturePage
'
,
windowId
)
);
capturePage
(
windowId
:
number
):
T
henabl
e
<
string
>
{
return
this
.
channel
.
call
(
'
capturePage
'
,
windowId
);
}
reloadWindow
(
windowId
:
number
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
reloadWindow
'
,
windowId
)
);
reloadWindow
(
windowId
:
number
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
reloadWindow
'
,
windowId
);
}
dispatchKeybinding
(
windowId
:
number
,
keybinding
:
string
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
dispatchKeybinding
'
,
[
windowId
,
keybinding
])
);
dispatchKeybinding
(
windowId
:
number
,
keybinding
:
string
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
dispatchKeybinding
'
,
[
windowId
,
keybinding
]
);
}
click
(
windowId
:
number
,
selector
:
string
,
xoffset
:
number
|
undefined
,
yoffset
:
number
|
undefined
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
click
'
,
[
windowId
,
selector
,
xoffset
,
yoffset
])
);
click
(
windowId
:
number
,
selector
:
string
,
xoffset
:
number
|
undefined
,
yoffset
:
number
|
undefined
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
click
'
,
[
windowId
,
selector
,
xoffset
,
yoffset
]
);
}
doubleClick
(
windowId
:
number
,
selector
:
string
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
doubleClick
'
,
[
windowId
,
selector
])
);
doubleClick
(
windowId
:
number
,
selector
:
string
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
doubleClick
'
,
[
windowId
,
selector
]
);
}
setValue
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
setValue
'
,
[
windowId
,
selector
,
text
])
);
setValue
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
setValue
'
,
[
windowId
,
selector
,
text
]
);
}
getTitle
(
windowId
:
number
):
T
Promis
e
<
string
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
getTitle
'
,
[
windowId
])
);
getTitle
(
windowId
:
number
):
T
henabl
e
<
string
>
{
return
this
.
channel
.
call
(
'
getTitle
'
,
[
windowId
]
);
}
isActiveElement
(
windowId
:
number
,
selector
:
string
):
T
Promis
e
<
boolean
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
isActiveElement
'
,
[
windowId
,
selector
])
);
isActiveElement
(
windowId
:
number
,
selector
:
string
):
T
henabl
e
<
boolean
>
{
return
this
.
channel
.
call
(
'
isActiveElement
'
,
[
windowId
,
selector
]
);
}
getElements
(
windowId
:
number
,
selector
:
string
,
recursive
:
boolean
):
T
Promis
e
<
IElement
[]
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
getElements
'
,
[
windowId
,
selector
,
recursive
])
);
getElements
(
windowId
:
number
,
selector
:
string
,
recursive
:
boolean
):
T
henabl
e
<
IElement
[]
>
{
return
this
.
channel
.
call
(
'
getElements
'
,
[
windowId
,
selector
,
recursive
]
);
}
typeInEditor
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
typeInEditor
'
,
[
windowId
,
selector
,
text
])
);
typeInEditor
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
typeInEditor
'
,
[
windowId
,
selector
,
text
]
);
}
getTerminalBuffer
(
windowId
:
number
,
selector
:
string
):
T
Promis
e
<
string
[]
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
getTerminalBuffer
'
,
[
windowId
,
selector
])
);
getTerminalBuffer
(
windowId
:
number
,
selector
:
string
):
T
henabl
e
<
string
[]
>
{
return
this
.
channel
.
call
(
'
getTerminalBuffer
'
,
[
windowId
,
selector
]
);
}
writeInTerminal
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
writeInTerminal
'
,
[
windowId
,
selector
,
text
])
);
writeInTerminal
(
windowId
:
number
,
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
writeInTerminal
'
,
[
windowId
,
selector
,
text
]
);
}
}
...
...
@@ -137,8 +136,8 @@ export interface IDriverOptions {
}
export
interface
IWindowDriverRegistry
{
registerWindowDriver
(
windowId
:
number
):
T
Promis
e
<
IDriverOptions
>
;
reloadWindowDriver
(
windowId
:
number
):
T
Promis
e
<
void
>
;
registerWindowDriver
(
windowId
:
number
):
T
henabl
e
<
IDriverOptions
>
;
reloadWindowDriver
(
windowId
:
number
):
T
henabl
e
<
void
>
;
}
export
class
WindowDriverRegistryChannel
implements
IServerChannel
{
...
...
@@ -165,25 +164,25 @@ export class WindowDriverRegistryChannelClient implements IWindowDriverRegistry
constructor
(
private
channel
:
IChannel
)
{
}
registerWindowDriver
(
windowId
:
number
):
T
Promis
e
<
IDriverOptions
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
registerWindowDriver
'
,
windowId
)
);
registerWindowDriver
(
windowId
:
number
):
T
henabl
e
<
IDriverOptions
>
{
return
this
.
channel
.
call
(
'
registerWindowDriver
'
,
windowId
);
}
reloadWindowDriver
(
windowId
:
number
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
reloadWindowDriver
'
,
windowId
)
);
reloadWindowDriver
(
windowId
:
number
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
reloadWindowDriver
'
,
windowId
);
}
}
export
interface
IWindowDriver
{
click
(
selector
:
string
,
xoffset
?:
number
|
undefined
,
yoffset
?:
number
|
undefined
):
T
Promis
e
<
void
>
;
doubleClick
(
selector
:
string
):
T
Promis
e
<
void
>
;
setValue
(
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
;
getTitle
():
T
Promis
e
<
string
>
;
isActiveElement
(
selector
:
string
):
T
Promis
e
<
boolean
>
;
getElements
(
selector
:
string
,
recursive
:
boolean
):
T
Promis
e
<
IElement
[]
>
;
typeInEditor
(
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
;
getTerminalBuffer
(
selector
:
string
):
T
Promis
e
<
string
[]
>
;
writeInTerminal
(
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
;
click
(
selector
:
string
,
xoffset
?:
number
|
undefined
,
yoffset
?:
number
|
undefined
):
T
henabl
e
<
void
>
;
doubleClick
(
selector
:
string
):
T
henabl
e
<
void
>
;
setValue
(
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
;
getTitle
():
T
henabl
e
<
string
>
;
isActiveElement
(
selector
:
string
):
T
henabl
e
<
boolean
>
;
getElements
(
selector
:
string
,
recursive
:
boolean
):
T
henabl
e
<
IElement
[]
>
;
typeInEditor
(
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
;
getTerminalBuffer
(
selector
:
string
):
T
henabl
e
<
string
[]
>
;
writeInTerminal
(
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
;
}
export
class
WindowDriverChannel
implements
IServerChannel
{
...
...
@@ -217,40 +216,40 @@ export class WindowDriverChannelClient implements IWindowDriver {
constructor
(
private
channel
:
IChannel
)
{
}
click
(
selector
:
string
,
xoffset
?:
number
,
yoffset
?:
number
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
click
'
,
[
selector
,
xoffset
,
yoffset
])
);
click
(
selector
:
string
,
xoffset
?:
number
,
yoffset
?:
number
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
click
'
,
[
selector
,
xoffset
,
yoffset
]
);
}
doubleClick
(
selector
:
string
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
doubleClick
'
,
selector
)
);
doubleClick
(
selector
:
string
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
doubleClick
'
,
selector
);
}
setValue
(
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
setValue
'
,
[
selector
,
text
])
);
setValue
(
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
setValue
'
,
[
selector
,
text
]
);
}
getTitle
():
T
Promis
e
<
string
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
getTitle
'
)
);
getTitle
():
T
henabl
e
<
string
>
{
return
this
.
channel
.
call
(
'
getTitle
'
);
}
isActiveElement
(
selector
:
string
):
T
Promis
e
<
boolean
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
isActiveElement
'
,
selector
)
);
isActiveElement
(
selector
:
string
):
T
henabl
e
<
boolean
>
{
return
this
.
channel
.
call
(
'
isActiveElement
'
,
selector
);
}
getElements
(
selector
:
string
,
recursive
:
boolean
):
T
Promis
e
<
IElement
[]
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
getElements
'
,
[
selector
,
recursive
])
);
getElements
(
selector
:
string
,
recursive
:
boolean
):
T
henabl
e
<
IElement
[]
>
{
return
this
.
channel
.
call
(
'
getElements
'
,
[
selector
,
recursive
]
);
}
typeInEditor
(
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
typeInEditor
'
,
[
selector
,
text
])
);
typeInEditor
(
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
typeInEditor
'
,
[
selector
,
text
]
);
}
getTerminalBuffer
(
selector
:
string
):
T
Promis
e
<
string
[]
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
getTerminalBuffer
'
,
selector
)
);
getTerminalBuffer
(
selector
:
string
):
T
henabl
e
<
string
[]
>
{
return
this
.
channel
.
call
(
'
getTerminalBuffer
'
,
selector
);
}
writeInTerminal
(
selector
:
string
,
text
:
string
):
T
Promis
e
<
void
>
{
return
TPromise
.
wrap
(
this
.
channel
.
call
(
'
writeInTerminal
'
,
[
selector
,
text
])
);
writeInTerminal
(
selector
:
string
,
text
:
string
):
T
henabl
e
<
void
>
{
return
this
.
channel
.
call
(
'
writeInTerminal
'
,
[
selector
,
text
]
);
}
}
...
...
test/smoke/src/vscode/code.ts
浏览文件 @
a901902c
...
...
@@ -7,7 +7,7 @@ import * as path from 'path';
import
*
as
cp
from
'
child_process
'
;
import
*
as
os
from
'
os
'
;
import
{
tmpName
}
from
'
tmp
'
;
import
{
IDriver
,
connect
as
connectDriver
,
IDisposable
,
IElement
}
from
'
./driver
'
;
import
{
IDriver
,
connect
as
connectDriver
,
IDisposable
,
IElement
,
Thenable
}
from
'
./driver
'
;
import
{
Logger
}
from
'
../logger
'
;
const
repoPath
=
path
.
join
(
__dirname
,
'
../../../..
'
);
...
...
@@ -147,7 +147,7 @@ export async function spawn(options: SpawnOptions): Promise<Code> {
}
async
function
poll
<
T
>
(
fn
:
()
=>
Promis
e
<
T
>
,
fn
:
()
=>
Thenabl
e
<
T
>
,
acceptFn
:
(
result
:
T
)
=>
boolean
,
timeoutMessage
:
string
,
retryCount
:
number
=
200
,
...
...
test/smoke/tools/copy-driver-definition.js
浏览文件 @
a901902c
...
...
@@ -18,6 +18,23 @@ contents = `/*------------------------------------------------------------------
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
/**
* Thenable is a common denominator between ES6 promises, Q, jquery.Deferred, WinJS.Promise,
* and others. This API makes no assumption about what promise library is being used which
* enables reusing existing code without migrating to a specific promise implementation. Still,
* we recommend the use of native promises which are available in this editor.
*/
interface Thenable<T> {
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
* @param onrejected The callback to execute when the Promise is rejected.
* @returns A Promise for the completion of which ever callback is executed.
*/
then<TResult>(onfulfilled?: (value: T) => TResult | Thenable<TResult>, onrejected?: (reason: any) => TResult | Thenable<TResult>): Thenable<TResult>;
then<TResult>(onfulfilled?: (value: T) => TResult | Thenable<TResult>, onrejected?: (reason: any) => void): Thenable<TResult>;
}
${
contents
}
export interface IDisposable {
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录