@@ -25,10 +25,10 @@ module TelemetryEvents =
25
25
let LanguageServiceStarted = " languageservicestarted"
26
26
27
27
[<Literal>]
28
- let GetSymbolUsesInProjectsStarted = " getSymbolUsesInProjectsStarted "
28
+ let GetSymbolUsesInProjectsStarted = " getsymbolusesinprojectsstarted "
29
29
30
30
[<Literal>]
31
- let GetSymbolUsesInProjectsFinished = " getSymbolUsesInProjectsFinished "
31
+ let GetSymbolUsesInProjectsFinished = " getsymbolusesinprojectsfinished "
32
32
33
33
[<Literal>]
34
34
let AddSyntacticCalssifications = " addsyntacticclassifications"
@@ -42,6 +42,12 @@ module TelemetryEvents =
42
42
[<Literal>]
43
43
let ProvideCompletions = " providecompletions"
44
44
45
+ [<Literal>]
46
+ let GoToDefinition = " gotodefinition"
47
+
48
+ [<Literal>]
49
+ let GoToDefinitionGetSymbol = " gotodefinition/getsymbol"
50
+
45
51
// TODO: needs to be something more sophisticated in future
46
52
[<Struct; RequireQualifiedAccess; NoComparison; NoEquality>]
47
53
type TelemetryThrottlingStrategy =
@@ -92,26 +98,44 @@ type TelemetryReporter private (name: string, props: (string * obj) array, stopw
92
98
( let componentModel =
93
99
Package.GetGlobalService( typeof< ComponentModelHost.SComponentModel>) :?> ComponentModelHost.IComponentModel
94
100
95
- if componentModel = null then
101
+ if isNull componentModel then
96
102
TelemetryService.DefaultSession.IsUserMicrosoftInternal
97
103
else
98
104
let workspace = componentModel.GetService< VisualStudioWorkspace>()
99
- workspace.Services.GetService< EditorOptions>() .Advanced.SendAdditionalTelemetry)
105
+
106
+ TelemetryService.DefaultSession.IsUserMicrosoftInternal
107
+ || workspace.Services.GetService< EditorOptions>() .Advanced.SendAdditionalTelemetry)
108
+
109
+ static member ReportFault ( name , ? severity : FaultSeverity , ? e : exn ) =
110
+ if TelemetryReporter.SendAdditionalTelemetry.Value then
111
+ let faultName = String.Concat( name, " /fault" )
112
+
113
+ match severity, e with
114
+ | Some s, Some e -> TelemetryService.DefaultSession.PostFault( faultName, name, s, e)
115
+ | None, Some e -> TelemetryService.DefaultSession.PostFault( faultName, name, e)
116
+ | Some s, None -> TelemetryService.DefaultSession.PostFault( faultName, name, s)
117
+ | None, None -> TelemetryService.DefaultSession.PostFault( faultName, name)
118
+ |> ignore
119
+
120
+ static member ReportCustomFailure ( name , ? props ) =
121
+ if TelemetryReporter.SendAdditionalTelemetry.Value then
122
+ let props = defaultArg props [||]
123
+ let name = String.Concat( name, " /failure" )
124
+ let event = TelemetryReporter.createEvent name props
125
+ TelemetryService.DefaultSession.PostEvent event
100
126
101
127
static member ReportSingleEvent ( name , props ) =
102
- let event = TelemetryReporter.createEvent name props
103
- TelemetryService.DefaultSession.PostEvent event
128
+ if TelemetryReporter.SendAdditionalTelemetry.Value then
129
+ let event = TelemetryReporter.createEvent name props
130
+ TelemetryService.DefaultSession.PostEvent event
104
131
105
132
// A naïve implementation using stopwatch and returning an IDisposable
106
133
// TODO: needs a careful review, since it will be a hot path when we are sending telemetry
107
134
static member ReportSingleEventWithDuration ( name , props , ? throttlingStrategy ) : IDisposable =
108
135
109
136
let additionalTelemetryEnabled = TelemetryReporter.SendAdditionalTelemetry.Value
110
137
111
- let isUserMicrosoftInternal =
112
- TelemetryService.DefaultSession.IsUserMicrosoftInternal
113
-
114
- if additionalTelemetryEnabled || isUserMicrosoftInternal then
138
+ if additionalTelemetryEnabled then
115
139
let throttlingStrategy =
116
140
defaultArg throttlingStrategy TelemetryThrottlingStrategy.Default
117
141
0 commit comments