From 531954855c7c2a8fd50fb6479f864bd0f8653acd Mon Sep 17 00:00:00 2001 From: t-amqi Date: Fri, 23 Jun 2017 11:18:01 -0700 Subject: [PATCH 1/2] Remove task experiment 1.4 - not stable ready yet --- src/vs/platform/telemetry/common/telemetry.ts | 1 - .../telemetry/common/telemetryUtils.ts | 6 +- .../quickopen/common/quickopenActions.ts | 54 ---------------- .../node/configurationEditingService.test.ts | 9 +-- .../test/node/keybindingEditing.test.ts | 10 +-- .../textfile/common/textFileEditorModel.ts | 64 +------------------ .../workbench/test/workbenchTestServices.ts | 7 +- 7 files changed, 6 insertions(+), 145 deletions(-) delete mode 100644 src/vs/workbench/parts/quickopen/common/quickopenActions.ts diff --git a/src/vs/platform/telemetry/common/telemetry.ts b/src/vs/platform/telemetry/common/telemetry.ts index 2e4a6f64022c4..2d57d2895343e 100644 --- a/src/vs/platform/telemetry/common/telemetry.ts +++ b/src/vs/platform/telemetry/common/telemetry.ts @@ -23,7 +23,6 @@ export interface ITelemetryData { export interface ITelemetryExperiments { mergeQuickLinks: boolean; - showTaskDocumentation: boolean; } export interface ITelemetryService { diff --git a/src/vs/platform/telemetry/common/telemetryUtils.ts b/src/vs/platform/telemetry/common/telemetryUtils.ts index 315690824d812..02069dd139193 100644 --- a/src/vs/platform/telemetry/common/telemetryUtils.ts +++ b/src/vs/platform/telemetry/common/telemetryUtils.ts @@ -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, }; } diff --git a/src/vs/workbench/parts/quickopen/common/quickopenActions.ts b/src/vs/workbench/parts/quickopen/common/quickopenActions.ts deleted file mode 100644 index 9184e7eed5088..0000000000000 --- a/src/vs/workbench/parts/quickopen/common/quickopenActions.ts +++ /dev/null @@ -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 { - 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 { - window.open('https://go.microsoft.com/fwlink/?LinkId=733558'); - return TPromise.as(null); - } -} diff --git a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts index d7db5a91f86b9..17d1278ac4efc 100644 --- a/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts +++ b/src/vs/workbench/services/configuration/test/node/configurationEditingService.test.ts @@ -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 => { - return TPromise.as(cancelId); - } - }); instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService)); instantiationService.stub(ITextModelService, instantiationService.createInstance(TextModelResolverService)); instantiationService.stub(IBackupFileService, new TestBackupFileService()); diff --git a/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts b/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts index 4cd52b254320e..8c8511b59e7b2 100644 --- a/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts +++ b/src/vs/workbench/services/keybinding/test/node/keybindingEditing.test.ts @@ -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 => { - return TPromise.as(cancelId); - } - }); instantiationService.stub(IWorkspaceContextService, new TestContextService()); instantiationService.stub(ILifecycleService, new TestLifecycleService()); instantiationService.stub(IEditorGroupService, new TestEditorGroupService()); diff --git a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts index fd47f1fa1407a..7be0d555cbab1 100644 --- a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts +++ b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import * as path from 'vs/base/common/paths'; import nls = require('vs/nls'); import Event, { Emitter } from 'vs/base/common/event'; import { TPromise, TValueCallback, ErrorCallback } from 'vs/base/common/winjs.base'; @@ -27,20 +26,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 +86,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 +319,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 { diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 7fc9a0f31c3aa..0a347d97917aa 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -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, instantiationService.createInstance(TextModelResolverService)); instantiationService.stub(IEnvironmentService, TestEnvironmentService); instantiationService.stub(IThemeService, new TestThemeService()); - instantiationService.stub(IChoiceService, { - choose: (severity, message, options, cancelId): TPromise => { - return TPromise.as(cancelId); - } - }); return instantiationService; } From ad429ce4458ecd5e7ff71508e3afe835156c4153 Mon Sep 17 00:00:00 2001 From: t-amqi Date: Fri, 23 Jun 2017 13:14:30 -0700 Subject: [PATCH 2/2] Add path to fix test --- src/vs/workbench/services/textfile/common/textFileEditorModel.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts index 7be0d555cbab1..d004f0414d6cf 100644 --- a/src/vs/workbench/services/textfile/common/textFileEditorModel.ts +++ b/src/vs/workbench/services/textfile/common/textFileEditorModel.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; +import * as path from 'vs/base/common/paths'; import nls = require('vs/nls'); import Event, { Emitter } from 'vs/base/common/event'; import { TPromise, TValueCallback, ErrorCallback } from 'vs/base/common/winjs.base';