src/vs/workbench/services/credentials/browser/credentialsService.ts/BrowserCredentialsService/constructor
class BrowserCredentialsService:	constructor(
		@IBrowserWorkbenchEnvironmentService environmentService: IBrowserWorkbenchEnvironmentService,
		@IRemoteAgentService remoteAgentService: IRemoteAgentService,
		@IProductService private readonly productService: IProductService
	) {
		super();

		if (environmentService.remoteAuthority && !environmentService.options?.credentialsProvider) {
			// If we have a remote authority but the embedder didn't provide a credentialsProvider,
			// we can use the CredentialsService on the remote side
			const remoteCredentialsService = ProxyChannel.toService<ICredentialsService>(remoteAgentService.getConnection()!.getChannel('credentials'));
			this.credentialsProvider = remoteCredentialsService;
			this._secretStoragePrefix = remoteCredentialsService.getSecretStoragePrefix();
		} else {
			// fall back to InMemoryCredentialsProvider if none was given to us. This should really only be used
			// when running tests.
			this.credentialsProvider = environmentService.options?.credentialsProvider ?? new InMemoryCredentialsProvider();
			this._secretStoragePrefix = Promise.resolve(this.productService.urlProtocol);
		}
	}