diff --git a/src/vs/code/common/window.ts b/src/vs/code/common/window.ts deleted file mode 100644 index b932e63f7c3..00000000000 --- a/src/vs/code/common/window.ts +++ /dev/null @@ -1,37 +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'; - -export enum ReadyState { - - /** - * This window has not loaded any HTML yet - */ - NONE, - - /** - * This window is loading HTML - */ - LOADING, - - /** - * This window is navigating to another HTML - */ - NAVIGATING, - - /** - * This window is done loading HTML - */ - READY -} - -export interface IVSCodeWindow { - id: number; - readyState: ReadyState; - win: Electron.BrowserWindow; - - send(channel: string, ...args: any[]): void; -} \ No newline at end of file diff --git a/src/vs/code/electron-main/lifecycle.ts b/src/vs/code/electron-main/lifecycle.ts index f0e2949f774..0ac4e630112 100644 --- a/src/vs/code/electron-main/lifecycle.ts +++ b/src/vs/code/electron-main/lifecycle.ts @@ -7,14 +7,37 @@ import { ipcMain as ipc, app } from 'electron'; import { TPromise, TValueCallback } from 'vs/base/common/winjs.base'; -import { ReadyState, IVSCodeWindow } from 'vs/code/common/window'; +import { ReadyState, IVSCodeWindow } from 'vs/code/electron-main/window'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { ILogService } from 'vs/code/electron-main/log'; import { IStorageService } from 'vs/code/electron-main/storage'; -import { ILifecycleMainService } from 'vs/platform/lifecycle/common/mainLifecycle'; import Event, { Emitter } from 'vs/base/common/event'; +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -export class LifecycleService implements ILifecycleMainService { +export const ILifecycleService = createDecorator('lifecycleService'); + +export interface ILifecycleService { + _serviceBrand: any; + + /** + * Will be true if an update was applied. Will only be true for each update once. + */ + wasUpdated: boolean; + + /** + * Due to the way we handle lifecycle with eventing, the general app.on('before-quit') + * event cannot be used because it can be called twice on shutdown. Instead the onBeforeQuit + * handler in this module can be used and it is only called once on a shutdown sequence. + */ + onBeforeQuit: Event; + + ready(): void; + registerWindow(vscodeWindow: IVSCodeWindow): void; + unload(vscodeWindow: IVSCodeWindow): TPromise; + quit(fromUpdate?: boolean): TPromise; +} + +export class LifecycleService implements ILifecycleService { _serviceBrand: any; diff --git a/src/vs/code/electron-main/main.ts b/src/vs/code/electron-main/main.ts index 092c680983f..62221630058 100644 --- a/src/vs/code/electron-main/main.ts +++ b/src/vs/code/electron-main/main.ts @@ -15,8 +15,7 @@ import { IWindowsMainService, WindowsManager } from 'vs/code/electron-main/windo import { IWindowsService } from 'vs/platform/windows/common/windows'; import { WindowsChannel } from 'vs/platform/windows/common/windowsIpc'; import { WindowsService } from 'vs/platform/windows/electron-main/windowsService'; -import { LifecycleService } from 'vs/code/electron-main/lifecycle'; -import { ILifecycleMainService } from 'vs/platform/lifecycle/common/mainLifecycle'; +import { LifecycleService, ILifecycleService } from 'vs/code/electron-main/lifecycle'; import { VSCodeMenu } from 'vs/code/electron-main/menus'; import { IUpdateService } from 'vs/platform/update/common/update'; import { UpdateChannel } from 'vs/platform/update/common/updateIpc'; @@ -82,7 +81,7 @@ function main(accessor: ServicesAccessor, mainIpcServer: Server, userEnv: platfo const instantiationService = accessor.get(IInstantiationService); const logService = accessor.get(ILogService); const environmentService = accessor.get(IEnvironmentService); - const lifecycleService = accessor.get(ILifecycleMainService); + const lifecycleService = accessor.get(ILifecycleService); const configurationService = accessor.get(IConfigurationService) as ConfigurationService; let windowsMainService: IWindowsMainService; @@ -424,7 +423,7 @@ function createServices(args): IInstantiationService { services.set(IEnvironmentService, new SyncDescriptor(EnvironmentService, args, process.execPath)); services.set(ILogService, new SyncDescriptor(MainLogService)); - services.set(ILifecycleMainService, new SyncDescriptor(LifecycleService)); + services.set(ILifecycleService, new SyncDescriptor(LifecycleService)); services.set(IStorageService, new SyncDescriptor(StorageService)); services.set(IConfigurationService, new SyncDescriptor(ConfigurationService)); services.set(IRequestService, new SyncDescriptor(RequestService)); diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 05294f00d87..9fcd36b1b6a 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -18,7 +18,6 @@ import { parseArgs } from 'vs/platform/environment/node/argv'; import product from 'vs/platform/product'; import { getCommonHTTPHeaders } from 'vs/platform/environment/node/http'; import { IWindowSettings } from 'vs/platform/windows/common/windows'; -import { ReadyState, IVSCodeWindow } from 'vs/code/common/window'; export interface IWindowState { width?: number; @@ -91,6 +90,37 @@ export interface IWindowConfiguration extends ParsedArgs { filesToDiff?: IPath[]; } +export enum ReadyState { + + /** + * This window has not loaded any HTML yet + */ + NONE, + + /** + * This window is loading HTML + */ + LOADING, + + /** + * This window is navigating to another HTML + */ + NAVIGATING, + + /** + * This window is done loading HTML + */ + READY +} + +export interface IVSCodeWindow { + id: number; + readyState: ReadyState; + win: Electron.BrowserWindow; + + send(channel: string, ...args: any[]): void; +} + export class VSCodeWindow implements IVSCodeWindow { public static menuBarHiddenKey = 'menuBarHidden'; diff --git a/src/vs/code/electron-main/windows.ts b/src/vs/code/electron-main/windows.ts index 299a1880091..7caa9b42e33 100644 --- a/src/vs/code/electron-main/windows.ts +++ b/src/vs/code/electron-main/windows.ts @@ -17,11 +17,10 @@ import { IBackupMainService } from 'vs/platform/backup/common/backup'; import { trim } from 'vs/base/common/strings'; import { IEnvironmentService, ParsedArgs } from 'vs/platform/environment/common/environment'; import { IStorageService } from 'vs/code/electron-main/storage'; -import { IPath, VSCodeWindow, IWindowConfiguration, IWindowState as ISingleWindowState, defaultWindowState } from 'vs/code/electron-main/window'; -import { ReadyState } from 'vs/code/common/window'; +import { IPath, VSCodeWindow, IWindowConfiguration, IWindowState as ISingleWindowState, defaultWindowState, ReadyState } from 'vs/code/electron-main/window'; import { ipcMain as ipc, app, screen, BrowserWindow, dialog } from 'electron'; import { IPathWithLineAndColumn, parseLineAndColumnAware } from 'vs/code/electron-main/paths'; -import { ILifecycleMainService } from 'vs/platform/lifecycle/common/mainLifecycle'; +import { ILifecycleService } from 'vs/code/electron-main/lifecycle'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ILogService } from 'vs/code/electron-main/log'; import { getPathLabel } from 'vs/base/common/labels'; @@ -154,7 +153,7 @@ export class WindowsManager implements IWindowsMainService { @ILogService private logService: ILogService, @IStorageService private storageService: IStorageService, @IEnvironmentService private environmentService: IEnvironmentService, - @ILifecycleMainService private lifecycleService: ILifecycleMainService, + @ILifecycleService private lifecycleService: ILifecycleService, @IBackupMainService private backupService: IBackupMainService, @IConfigurationService private configurationService: IConfigurationService, @ITelemetryService private telemetryService: ITelemetryService diff --git a/src/vs/code/test/electron-main/servicesTestUtils.ts b/src/vs/code/test/electron-main/servicesTestUtils.ts deleted file mode 100644 index c891f9d17b4..00000000000 --- a/src/vs/code/test/electron-main/servicesTestUtils.ts +++ /dev/null @@ -1,34 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { ILifecycleMainService } from 'vs/platform/lifecycle/common/mainLifecycle'; -import { IVSCodeWindow } from 'vs/code/common/window'; -import { TPromise } from 'vs/base/common/winjs.base'; -import Event, { Emitter } from 'vs/base/common/event'; - -export class TestLifecycleService implements ILifecycleMainService { - public _serviceBrand: any; - - private _onBeforeQuit = new Emitter(); - onBeforeQuit: Event = this._onBeforeQuit.event; - - public get wasUpdated(): boolean { - return false; - } - - public ready(): void { - } - - public registerWindow(vscodeWindow: IVSCodeWindow): void { - } - - public unload(vscodeWindow: IVSCodeWindow): TPromise { - return TPromise.as(false); - } - - public quit(fromUpdate?: boolean): TPromise { - return TPromise.as(false); - } -} \ No newline at end of file diff --git a/src/vs/platform/lifecycle/common/mainLifecycle.ts b/src/vs/platform/lifecycle/common/mainLifecycle.ts deleted file mode 100644 index 19ff487cc78..00000000000 --- a/src/vs/platform/lifecycle/common/mainLifecycle.ts +++ /dev/null @@ -1,33 +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 { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { IVSCodeWindow } from 'vs/code/common/window'; -import { TPromise } from 'vs/base/common/winjs.base'; -import Event from 'vs/base/common/event'; - -export const ILifecycleMainService = createDecorator('lifecycleMainService'); - -export interface ILifecycleMainService { - _serviceBrand: any; - - /** - * Will be true if an update was applied. Will only be true for each update once. - */ - wasUpdated: boolean; - - /** - * Due to the way we handle lifecycle with eventing, the general app.on('before-quit') - * event cannot be used because it can be called twice on shutdown. Instead the onBeforeQuit - * handler in this module can be used and it is only called once on a shutdown sequence. - */ - onBeforeQuit: Event; - - ready(): void; - registerWindow(vscodeWindow: IVSCodeWindow): void; - unload(vscodeWindow: IVSCodeWindow): TPromise; - quit(fromUpdate?: boolean): TPromise; -} \ No newline at end of file diff --git a/src/vs/platform/update/electron-main/auto-updater.win32.ts b/src/vs/platform/update/electron-main/auto-updater.win32.ts index 3d498f70da1..a1526cfad65 100644 --- a/src/vs/platform/update/electron-main/auto-updater.win32.ts +++ b/src/vs/platform/update/electron-main/auto-updater.win32.ts @@ -15,7 +15,7 @@ import { mkdirp } from 'vs/base/node/extfs'; import { isString } from 'vs/base/common/types'; import { Promise, TPromise } from 'vs/base/common/winjs.base'; import { download, asJson } from 'vs/base/node/request'; -import { ILifecycleMainService } from 'vs/platform/lifecycle/common/mainLifecycle'; +import { ILifecycleService } from 'vs/code/electron-main/lifecycle'; import { IRequestService } from 'vs/platform/request/node/request'; import { IAutoUpdater } from 'vs/platform/update/common/update'; import product from 'vs/platform/product'; @@ -36,7 +36,7 @@ export class Win32AutoUpdaterImpl extends EventEmitter implements IAutoUpdater { private updatePackagePath: string = null; constructor( - @ILifecycleMainService private lifecycleService: ILifecycleMainService, + @ILifecycleService private lifecycleService: ILifecycleService, @IRequestService private requestService: IRequestService ) { super(); diff --git a/src/vs/platform/update/electron-main/updateService.ts b/src/vs/platform/update/electron-main/updateService.ts index 462d60ce292..0f27826a29d 100644 --- a/src/vs/platform/update/electron-main/updateService.ts +++ b/src/vs/platform/update/electron-main/updateService.ts @@ -16,7 +16,7 @@ import { fromEventEmitter } from 'vs/base/node/event'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { Win32AutoUpdaterImpl } from './auto-updater.win32'; import { LinuxAutoUpdaterImpl } from './auto-updater.linux'; -import { ILifecycleMainService } from 'vs/platform/lifecycle/common/mainLifecycle'; +import { ILifecycleService } from 'vs/code/electron-main/lifecycle'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import product from 'vs/platform/product'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -85,7 +85,7 @@ export class UpdateService implements IUpdateService { constructor( @IInstantiationService instantiationService: IInstantiationService, - @ILifecycleMainService private lifecycleService: ILifecycleMainService, + @ILifecycleService private lifecycleService: ILifecycleService, @IConfigurationService private configurationService: IConfigurationService, @ITelemetryService private telemetryService: ITelemetryService ) {