Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
2eb2bca3
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,发现更多精彩内容 >>
提交
2eb2bca3
编写于
4月 18, 2016
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
make TelemetryAppender registry extension'ish having an active method
上级
619ef444
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
27 addition
and
41 deletion
+27
-41
src/vs/platform/telemetry/common/telemetry.ts
src/vs/platform/telemetry/common/telemetry.ts
+20
-31
src/vs/platform/telemetry/test/node/telemetryService.test.ts
src/vs/platform/telemetry/test/node/telemetryService.test.ts
+4
-5
src/vs/workbench/browser/workbench.ts
src/vs/workbench/browser/workbench.ts
+1
-1
src/vs/workbench/parts/telemetry/node/appInsights.telemetry.contribution.ts
...arts/telemetry/node/appInsights.telemetry.contribution.ts
+2
-4
未找到文件。
src/vs/platform/telemetry/common/telemetry.ts
浏览文件 @
2eb2bca3
...
...
@@ -4,11 +4,10 @@
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
{
Registry
}
from
'
vs/platform/platform
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
ITimerEvent
,
nullEvent
}
from
'
vs/base/common/timer
'
;
import
{
createDecorator
,
ServiceIdentifier
,
IInstantiationService
,
IConstructorSignature0
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
createDecorator
,
ServiceIdentifier
,
IInstantiationService
,
ServicesAccessor
,
IConstructorSignature0
}
from
'
vs/platform/instantiation/common/instantiation
'
;
export
const
ITelemetryService
=
createDecorator
<
ITelemetryService
>
(
'
telemetryService
'
);
...
...
@@ -37,12 +36,28 @@ export interface ITelemetryService {
addTelemetryAppender
(
appender
:
ITelemetryAppender
):
IDisposable
;
}
export
const
Extenstions
=
{
TelemetryAppenders
:
'
telemetry.appenders
'
export
namespace
Extenstions
{
let
_telemetryAppenderCtors
:
IConstructorSignature0
<
ITelemetryAppender
>
[]
=
[];
export
const
TelemetryAppenders
=
{
activate
(
accessor
:
ServicesAccessor
):
void
{
const
telemetryService
=
accessor
.
get
(
ITelemetryService
);
const
instantiationService
=
accessor
.
get
(
IInstantiationService
);
for
(
let
ctor
of
_telemetryAppenderCtors
)
{
const
instance
=
instantiationService
.
createInstance
(
ctor
);
telemetryService
.
addTelemetryAppender
(
instance
);
}
// can only be done once
_telemetryAppenderCtors
=
undefined
;
},
registerTelemetryAppenderDescriptor
(
ctor
:
IConstructorSignature0
<
ITelemetryAppender
>
):
void
{
_telemetryAppenderCtors
.
push
(
ctor
);
}
};
};
export
interface
ITelemetryAppendersRegistry
{
registerTelemetryAppenderDescriptor
(
ctor
:
IConstructorSignature0
<
ITelemetryAppender
>
):
void
;
activate
(
instantiationService
:
IInstantiationService
):
void
;
}
...
...
@@ -64,32 +79,6 @@ export interface ITelemetryAppender extends IDisposable {
log
(
eventName
:
string
,
data
?:
any
):
void
;
}
export
class
TelemetryAppendersRegistry
implements
ITelemetryAppendersRegistry
{
private
_telemetryAppenderCtors
:
IConstructorSignature0
<
ITelemetryAppender
>
[];
constructor
()
{
this
.
_telemetryAppenderCtors
=
[];
}
public
registerTelemetryAppenderDescriptor
(
ctor
:
IConstructorSignature0
<
ITelemetryAppender
>
):
void
{
this
.
_telemetryAppenderCtors
.
push
(
ctor
);
}
public
activate
(
instantiationService
:
IInstantiationService
):
void
{
const
service
=
instantiationService
.
getInstance
(
ITelemetryService
);
for
(
let
ctor
of
this
.
_telemetryAppenderCtors
)
{
const
instance
=
instantiationService
.
createInstance
(
ctor
);
service
.
addTelemetryAppender
(
instance
);
}
// can only be done once
this
.
_telemetryAppenderCtors
=
undefined
;
}
}
Registry
.
add
(
Extenstions
.
TelemetryAppenders
,
new
TelemetryAppendersRegistry
());
// --- util
export
function
anonymize
(
input
:
string
):
string
{
...
...
src/vs/platform/telemetry/test/node/telemetryService.test.ts
浏览文件 @
2eb2bca3
...
...
@@ -175,8 +175,7 @@ suite('TelemetryService', () => {
test
(
'
TelemetryAppendersRegistry, activate
'
,
function
()
{
let
registry
=
new
Telemetry
.
TelemetryAppendersRegistry
();
registry
.
registerTelemetryAppenderDescriptor
(
TestTelemetryAppender
);
Telemetry
.
Extenstions
.
TelemetryAppenders
.
registerTelemetryAppenderDescriptor
(
TestTelemetryAppender
);
let
callCount
=
0
;
let
telemetryService
:
Telemetry
.
ITelemetryService
=
<
any
>
{
...
...
@@ -188,12 +187,12 @@ suite('TelemetryService', () => {
let
instantiationService
=
InstantiationService
.
createInstantiationService
();
instantiationService
.
addSingleton
(
Telemetry
.
ITelemetryService
,
telemetryService
);
registry
.
activate
(
instantiationServic
e
);
instantiationService
.
invokeFunction
(
Telemetry
.
Extenstions
.
TelemetryAppenders
.
activat
e
);
assert
.
equal
(
callCount
,
1
);
// registry is now active/read-only
assert
.
throws
(()
=>
registry
.
registerTelemetryAppenderDescriptor
(
TestTelemetryAppender
));
assert
.
throws
(()
=>
registry
.
activate
(
instantiationServic
e
));
assert
.
throws
(()
=>
Telemetry
.
Extenstions
.
TelemetryAppenders
.
registerTelemetryAppenderDescriptor
(
TestTelemetryAppender
));
assert
.
throws
(()
=>
instantiationService
.
invokeFunction
(
Telemetry
.
Extenstions
.
TelemetryAppenders
.
activat
e
));
});
test
(
'
Disposing
'
,
sinon
.
test
(
function
()
{
...
...
src/vs/workbench/browser/workbench.ts
浏览文件 @
2eb2bca3
...
...
@@ -427,7 +427,7 @@ export class Workbench implements IPartService {
<
IWorkbenchContributionsRegistry
>
Registry
.
as
(
WorkbenchExtensions
.
Workbench
).
setInstantiationService
(
this
.
instantiationService
);
<
IEditorRegistry
>
Registry
.
as
(
EditorExtensions
.
Editors
).
setInstantiationService
(
this
.
instantiationService
);
Registry
.
as
<
{
activate
(
s
:
IInstantiationService
):
void
}
>
(
TelemetryExtensions
.
TelemetryAppenders
).
activate
(
this
.
instantiationServic
e
);
this
.
instantiationService
.
invokeFunction
(
TelemetryExtensions
.
TelemetryAppenders
.
activat
e
);
}
private
initSettings
():
void
{
...
...
src/vs/workbench/parts/telemetry/node/appInsights.telemetry.contribution.ts
浏览文件 @
2eb2bca3
...
...
@@ -5,9 +5,7 @@
'
use strict
'
;
import
Platform
=
require
(
'
vs/platform/platform
'
);
import
{
Extenstions
,
ITelemetryAppendersRegistry
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
Extenstions
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
AppInsightsTelemetryAppender
=
require
(
'
vs/workbench/parts/telemetry/node/nodeAppInsightsTelemetryAppender
'
);
Platform
.
Registry
.
as
<
ITelemetryAppendersRegistry
>
(
Extenstions
.
TelemetryAppenders
)
.
registerTelemetryAppenderDescriptor
(
AppInsightsTelemetryAppender
.
NodeAppInsightsTelemetryAppender
);
\ No newline at end of file
Extenstions
.
TelemetryAppenders
.
registerTelemetryAppenderDescriptor
(
AppInsightsTelemetryAppender
.
NodeAppInsightsTelemetryAppender
);
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录