mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-10 16:58:55 -05:00
Merge pull request #29348 from Microsoft/amqi/experiment-1-4
Remove task experiment 1.4
This commit is contained in:
@@ -23,7 +23,6 @@ export interface ITelemetryData {
|
||||
|
||||
export interface ITelemetryExperiments {
|
||||
mergeQuickLinks: boolean;
|
||||
showTaskDocumentation: boolean;
|
||||
}
|
||||
|
||||
export interface ITelemetryService {
|
||||
|
||||
@@ -18,7 +18,6 @@ import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation
|
||||
|
||||
export const defaultExperiments: ITelemetryExperiments = {
|
||||
mergeQuickLinks: false,
|
||||
showTaskDocumentation: true
|
||||
};
|
||||
|
||||
export const NullTelemetryService = {
|
||||
@@ -46,12 +45,10 @@ export function loadExperiments(accessor: ServicesAccessor): ITelemetryExperimen
|
||||
|
||||
let {
|
||||
mergeQuickLinks,
|
||||
showTaskDocumentation,
|
||||
} = splitExperimentsRandomness(storageService);
|
||||
|
||||
return applyOverrides({
|
||||
mergeQuickLinks,
|
||||
showTaskDocumentation,
|
||||
}, configurationService);
|
||||
}
|
||||
|
||||
@@ -67,14 +64,13 @@ function applyOverrides(experiments: ITelemetryExperiments, configurationService
|
||||
|
||||
function splitExperimentsRandomness(storageService: IStorageService): ITelemetryExperiments {
|
||||
const random1 = getExperimentsRandomness(storageService);
|
||||
const [random2, showTaskDocumentation] = splitRandom(random1);
|
||||
const [random2, /* showTaskDocumentation */] = splitRandom(random1);
|
||||
const [random3, /* openUntitledFile */] = splitRandom(random2);
|
||||
const [random4, mergeQuickLinks] = splitRandom(random3);
|
||||
// tslint:disable-next-line:no-unused-variable (https://github.com/Microsoft/TypeScript/issues/16628)
|
||||
const [random5, /* enableWelcomePage */] = splitRandom(random4);
|
||||
return {
|
||||
mergeQuickLinks,
|
||||
showTaskDocumentation,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import nls = require('vs/nls');
|
||||
import { Action } from 'vs/base/common/actions';
|
||||
import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen';
|
||||
import { IConfigurationService } from "vs/platform/configuration/common/configuration";
|
||||
|
||||
export const ALL_COMMANDS_PREFIX = '>';
|
||||
|
||||
export class ShowTasksAction extends Action {
|
||||
|
||||
public static ID = 'workbench.action.showTasks';
|
||||
public static LABEL = nls.localize('showTasks', "Show task menu");
|
||||
|
||||
constructor(
|
||||
id: string,
|
||||
label: string,
|
||||
@IQuickOpenService private quickOpenService: IQuickOpenService,
|
||||
@IConfigurationService private configurationService: IConfigurationService
|
||||
) {
|
||||
super(id, label);
|
||||
}
|
||||
|
||||
public run(context?: any): TPromise<any> {
|
||||
const value = `${ALL_COMMANDS_PREFIX}tasks`;
|
||||
this.quickOpenService.show(value);
|
||||
|
||||
return TPromise.as(null);
|
||||
}
|
||||
}
|
||||
|
||||
export class ShowTasksDocumentationAction extends Action {
|
||||
|
||||
public static ID = 'workbench.action.showTaskDocumentation';
|
||||
public static LABEL = nls.localize('showTaskDocumentation', "Show task documentation");
|
||||
|
||||
constructor(
|
||||
id: string,
|
||||
label: string,
|
||||
) {
|
||||
super(id, label);
|
||||
}
|
||||
|
||||
public run(context?: any): TPromise<any> {
|
||||
window.open('https://go.microsoft.com/fwlink/?LinkId=733558');
|
||||
return TPromise.as(null);
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ import { parseArgs } from 'vs/platform/environment/node/argv';
|
||||
import { IWorkspaceContextService, Workspace } from 'vs/platform/workspace/common/workspace';
|
||||
import { EnvironmentService } from 'vs/platform/environment/node/environmentService';
|
||||
import extfs = require('vs/base/node/extfs');
|
||||
import { TestTextFileService, TestEditorGroupService, TestLifecycleService, TestBackupFileService, TestStorageService } from 'vs/workbench/test/workbenchTestServices';
|
||||
import { TestTextFileService, TestEditorGroupService, TestLifecycleService, TestBackupFileService } from 'vs/workbench/test/workbenchTestServices';
|
||||
import uuid = require('vs/base/common/uuid');
|
||||
import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { WorkspaceConfigurationService } from 'vs/workbench/services/configuration/node/configuration';
|
||||
@@ -44,7 +44,6 @@ import { ModeServiceImpl } from 'vs/editor/common/services/modeServiceImpl';
|
||||
import { IModelService } from 'vs/editor/common/services/modelService';
|
||||
import { ModelServiceImpl } from 'vs/editor/common/services/modelServiceImpl';
|
||||
import { IChoiceService, IMessageService } from 'vs/platform/message/common/message';
|
||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||
import { TestConfigurationService } from "vs/platform/configuration/test/common/testConfigurationService";
|
||||
|
||||
class SettingsTestEnvironmentService extends EnvironmentService {
|
||||
@@ -128,12 +127,6 @@ suite('ConfigurationEditingService', () => {
|
||||
instantiationService.stub(IModelService, instantiationService.createInstance(ModelServiceImpl));
|
||||
instantiationService.stub(IFileService, new FileService(workspaceService, new TestConfigurationService(), { disableWatcher: true }));
|
||||
instantiationService.stub(IUntitledEditorService, instantiationService.createInstance(UntitledEditorService));
|
||||
instantiationService.stub(IStorageService, new TestStorageService());
|
||||
instantiationService.stub(IChoiceService, {
|
||||
choose: (severity, message, options, cancelId): TPromise<number> => {
|
||||
return TPromise.as(cancelId);
|
||||
}
|
||||
});
|
||||
instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService));
|
||||
instantiationService.stub(ITextModelService, <ITextModelService>instantiationService.createInstance(TextModelResolverService));
|
||||
instantiationService.stub(IBackupFileService, new TestBackupFileService());
|
||||
|
||||
@@ -17,7 +17,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { KeyCode, SimpleKeybinding, ChordKeybinding } from 'vs/base/common/keyCodes';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import extfs = require('vs/base/node/extfs');
|
||||
import { TestTextFileService, TestEditorGroupService, TestLifecycleService, TestBackupFileService, TestContextService, TestStorageService } from 'vs/workbench/test/workbenchTestServices';
|
||||
import { TestTextFileService, TestEditorGroupService, TestLifecycleService, TestBackupFileService, TestContextService } from 'vs/workbench/test/workbenchTestServices';
|
||||
import { IWorkspaceContextService, Workspace } from 'vs/platform/workspace/common/workspace';
|
||||
import uuid = require('vs/base/common/uuid');
|
||||
import { ConfigurationService } from 'vs/platform/configuration/node/configurationService';
|
||||
@@ -42,8 +42,6 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { KeybindingsEditingService } from 'vs/workbench/services/keybinding/common/keybindingEditing';
|
||||
import { IUserFriendlyKeybinding } from 'vs/platform/keybinding/common/keybinding';
|
||||
import { ResolvedKeybindingItem } from 'vs/platform/keybinding/common/resolvedKeybindingItem';
|
||||
import { IChoiceService } from 'vs/platform/message/common/message';
|
||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||
import { TestConfigurationService } from "vs/platform/configuration/test/common/testConfigurationService";
|
||||
|
||||
interface Modifiers {
|
||||
@@ -70,12 +68,6 @@ suite('Keybindings Editing', () => {
|
||||
instantiationService.stub(IConfigurationService, ConfigurationService);
|
||||
instantiationService.stub(IConfigurationService, 'getConfiguration', { 'eol': '\n' });
|
||||
instantiationService.stub(IConfigurationService, 'onDidUpdateConfiguration', () => { });
|
||||
instantiationService.stub(IStorageService, new TestStorageService());
|
||||
instantiationService.stub(IChoiceService, {
|
||||
choose: (severity, message, options, cancelId): TPromise<number> => {
|
||||
return TPromise.as(cancelId);
|
||||
}
|
||||
});
|
||||
instantiationService.stub(IWorkspaceContextService, new TestContextService());
|
||||
instantiationService.stub(ILifecycleService, new TestLifecycleService());
|
||||
instantiationService.stub(IEditorGroupService, new TestEditorGroupService());
|
||||
|
||||
@@ -27,20 +27,14 @@ import { BaseTextEditorModel } from 'vs/workbench/common/editor/textEditorModel'
|
||||
import { IBackupFileService, BACKUP_FILE_RESOLVE_OPTIONS } from 'vs/workbench/services/backup/common/backup';
|
||||
import { IFileService, IFileStat, IFileOperationResult, FileOperationResult, IContent, CONTENT_CHANGE_EVENT_BUFFER_DELAY, FileChangesEvent, FileChangeType } from 'vs/platform/files/common/files';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { IMessageService, Severity, IChoiceService } from 'vs/platform/message/common/message';
|
||||
import { IMessageService, Severity } from 'vs/platform/message/common/message';
|
||||
import { IModeService } from 'vs/editor/common/services/modeService';
|
||||
import { IModelService } from 'vs/editor/common/services/modelService';
|
||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { anonymize } from 'vs/platform/telemetry/common/telemetryUtils';
|
||||
import { RunOnceScheduler } from 'vs/base/common/async';
|
||||
import { IRawTextSource } from 'vs/editor/common/model/textSource';
|
||||
import { StorageScope, IStorageService } from 'vs/platform/storage/common/storage';
|
||||
import { localize } from 'vs/nls';
|
||||
import { Action } from 'vs/base/common/actions';
|
||||
|
||||
// TODO@Rob layer breaker
|
||||
// tslint:disable-next-line:import-patterns
|
||||
import { ShowTasksAction, ShowTasksDocumentationAction } from 'vs/workbench/parts/quickopen/common/quickopenActions';
|
||||
/**
|
||||
* The text file editor model listens to changes to its underlying code editor model and saves these changes through the file service back to the disk.
|
||||
*/
|
||||
@@ -93,8 +87,6 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
|
||||
@IBackupFileService private backupFileService: IBackupFileService,
|
||||
@IEnvironmentService private environmentService: IEnvironmentService,
|
||||
@IWorkspaceContextService private contextService: IWorkspaceContextService,
|
||||
@IChoiceService private choiceService: IChoiceService,
|
||||
@IStorageService private storageService: IStorageService
|
||||
) {
|
||||
super(modelService, modeService);
|
||||
|
||||
@@ -328,58 +320,7 @@ export class TextFileEditorModel extends BaseTextEditorModel implements ITextFil
|
||||
// Resolve Content
|
||||
return this.textFileService
|
||||
.resolveTextContent(this.resource, { acceptTextOnly: true, etag, encoding: this.preferredEncoding })
|
||||
.then(content => this.handleLoadSuccess(content), error => this.handleLoadError(error))
|
||||
.then((result) => {
|
||||
this.showTaskNotification();
|
||||
return result;
|
||||
});
|
||||
}
|
||||
|
||||
private showTaskNotification(): void {
|
||||
const storageKey = 'workbench.tasks.ranTaskBefore';
|
||||
const ignoreKey = 'workbench.tasks.ignoreTaskNotification';
|
||||
if (!this.storageService.get(ignoreKey) && !this.storageService.get(storageKey) && this.contextService.getWorkspace2()
|
||||
&& this.contextService.getWorkspace2().roots && this.contextService.getWorkspace2().roots.length > 0) {
|
||||
const fileName = path.relative(this.contextService.getWorkspace2().roots[0].toString(), this.resource.toString());
|
||||
if (fileName.match(/^gruntfile\.js$/i) || fileName.match(/^gulpfile\.js$/i) || fileName.match(/^tsconfig\.json$/i)) {
|
||||
const message = localize('taskFileOpened', `Run your {0} in VS Code. Get started here.`, fileName.split('.')[0]);
|
||||
let action: Action;
|
||||
let messageTest: string;
|
||||
const showDocumentation = this.telemetryService.getExperiments().showTaskDocumentation;
|
||||
if (showDocumentation) {
|
||||
action = this.instantiationService.createInstance(ShowTasksDocumentationAction, ShowTasksDocumentationAction.ID, localize('showTaskDocumentation', "Show task Documentation"));
|
||||
messageTest = ShowTasksDocumentationAction.LABEL;
|
||||
} else {
|
||||
action = this.instantiationService.createInstance(ShowTasksAction, ShowTasksAction.ID, localize('showTasks', "Show tasks"));
|
||||
messageTest = ShowTasksAction.LABEL;
|
||||
}
|
||||
const options = [
|
||||
messageTest,
|
||||
localize('neverShowAgain', "Don't show again"),
|
||||
localize('close', "Close")
|
||||
];
|
||||
|
||||
this.choiceService.choose(Severity.Info, message, options, 2).done(choice => {
|
||||
switch (choice) {
|
||||
case 0: {
|
||||
this.telemetryService.publicLog('taskNotificationOptionChoice',
|
||||
{ choice: 0, test: showDocumentation });
|
||||
return action.run();
|
||||
}
|
||||
case 1: {
|
||||
this.telemetryService.publicLog('taskNotificationOptionChoice',
|
||||
{ choice: 1, test: showDocumentation });
|
||||
return this.storageService.store(ignoreKey, true, StorageScope.GLOBAL);
|
||||
}
|
||||
case 2: {
|
||||
this.telemetryService.publicLog('taskNotificationOptionChoice',
|
||||
{ choice: 2, test: showDocumentation });
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
.then(content => this.handleLoadSuccess(content), error => this.handleLoadError(error));
|
||||
}
|
||||
|
||||
private handleLoadSuccess(content: IRawTextContent): TPromise<TextFileEditorModel> {
|
||||
|
||||
@@ -26,7 +26,7 @@ import { TextModelResolverService } from 'vs/workbench/services/textmodelResolve
|
||||
import { ITextModelService } from 'vs/editor/common/services/resolverService';
|
||||
import { IEditorInput, IEditorOptions, Position, Direction, IEditor, IResourceInput, ITextEditorOptions } from 'vs/platform/editor/common/editor';
|
||||
import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
|
||||
import { IChoiceService, IMessageService, IConfirmation } from 'vs/platform/message/common/message';
|
||||
import { IMessageService, IConfirmation } from 'vs/platform/message/common/message';
|
||||
import { ILegacyWorkspace, IWorkspaceContextService, IWorkspace } from 'vs/platform/workspace/common/workspace';
|
||||
import { ILifecycleService, ShutdownEvent, ShutdownReason, StartupKind, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle';
|
||||
import { EditorStacksModel } from 'vs/workbench/common/editor/editorStacksModel';
|
||||
@@ -236,11 +236,6 @@ export function workbenchInstantiationService(): IInstantiationService {
|
||||
instantiationService.stub(ITextModelService, <ITextModelService>instantiationService.createInstance(TextModelResolverService));
|
||||
instantiationService.stub(IEnvironmentService, TestEnvironmentService);
|
||||
instantiationService.stub(IThemeService, new TestThemeService());
|
||||
instantiationService.stub(IChoiceService, {
|
||||
choose: (severity, message, options, cancelId): TPromise<number> => {
|
||||
return TPromise.as(cancelId);
|
||||
}
|
||||
});
|
||||
|
||||
return instantiationService;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user