Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding GDPR annotations #34997

Merged
merged 39 commits into from
Sep 26, 2017
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
72dfa6c
classify common properties
kieferrm Sep 4, 2017
858d465
first batch events
kieferrm Sep 4, 2017
02b6db0
gdpr tooling
kieferrm Sep 4, 2017
94667ec
update snippets
kieferrm Sep 5, 2017
8671fe5
parse source comments
kieferrm Sep 6, 2017
d1e4c64
fix GDPR value
kieferrm Sep 7, 2017
0be8478
remove unused files
kieferrm Sep 7, 2017
cc1255c
more GDPR classification
kieferrm Sep 8, 2017
370f1e7
fix typo
kieferrm Sep 8, 2017
b059271
fix typo
kieferrm Sep 8, 2017
d821c08
fix typo
kieferrm Sep 8, 2017
ca8b412
more GDPR classification
kieferrm Sep 8, 2017
c28edb3
more GDPR classification
kieferrm Sep 8, 2017
7ee4c75
correct typos
kieferrm Sep 8, 2017
e1c04e5
more GDPR classification
kieferrm Sep 8, 2017
fb2da69
correct typos
kieferrm Sep 8, 2017
4f873b7
correct property names
kieferrm Sep 8, 2017
d54487e
replace invalid value
kieferrm Sep 8, 2017
fcd85f4
inline values
kieferrm Sep 9, 2017
f885522
change wildcard property
kieferrm Sep 12, 2017
1d7b0a2
use wildcard for files.joined
kieferrm Sep 12, 2017
f691cfe
classification for TS extension
kieferrm Sep 18, 2017
9cceab0
gdpr classification for markdown extension
kieferrm Sep 18, 2017
47000c3
GDPR classification for git extension
kieferrm Sep 19, 2017
f0e9b12
GDPR classification for save participants
kieferrm Sep 19, 2017
b4c594a
GDPR classify timer2 on IStartupMetrics
kieferrm Sep 19, 2017
da1fc46
review GDPR classifications
kieferrm Sep 19, 2017
8550b03
correct wildcard usage
kieferrm Sep 19, 2017
dca73b7
omit endPoint where it defaults to none
kieferrm Sep 20, 2017
15e6a82
GDPR comments
kieferrm Sep 23, 2017
8d48ed8
update GDPR todos
kieferrm Sep 25, 2017
146f868
fixing classification
kieferrm Sep 25, 2017
d5604cf
update extension install, update and uninstall events
kieferrm Sep 25, 2017
905eca3
add description for new common property
kieferrm Sep 25, 2017
15a5efc
formatting change
kieferrm Sep 25, 2017
3c70c36
indentation changes
kieferrm Sep 25, 2017
955adbf
add missing commas
kieferrm Sep 26, 2017
5aa3360
fix typos
kieferrm Sep 26, 2017
112f9a5
fix searchResultsShown event
kieferrm Sep 26, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
more GDPR classification
  • Loading branch information
kieferrm committed Sep 25, 2017
commit ca8b4121837dd8e747f56329d2ee94fd66ba84e0
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,12 @@ export class ExtensionService implements IExtensionService {
...this._extensionEnablementService.getWorkspaceDisabledExtensions()
];

/* __GDPR__
"extensionsScanned" : {
"totalCount" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
"disabledCount": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }
}
*/
this._telemetryService.publicLog('extensionsScanned', {
totalCount: installedExtensions.length,
disabledCount: disabledExtensions.length
Expand Down Expand Up @@ -347,6 +353,14 @@ export class ExtensionService implements IExtensionService {

if (!this._isDev && msg.extensionId) {
const { type, extensionId, extensionPointId, message } = msg;
/* __GDPR__
"extensionsMessage" : {
"type" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
"extensionId": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
"extensionPointId": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
"message": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }
}
*/
this._telemetryService.publicLog('extensionsMessage', {
type, extensionId, extensionPointId, message
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,11 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {

keybindingsTelemetry(telemetryService, this);
let data = KeyboardMapperFactory.INSTANCE.getCurrentKeyboardLayout();
/* __GDPR__
"keyboardLayout" : {
"currentKeyboardLayout" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
telemetryService.publicLog('keyboardLayout', {
currentKeyboardLayout: data
});
Expand Down Expand Up @@ -405,6 +410,11 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
if (!isFirstTime) {
let cnt = extraUserKeybindings.length;

/* __GDPR__
"customKeybindingsChanged" : {
"keyCount" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('customKeybindingsChanged', {
keyCount: cnt
});
Expand Down
6 changes: 6 additions & 0 deletions src/vs/workbench/services/message/browser/messageList.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,12 @@ export class MessageList {

DOM.EventHelper.stop(e, true);

/* __GDPR__
"workbenchActionExecuted" : {
"id" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"from": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('workbenchActionExecuted', { id: action.id, from: 'message' });

(action.run() || TPromise.as(null))
Expand Down
67 changes: 66 additions & 1 deletion src/vs/workbench/services/telemetry/common/workspaceStats.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,34 @@ export class WorkspaceStats {
return arr.some(v => v.search(regEx) > -1) || undefined;
}

/* __GDPR__FRAGMENT__
"WorkspaceTags" : {
"workbench.filesToOpen" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"workbench.filesToCreate" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"workbench.filesToDiff" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"workbench.roots" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.empty" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.grunt" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.gulp" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.jake" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.tsconfig" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.jsconfig" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.config.xml" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.vsc.extension" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.ASP5" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.sln" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.unity" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.npm" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.bower" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.yeoman.code.ext" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.cordova.high" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.cordova.low" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.xamarin.android" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.xamarin.ios" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.android.cpp" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" },
"workbench.reactNative" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" }
}
*/
private getWorkspaceTags(configuration: IWindowConfiguration): TPromise<Tags> {
const tags: Tags = Object.create(null);

Expand Down Expand Up @@ -245,6 +273,13 @@ export class WorkspaceStats {

public reportWorkspaceTags(configuration: IWindowConfiguration): void {
this.getWorkspaceTags(configuration).then((tags) => {
/* __GDPR__
"workspace.tags" : {
"${include}": [
"${WorkspaceTags}"
]
}
*/
this.telemetryService.publicLog('workspce.tags', tags);
}, error => onUnexpectedError(error));
}
Expand All @@ -261,6 +296,11 @@ export class WorkspaceStats {
const set = domains.reduce((set, list) => list.reduce((set, item) => set.add(item), set), new Set<string>());
const list: string[] = [];
set.forEach(item => list.push(item));
/* __GDPR__
"workspace.remotes" : {
"domains" : { "endPoint": "none", "classification": "CustomerContent", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('workspace.remotes', { domains: list.sort() });
}, onUnexpectedError);
}
Expand All @@ -273,9 +313,21 @@ export class WorkspaceStats {
content => getHashedRemotes(content.value),
err => [] // ignore missing or binary file
);
})).then(hashedRemotes => this.telemetryService.publicLog('workspace.hashedRemotes', { remotes: hashedRemotes }), onUnexpectedError);
})).then(hashedRemotes => {
/* __GDPR__
"workspace.hashedRemotes" : {
"remotes" : { "endPoint": "none", "classification": "CustomerData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('workspace.hashedRemotes', { remotes: hashedRemotes });
}, onUnexpectedError);
}

/* __GDPR__FRAGMENT__
"AzureTags" : {
"node" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
private reportAzureNode(workspaceUris: URI[], tags: Tags): TPromise<Tags> {
// TODO: should also work for `node_modules` folders several levels down
const uris = workspaceUris.map(workspaceUri => {
Expand All @@ -296,6 +348,12 @@ export class WorkspaceStats {
});
}


/* __GDPR__FRAGMENT__
"AzureTags" : {
"java" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
private reportAzureJava(workspaceUris: URI[], tags: Tags): TPromise<Tags> {
return TPromise.join(workspaceUris.map(workspaceUri => {
const path = workspaceUri.path;
Expand All @@ -318,6 +376,13 @@ export class WorkspaceStats {
return this.reportAzureJava(uris, tags);
}).then((tags) => {
if (Object.keys(tags).length) {
/* __GDPR__
"workspace.azure" : {
"${include}": [
"${AzureTags}"
]
}
*/
this.telemetryService.publicLog('workspace.azure', tags);
}
}).then(null, onUnexpectedError);
Expand Down
16 changes: 16 additions & 0 deletions src/vs/workbench/services/textfile/common/textFileEditorModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,13 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
diag('load() - resolved content', this.resource, new Date());

// Telemetry
/* __GDPR__
"fileGet" : {
"mimeType" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"ext": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"path": { "endPoint": "none", "classification": "CustomerContent", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('fileGet', { mimeType: guessMimeTypes(this.resource.fsPath).join(', '), ext: paths.extname(this.resource.fsPath), path: anonymize(this.resource.fsPath) });

// Update our resolved disk stat model
Expand Down Expand Up @@ -698,8 +705,17 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil

// Telemetry
if (this.isSettingsFile()) {
/* __GDPR__
"settingsWritten" : {}
*/
this.telemetryService.publicLog('settingsWritten'); // Do not log write to user settings.json and .vscode folder as a filePUT event as it ruins our JSON usage data
} else {
/* __GDPR__
"filePUT" : {
"mimeType" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"ext": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('filePUT', { mimeType: guessMimeTypes(this.resource.fsPath).join(', '), ext: paths.extname(this.lastResolvedDiskStat.resource.fsPath) });
}

Expand Down
14 changes: 14 additions & 0 deletions src/vs/workbench/services/textfile/common/textFileService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,13 @@ export abstract class TextFileService implements ITextFileService {

this.onConfigurationChange(configuration);

/* __GDPR__
"autoSave" : {
"${include}": [
"${IAutoSaveConfiguration}"
]
}
*/
this.telemetryService.publicLog('autoSave', this.getAutoSaveConfiguration());

this.registerListeners();
Expand Down Expand Up @@ -211,6 +218,13 @@ export abstract class TextFileService implements ITextFileService {
}

// Telemetry
/* __GDPR__
"hotExit:triggered" : {
"reason" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"windowCount": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"fileCount": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('hotExit:triggered', { reason, windowCount, fileCount: dirtyToBackup.length });

// Backup
Expand Down
8 changes: 8 additions & 0 deletions src/vs/workbench/services/textfile/common/textfiles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,14 @@ export interface IResult {
success?: boolean;
}

/* __GDPR__FRAGMENT__
"IAutoSaveConfiguration" : {
"autoSaveDelay" : { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"autoSaveFocusChange": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"autoSaveApplicationChange": { "endPoint": "none", "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/

export interface IAutoSaveConfiguration {
autoSaveDelay: number;
autoSaveFocusChange: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,15 @@ export class WorkbenchThemeService implements IWorkbenchThemeService {
if (themeData) {
let key = themeType + themeData.extensionId;
if (!this.themeExtensionsActivated.get(key)) {
/* __GDPR__
"activatePlugin" : {
"id" : { "endPoint": "none", "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" },
"name": { "endPoint": "none", "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" },
"isBuiltin": { "endPoint": ",none", "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"publisherDisplayName": { "endPoint": "none", "classification": "PublicPersonalData", "purpose": "FeatureInsight" },
"themeId": { "endPoint": "none", "classification": "PublicNonPersonalData", "purpose": "FeatureInsight" }
}
*/
this.telemetryService.publicLog('activatePlugin', {
id: themeData.extensionId,
name: themeData.extensionName,
Expand Down