exp - introduce and use flag to disable experiments (#254057)

* exp - introduce and use flag to disable experiments

* fix
This commit is contained in:
Benjamin Pasero 2025-07-04 11:17:56 +02:00 committed by GitHub
parent 93858ca360
commit 367fc5f243
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
18 changed files with 28 additions and 9 deletions

View File

@ -84,7 +84,7 @@ const extensions = [
const defaultLaunchArgs = process.env.API_TESTS_EXTRA_ARGS?.split(' ') || [
'--disable-telemetry', '--skip-welcome', '--skip-release-notes', `--crash-reporter-directory=${__dirname}/.build/crashes`, `--logsPath=${__dirname}/.build/logs/integration-tests`, '--no-cached-data', '--disable-updates', '--use-inmemory-secretstorage', '--disable-extensions', '--disable-workspace-trust'
'--disable-telemetry', '--disable-experiments', '--skip-welcome', '--skip-release-notes', `--crash-reporter-directory=${__dirname}/.build/crashes`, `--logsPath=${__dirname}/.build/logs/integration-tests`, '--no-cached-data', '--disable-updates', '--use-inmemory-secretstorage', '--disable-extensions', '--disable-workspace-trust'
];
const config = defineConfig(extensions.map(extension => {

View File

@ -142,7 +142,7 @@ export function activate(context: vscode.ExtensionContext) {
}
const { updateUrl, commit, quality, serverDataFolderName, serverApplicationName, dataFolderName } = getProductConfiguration();
const commandArgs = ['--host=127.0.0.1', '--port=0', '--disable-telemetry', '--use-host-proxy', '--accept-server-license-terms'];
const commandArgs = ['--host=127.0.0.1', '--port=0', '--disable-telemetry', '--disable-experiments', '--use-host-proxy', '--accept-server-license-terms'];
const env = getNewEnv();
const remoteDataDir = process.env['TESTRESOLVER_DATA_FOLDER'] || path.join(os.homedir(), `${serverDataFolderName || dataFolderName}-testresolver`);
const logsDir = process.env['TESTRESOLVER_LOGS_FOLDER'];

View File

@ -35,7 +35,7 @@ if %errorlevel% neq 0 exit /b %errorlevel%
:: Tests in the extension host
set API_TESTS_EXTRA_ARGS=--disable-telemetry --skip-welcome --skip-release-notes --crash-reporter-directory=%VSCODECRASHDIR% --logsPath=%VSCODELOGSDIR% --no-cached-data --disable-updates --use-inmemory-secretstorage --disable-extensions --disable-workspace-trust --user-data-dir=%VSCODEUSERDATADIR%
set API_TESTS_EXTRA_ARGS=--disable-telemetry --disable-experiments --skip-welcome --skip-release-notes --crash-reporter-directory=%VSCODECRASHDIR% --logsPath=%VSCODELOGSDIR% --no-cached-data --disable-updates --use-inmemory-secretstorage --disable-extensions --disable-workspace-trust --user-data-dir=%VSCODEUSERDATADIR%
echo.
echo ### API tests (folder)

View File

@ -41,7 +41,7 @@ echo
# Tests in the extension host
API_TESTS_EXTRA_ARGS="--disable-telemetry --skip-welcome --skip-release-notes --crash-reporter-directory=$VSCODECRASHDIR --logsPath=$VSCODELOGSDIR --no-cached-data --disable-updates --use-inmemory-secretstorage --disable-extensions --disable-workspace-trust --user-data-dir=$VSCODEUSERDATADIR"
API_TESTS_EXTRA_ARGS="--disable-telemetry --disable-experiments --skip-welcome --skip-release-notes --crash-reporter-directory=$VSCODECRASHDIR --logsPath=$VSCODELOGSDIR --no-cached-data --disable-updates --use-inmemory-secretstorage --disable-extensions --disable-workspace-trust --user-data-dir=$VSCODEUSERDATADIR"
if [ -z "$INTEGRATION_TEST_APP_NAME" ]; then
kill_app() { true; }

View File

@ -55,7 +55,7 @@ echo Storing log files into '%VSCODELOGSDIR%'
:: Tests in the extension host
set API_TESTS_EXTRA_ARGS=--disable-telemetry --skip-welcome --skip-release-notes --crash-reporter-directory=%VSCODECRASHDIR% --logsPath=%VSCODELOGSDIR% --no-cached-data --disable-updates --use-inmemory-secretstorage --disable-inspect --disable-workspace-trust --user-data-dir=%VSCODEUSERDATADIR%
set API_TESTS_EXTRA_ARGS=--disable-telemetry --disable-experiments --skip-welcome --skip-release-notes --crash-reporter-directory=%VSCODECRASHDIR% --logsPath=%VSCODELOGSDIR% --no-cached-data --disable-updates --use-inmemory-secretstorage --disable-inspect --disable-workspace-trust --user-data-dir=%VSCODEUSERDATADIR%
echo.
echo ### API tests (folder)

View File

@ -65,7 +65,7 @@ else
kill_app() { killall $INTEGRATION_TEST_APP_NAME || true; }
fi
API_TESTS_EXTRA_ARGS="--disable-telemetry --skip-welcome --skip-release-notes --crash-reporter-directory=$VSCODECRASHDIR --logsPath=$VSCODELOGSDIR --no-cached-data --disable-updates --use-inmemory-secretstorage --disable-workspace-trust --user-data-dir=$VSCODEUSERDATADIR"
API_TESTS_EXTRA_ARGS="--disable-telemetry --disable-experiments --skip-welcome --skip-release-notes --crash-reporter-directory=$VSCODECRASHDIR --logsPath=$VSCODELOGSDIR --no-cached-data --disable-updates --use-inmemory-secretstorage --disable-workspace-trust --user-data-dir=$VSCODEUSERDATADIR"
echo "Storing crash reports into '$VSCODECRASHDIR'."
echo "Storing log files into '$VSCODELOGSDIR'."

View File

@ -229,6 +229,7 @@ class StandaloneEnvironmentService implements IEnvironmentService {
readonly debugExtensionHost: IExtensionHostDebugParams = { port: null, break: false };
readonly isExtensionDevelopment: boolean = false;
readonly disableExtensions: boolean | string[] = false;
readonly disableExperiments: boolean = false;
readonly enableExtensions?: readonly string[] | undefined = undefined;
readonly extensionDevelopmentLocationURI?: URI[] | undefined = undefined;
readonly extensionDevelopmentKind?: ExtensionKind[] | undefined = undefined;

View File

@ -139,6 +139,7 @@ export interface NativeParsedArgs {
'enable-rdp-display-tracking'?: boolean;
'disable-layout-restore'?: boolean;
'startup-experiment-group'?: string;
'disable-experiments'?: boolean;
// chromium command line args: https://electronjs.org/docs/all#supported-chrome-command-line-switches
'no-proxy-server'?: boolean;

View File

@ -83,8 +83,9 @@ export interface IEnvironmentService {
verbose: boolean;
isBuilt: boolean;
// --- telemetry
// --- telemetry/exp
disableTelemetry: boolean;
disableExperiments: boolean;
serviceMachineIdResource: URI;
// --- Policy

View File

@ -230,6 +230,9 @@ export abstract class AbstractNativeEnvironmentService implements INativeEnviron
@memoize
get disableTelemetry(): boolean { return !!this.args['disable-telemetry']; }
@memoize
get disableExperiments(): boolean { return !!this.args['disable-experiments']; }
@memoize
get disableWorkspaceTrust(): boolean { return !!this.args['disable-workspace-trust']; }

View File

@ -200,6 +200,7 @@ export const OPTIONS: OptionDescriptions<Required<NativeParsedArgs>> = {
'unresponsive-sample-period': { type: 'string' },
'enable-rdp-display-tracking': { type: 'boolean' },
'disable-layout-restore': { type: 'boolean' },
'disable-experiments': { type: 'boolean' },
'startup-experiment-group': { type: 'string', cat: 't', args: 'control|maximizedChat|splitEmptyEditorChat|splitWelcomeChat', description: localize('startupExperimentGroup', "Override the startup experiment group.") },
// chromium flags

View File

@ -37,6 +37,7 @@ export const serverOptions: OptionDescriptions<Required<ServerParsedArgs>> = {
'user-data-dir': OPTIONS['user-data-dir'],
'enable-smoke-test-driver': OPTIONS['enable-smoke-test-driver'],
'disable-telemetry': OPTIONS['disable-telemetry'],
'disable-experiments': OPTIONS['disable-experiments'],
'disable-workspace-trust': OPTIONS['disable-workspace-trust'],
'file-watcher-polling': { type: 'string', deprecates: ['fileWatcherPolling'] },
'log': OPTIONS['log'],
@ -160,6 +161,7 @@ export interface ServerParsedArgs {
'enable-smoke-test-driver'?: boolean;
'disable-telemetry'?: boolean;
'disable-experiments'?: boolean;
'file-watcher-polling'?: string;
'log'?: string[];

View File

@ -100,7 +100,7 @@ export class WorkbenchAssignmentService extends BaseAssignmentService {
}
protected override get experimentsEnabled(): boolean {
return this.configurationService.getValue('workbench.enableExperiments') === true;
return !this.environmentService.disableExperiments && this.configurationService.getValue('workbench.enableExperiments') === true;
}
override async getTreatment<T extends string | number | boolean>(name: string): Promise<T | undefined> {

View File

@ -88,6 +88,11 @@ export class CoreExperimentationService extends Disposable implements ICoreExper
@IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService,
) {
super();
if (environmentService.disableExperiments) {
return; // explicitly disabled
}
this.initializeExperiments();
}

View File

@ -236,6 +236,9 @@ export class BrowserWorkbenchEnvironmentService implements IBrowserWorkbenchEnvi
@memoize
get disableTelemetry(): boolean { return false; }
@memoize
get disableExperiments(): boolean { return false; }
@memoize
get verbose(): boolean { return this.payload?.get('verbose') === 'true'; }

View File

@ -27,6 +27,7 @@ export async function resolveElectronConfiguration(options: LaunchOptions): Prom
'--skip-release-notes',
'--skip-welcome',
'--disable-telemetry',
'--disable-experiments',
'--no-cached-data',
'--disable-updates',
'--use-inmemory-secretstorage',

View File

@ -44,6 +44,7 @@ async function launchServer(options: LaunchOptions) {
const args = [
'--disable-telemetry',
'--disable-experiments',
'--disable-workspace-trust',
`--port=${port++}`,
'--enable-smoke-test-driver',

View File

@ -169,7 +169,7 @@ async function launchServer(browserType: BrowserType, browserChannel: BrowserCha
...process.env
};
const serverArgs = ['--enable-proposed-api', '--disable-telemetry', '--server-data-dir', userDataDir, '--accept-server-license-terms', '--disable-workspace-trust'];
const serverArgs = ['--enable-proposed-api', '--disable-telemetry', '--disable-experiments', '--server-data-dir', userDataDir, '--accept-server-license-terms', '--disable-workspace-trust'];
let serverLocation: string;
if (process.env.VSCODE_REMOTE_SERVER_PATH) {