Skip to content

Commit 229093e

Browse files
committed
debt - remove unused 'usesCommandLink' telemetry
1 parent 8414d5c commit 229093e

5 files changed

Lines changed: 8 additions & 115 deletions

File tree

src/vs/base/common/htmlContent.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
'use strict';
77

88
import { equals } from 'vs/base/common/arrays';
9-
import { marked } from 'vs/base/common/marked/marked';
109

1110
export interface IMarkdownString {
1211
value: string;
@@ -93,16 +92,3 @@ export function removeMarkdownEscapes(text: string): string {
9392
}
9493
return text.replace(/\\([\\`*_{}[\]()#+\-.!])/g, '$1');
9594
}
96-
97-
export function containsCommandLink(value: string): boolean {
98-
let uses = false;
99-
const renderer = new marked.Renderer();
100-
renderer.link = (href, title, text): string => {
101-
if (href.match(/^command:/i)) {
102-
uses = true;
103-
}
104-
return 'link';
105-
};
106-
marked(value, { renderer });
107-
return uses;
108-
}

src/vs/workbench/api/node/extHost.api.impl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export function createApiFactory(
8383

8484
// Addressable instances
8585
const extHostHeapService = threadService.set(ExtHostContext.ExtHostHeapService, new ExtHostHeapService());
86-
const extHostDocumentsAndEditors = threadService.set(ExtHostContext.ExtHostDocumentsAndEditors, new ExtHostDocumentsAndEditors(threadService, extensionService));
86+
const extHostDocumentsAndEditors = threadService.set(ExtHostContext.ExtHostDocumentsAndEditors, new ExtHostDocumentsAndEditors(threadService));
8787
const extHostDocuments = threadService.set(ExtHostContext.ExtHostDocuments, new ExtHostDocuments(threadService, extHostDocumentsAndEditors));
8888
const extHostDocumentContentProviders = threadService.set(ExtHostContext.ExtHostDocumentContentProviders, new ExtHostDocumentContentProvider(threadService, extHostDocumentsAndEditors));
8989
const extHostDocumentSaveParticipant = threadService.set(ExtHostContext.ExtHostDocumentSaveParticipant, new ExtHostDocumentSaveParticipant(extHostDocuments, threadService.get(MainContext.MainThreadEditors)));

src/vs/workbench/api/node/extHostDocumentsAndEditors.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ import Event, { Emitter } from 'vs/base/common/event';
88
import { dispose } from 'vs/base/common/lifecycle';
99
import { MainContext, ExtHostDocumentsAndEditorsShape, IDocumentsAndEditorsDelta, IMainContext } from './extHost.protocol';
1010
import { ExtHostDocumentData } from './extHostDocumentData';
11-
import { ExtHostTextEditor, ExtHostTextEditor2 } from './extHostTextEditor';
11+
import { ExtHostTextEditor } from './extHostTextEditor';
1212
import * as assert from 'assert';
1313
import * as typeConverters from './extHostTypeConverters';
14-
import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionService';
1514

1615
export class ExtHostDocumentsAndEditors implements ExtHostDocumentsAndEditorsShape {
1716

@@ -30,8 +29,7 @@ export class ExtHostDocumentsAndEditors implements ExtHostDocumentsAndEditorsSha
3029
readonly onDidChangeActiveTextEditor: Event<ExtHostTextEditor> = this._onDidChangeActiveTextEditor.event;
3130

3231
constructor(
33-
private readonly _mainContext: IMainContext,
34-
private readonly _extHostExtensions?: ExtHostExtensionService
32+
private readonly _mainContext: IMainContext
3533
) {
3634
}
3735

@@ -81,9 +79,7 @@ export class ExtHostDocumentsAndEditors implements ExtHostDocumentsAndEditorsSha
8179
assert.ok(!this._editors.has(data.id), `editor '${data.id}' already exists!`);
8280

8381
const documentData = this._documents.get(data.document.toString());
84-
const editor = new ExtHostTextEditor2(
85-
this._extHostExtensions,
86-
this._mainContext.get(MainContext.MainThreadTelemetry),
82+
const editor = new ExtHostTextEditor(
8783
this._mainContext.get(MainContext.MainThreadEditors),
8884
data.id,
8985
documentData,

src/vs/workbench/api/node/extHostLanguageFeatures.ts

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ import { MainContext, MainThreadTelemetryShape, MainThreadLanguageFeaturesShape,
2222
import { regExpLeadsToEndlessLoop } from 'vs/base/common/strings';
2323
import { IPosition } from 'vs/editor/common/core/position';
2424
import { IRange } from 'vs/editor/common/core/range';
25-
import { containsCommandLink } from 'vs/base/common/htmlContent';
2625
import { isFalsyOrEmpty } from 'vs/base/common/arrays';
27-
import { once } from 'vs/base/common/functional';
2826

2927
// --- adapter
3028

@@ -179,7 +177,6 @@ class HoverAdapter {
179177
constructor(
180178
private readonly _documents: ExtHostDocuments,
181179
private readonly _provider: vscode.HoverProvider,
182-
private readonly _telemetryLog: (name: string, data: object) => void,
183180
) {
184181
//
185182
}
@@ -200,14 +197,7 @@ class HoverAdapter {
200197
value.range = new Range(pos, pos);
201198
}
202199

203-
const result = TypeConverters.fromHover(value);
204-
205-
// we wanna know which extension uses command links
206-
// because that is a potential trick-attack on users
207-
if (result.contents.some(h => containsCommandLink(h.value))) {
208-
this._telemetryLog('usesCommandLink', { from: 'hover' });
209-
}
210-
return result;
200+
return TypeConverters.fromHover(value);
211201
});
212202
}
213203
}
@@ -878,11 +868,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape {
878868

879869
registerHoverProvider(selector: vscode.DocumentSelector, provider: vscode.HoverProvider, extensionId?: string): vscode.Disposable {
880870
const handle = this._nextHandle();
881-
this._adapter.set(handle, new HoverAdapter(this._documents, provider, once((name: string, data: any) => {
882-
data['extension'] = extensionId;
883-
// __GDPR__TODO__ Dynamic event names and dynamic properties. Can not be registered statically.
884-
this._telemetry.$publicLog(name, data);
885-
})));
871+
this._adapter.set(handle, new HoverAdapter(this._documents, provider));
886872
this._proxy.$registerHoverProvider(handle, selector);
887873
return this._createDisposable(handle);
888874
}

src/vs/workbench/api/node/extHostTextEditor.ts

Lines changed: 2 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,17 @@
66

77

88
import { ok } from 'vs/base/common/assert';
9-
import { readonly, illegalArgument, V8CallSite } from 'vs/base/common/errors';
9+
import { readonly, illegalArgument } from 'vs/base/common/errors';
1010
import { IdGenerator } from 'vs/base/common/idGenerator';
1111
import { TPromise } from 'vs/base/common/winjs.base';
1212
import { ExtHostDocumentData } from 'vs/workbench/api/node/extHostDocumentData';
1313
import { Selection, Range, Position, EndOfLine, TextEditorRevealType, TextEditorLineNumbersStyle, SnippetString } from './extHostTypes';
1414
import { ISingleEditOperation } from 'vs/editor/common/editorCommon';
1515
import * as TypeConverters from './extHostTypeConverters';
16-
import { MainThreadEditorsShape, MainThreadTelemetryShape, IResolvedTextEditorConfiguration, ITextEditorConfigurationUpdate } from './extHost.protocol';
16+
import { MainThreadEditorsShape, IResolvedTextEditorConfiguration, ITextEditorConfigurationUpdate } from './extHost.protocol';
1717
import * as vscode from 'vscode';
1818
import { TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions';
1919
import { IRange } from 'vs/editor/common/core/range';
20-
import { containsCommandLink } from 'vs/base/common/htmlContent';
21-
import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionService';
2220

2321
export class TextEditorDecorationType implements vscode.TextEditorDecorationType {
2422

@@ -552,79 +550,6 @@ export class ExtHostTextEditor implements vscode.TextEditor {
552550
}
553551
}
554552

555-
export class ExtHostTextEditor2 extends ExtHostTextEditor {
556-
557-
constructor(
558-
private readonly _extHostExtensions: ExtHostExtensionService,
559-
private readonly _mainThreadTelemetry: MainThreadTelemetryShape,
560-
proxy: MainThreadEditorsShape,
561-
id: string,
562-
document: ExtHostDocumentData,
563-
selections: Selection[],
564-
options: IResolvedTextEditorConfiguration,
565-
viewColumn: vscode.ViewColumn
566-
) {
567-
super(proxy, id, document, selections, options, viewColumn);
568-
}
569-
570-
setDecorations(decorationType: vscode.TextEditorDecorationType, rangesOrOptions: Range[] | vscode.DecorationOptions[]): void {
571-
// (1) find out if this decoration is important for us
572-
let usesCommandLink = false;
573-
outer: for (const rangeOrOption of rangesOrOptions) {
574-
if (Range.isRange(rangeOrOption)) {
575-
break;
576-
}
577-
if (typeof rangeOrOption.hoverMessage === 'string' && containsCommandLink(rangeOrOption.hoverMessage)) {
578-
usesCommandLink = true;
579-
break;
580-
} else if (Array.isArray(rangeOrOption.hoverMessage)) {
581-
for (const message of rangeOrOption.hoverMessage) {
582-
if (typeof message === 'string' && containsCommandLink(message)) {
583-
usesCommandLink = true;
584-
break outer;
585-
}
586-
}
587-
}
588-
}
589-
// (2) send event for important decorations
590-
if (usesCommandLink) {
591-
let tag = new Error();
592-
this._extHostExtensions.getExtensionPathIndex().then(index => {
593-
const oldHandler = (<any>Error).prepareStackTrace;
594-
(<any>Error).prepareStackTrace = (error: Error, stackTrace: V8CallSite[]) => {
595-
for (const call of stackTrace) {
596-
const extension = index.findSubstr(call.getFileName());
597-
if (extension) {
598-
/* __GDPR__
599-
"usesCommandLink" : {
600-
"extension" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
601-
"from": { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
602-
"${include}": [
603-
"${MainThreadData}"
604-
]
605-
}
606-
*/
607-
this._mainThreadTelemetry.$publicLog('usesCommandLink', {
608-
extension: extension.id,
609-
from: 'decoration',
610-
});
611-
return;
612-
}
613-
}
614-
};
615-
// it all happens here...
616-
// tslint:disable-next-line:no-unused-expression
617-
tag.stack;
618-
(<any>Error).prepareStackTrace = oldHandler;
619-
});
620-
}
621-
622-
// (3) do it
623-
super.setDecorations(decorationType, rangesOrOptions);
624-
}
625-
}
626-
627-
628553
function warnOnError(promise: TPromise<any>): void {
629554
promise.then(null, (err) => {
630555
console.warn(err);

0 commit comments

Comments
 (0)