提交 69accf61 编写于 作者: K kieferrm

remove UserIdleStart and UserIdleStop events

上级 47ad2e70
/*---------------------------------------------------------------------------------------------
* 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 { TimeoutTimer } from 'vs/base/common/async';
import Event, { Emitter } from 'vs/base/common/event';
import { Disposable } from 'vs/base/common/lifecycle';
import * as dom from 'vs/base/browser/dom';
export enum UserStatus {
Idle,
Active
}
export class IdleMonitor extends Disposable {
private _lastActiveTime: number;
private _idleCheckTimeout: TimeoutTimer;
private _status: UserStatus;
private _idleTime: number;
private _onStatusChange: Emitter<UserStatus>;
get onStatusChange(): Event<UserStatus> { return this._onStatusChange.event; }
constructor(idleTime: number) {
super();
this._status = null;
this._idleCheckTimeout = this._register(new TimeoutTimer());
this._lastActiveTime = -1;
this._idleTime = idleTime;
this._onStatusChange = new Emitter<UserStatus>();
this._register(dom.addDisposableListener(document, 'mousemove', () => this._onUserActive()));
this._register(dom.addDisposableListener(document, 'keydown', () => this._onUserActive()));
this._onUserActive();
}
get status(): UserStatus {
return this._status;
}
private _onUserActive(): void {
this._lastActiveTime = (new Date()).getTime();
if (this._status !== UserStatus.Active) {
this._status = UserStatus.Active;
this._scheduleIdleCheck();
this._onStatusChange.fire(this._status);
}
}
private _onUserIdle(): void {
if (this._status !== UserStatus.Idle) {
this._status = UserStatus.Idle;
this._onStatusChange.fire(this._status);
}
}
private _scheduleIdleCheck(): void {
const minimumTimeWhenUserCanBecomeIdle = this._lastActiveTime + this._idleTime;
const timeout = minimumTimeWhenUserCanBecomeIdle - (new Date()).getTime();
this._idleCheckTimeout.setIfNotSet(() => this._checkIfUserIsIdle(), timeout);
}
private _checkIfUserIsIdle(): void {
const actualIdleTime = (new Date()).getTime() - this._lastActiveTime;
if (actualIdleTime >= this._idleTime) {
this._onUserIdle();
} else {
this._scheduleIdleCheck();
}
}
}
...@@ -25,7 +25,6 @@ import { NullTelemetryService, configurationTelemetry, lifecycleTelemetry } from ...@@ -25,7 +25,6 @@ import { NullTelemetryService, configurationTelemetry, lifecycleTelemetry } from
import { IExperimentService, ExperimentService } from 'vs/platform/telemetry/common/experiments'; import { IExperimentService, ExperimentService } from 'vs/platform/telemetry/common/experiments';
import { ITelemetryAppenderChannel, TelemetryAppenderClient } from 'vs/platform/telemetry/common/telemetryIpc'; import { ITelemetryAppenderChannel, TelemetryAppenderClient } from 'vs/platform/telemetry/common/telemetryIpc';
import { TelemetryService, ITelemetryServiceConfig } from 'vs/platform/telemetry/common/telemetryService'; import { TelemetryService, ITelemetryServiceConfig } from 'vs/platform/telemetry/common/telemetryService';
import { IdleMonitor, UserStatus } from 'vs/platform/telemetry/browser/idleMonitor';
import ErrorTelemetry from 'vs/platform/telemetry/browser/errorTelemetry'; import ErrorTelemetry from 'vs/platform/telemetry/browser/errorTelemetry';
import { ElectronWindow } from 'vs/workbench/electron-browser/window'; import { ElectronWindow } from 'vs/workbench/electron-browser/window';
import { resolveWorkbenchCommonProperties } from 'vs/platform/telemetry/node/workbenchCommonProperties'; import { resolveWorkbenchCommonProperties } from 'vs/platform/telemetry/node/workbenchCommonProperties';
...@@ -334,21 +333,8 @@ export class WorkbenchShell { ...@@ -334,21 +333,8 @@ export class WorkbenchShell {
this.telemetryService = telemetryService; this.telemetryService = telemetryService;
const errorTelemetry = new ErrorTelemetry(telemetryService); const errorTelemetry = new ErrorTelemetry(telemetryService);
const idleMonitor = new IdleMonitor(2 * 60 * 1000); // 2 minutes
disposables.push(telemetryService, errorTelemetry);
const listener = idleMonitor.onStatusChange(status =>
/* __GDPR__
"UserIdleStart" : {}
*/
/* __GDPR__
"UserIdleStop" : {}
*/
this.telemetryService.publicLog(status === UserStatus.Active
? TelemetryService.IDLE_STOP_EVENT_NAME
: TelemetryService.IDLE_START_EVENT_NAME
));
disposables.push(telemetryService, errorTelemetry, listener, idleMonitor);
} else { } else {
this.telemetryService = NullTelemetryService; this.telemetryService = NullTelemetryService;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册