未验证 提交 c55aff63 编写于 作者: L Ladislau Szomoru 提交者: GitHub

API feedback (WorkspaceTrustRequest -> WorkspaceTrustRequestOptions) (#119658)

上级 3eb6fec8
......@@ -49,20 +49,20 @@ export interface WorkspaceTrustRequestButton {
type: 'ContinueWithTrust' | 'ContinueWithoutTrust' | 'Manage' | 'Cancel'
}
export interface WorkspaceTrustRequest {
export interface WorkspaceTrustRequestOptions {
buttons?: WorkspaceTrustRequestButton[];
message?: string;
modal: boolean;
}
export interface IWorkspaceTrustRequestModel {
readonly trustRequest: WorkspaceTrustRequest | undefined;
readonly trustRequestOptions: WorkspaceTrustRequestOptions | undefined;
readonly onDidInitiateRequest: Event<void>;
readonly onDidCompleteRequest: Event<WorkspaceTrustState | undefined>;
readonly onDidCancelRequest: Event<void>;
initiateRequest(request?: WorkspaceTrustRequest): void;
initiateRequest(options?: WorkspaceTrustRequestOptions): void;
completeRequest(trustState?: WorkspaceTrustState): void;
cancelRequest(): void;
}
......@@ -84,7 +84,7 @@ export interface IWorkspaceTrustService {
onDidChangeTrustState: WorkspaceTrustChangeEvent;
getWorkspaceTrustState(): WorkspaceTrustState;
isWorkspaceTrustEnabled(): boolean;
requireWorkspaceTrust(request?: WorkspaceTrustRequest): Promise<WorkspaceTrustState>;
requireWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Promise<WorkspaceTrustState>;
}
export interface IWorkspaceTrustFolderInfo {
......
......@@ -2792,7 +2792,7 @@ declare module 'vscode' {
/**
* The object describing the properties of the workspace trust request
*/
export interface WorkspaceTrustRequest {
export interface WorkspaceTrustRequestOptions {
/**
* When true, a modal dialog will be used to request workspace trust.
* When false, a badge will be displayed on the Setting activity bar item
......@@ -2808,10 +2808,10 @@ declare module 'vscode' {
/**
* Prompt the user to chose whether to trust the current workspace
* @param request Optional object describing the properties of the
* @param options Optional object describing the properties of the
* workspace trust request
*/
export function requireWorkspaceTrust(request?: WorkspaceTrustRequest): Thenable<WorkspaceTrustState>;
export function requireWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Thenable<WorkspaceTrustState>;
/**
* Event that fires when the trust state of the current workspace changes
......
......@@ -16,7 +16,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import { ILabelService } from 'vs/platform/label/common/label';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { IRequestService } from 'vs/platform/request/common/request';
import { WorkspaceTrustStateChangeEvent, IWorkspaceTrustService, WorkspaceTrustRequest, WorkspaceTrustState } from 'vs/platform/workspace/common/workspaceTrust';
import { WorkspaceTrustStateChangeEvent, IWorkspaceTrustService, WorkspaceTrustRequestOptions, WorkspaceTrustState } from 'vs/platform/workspace/common/workspaceTrust';
import { IWorkspace, IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
import { isUntitledWorkspace } from 'vs/platform/workspaces/common/workspaces';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
......@@ -208,8 +208,8 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape {
// --- trust ---
$requireWorkspaceTrust(request?: WorkspaceTrustRequest): Promise<WorkspaceTrustState> {
return this._workspaceTrustService.requireWorkspaceTrust(request);
$requireWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Promise<WorkspaceTrustState> {
return this._workspaceTrustService.requireWorkspaceTrust(options);
}
private getWorkspaceTrustState(): WorkspaceTrustState {
......
......@@ -913,10 +913,10 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I
checkRequiresWorkspaceTrust(extension);
return extHostWorkspace.trustState;
},
requireWorkspaceTrust: (request?: vscode.WorkspaceTrustRequest) => {
requireWorkspaceTrust: (options?: vscode.WorkspaceTrustRequestOptions) => {
checkProposedApiEnabled(extension);
checkRequiresWorkspaceTrust(extension);
return extHostWorkspace.requireWorkspaceTrust(request);
return extHostWorkspace.requireWorkspaceTrust(options);
},
onDidChangeWorkspaceTrustState: (listener, thisArgs?, disposables?) => {
return extHostWorkspace.onDidChangeWorkspaceTrustState(listener, thisArgs, disposables);
......
......@@ -58,7 +58,7 @@ import { IAccessibilityInformation } from 'vs/platform/accessibility/common/acce
import { IExtensionIdWithVersion } from 'vs/platform/userDataSync/common/extensionsStorageSync';
import { InternalTestItem, ITestState, RunTestForProviderRequest, RunTestsRequest, TestIdWithSrc, TestsDiff, ISerializedTestResults } from 'vs/workbench/contrib/testing/common/testCollection';
import { CandidatePort } from 'vs/workbench/services/remote/common/remoteExplorerService';
import { WorkspaceTrustRequest, WorkspaceTrustStateChangeEvent } from 'vs/platform/workspace/common/workspaceTrust';
import { WorkspaceTrustRequestOptions, WorkspaceTrustStateChangeEvent } from 'vs/platform/workspace/common/workspaceTrust';
import { ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable';
import { IShellLaunchConfig, ITerminalDimensions, ITerminalLaunchError } from 'vs/platform/terminal/common/terminal';
import { ITerminalProfile } from 'vs/workbench/contrib/terminal/common/terminal';
......@@ -891,7 +891,7 @@ export interface MainThreadWorkspaceShape extends IDisposable {
$saveAll(includeUntitled?: boolean): Promise<boolean>;
$updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string; }[]): Promise<void>;
$resolveProxy(url: string): Promise<string | undefined>;
$requireWorkspaceTrust(request?: WorkspaceTrustRequest): Promise<WorkspaceTrustState>;
$requireWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Promise<WorkspaceTrustState>;
}
export interface IFileChangeDto {
......
......@@ -563,8 +563,8 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape, IExtHostWorkspac
return this._workspaceTrustState;
}
requireWorkspaceTrust(request?: vscode.WorkspaceTrustRequest): Promise<WorkspaceTrustState> {
return this._proxy.$requireWorkspaceTrust(request);
requireWorkspaceTrust(options?: vscode.WorkspaceTrustRequestOptions): Promise<WorkspaceTrustState> {
return this._proxy.$requireWorkspaceTrust(options);
}
$onDidChangeWorkspaceTrustState(state: WorkspaceTrustStateChangeEvent): void {
......
......@@ -72,7 +72,7 @@ export class WorkspaceTrustRequestHandler extends Disposable implements IWorkben
private registerListeners(): void {
this._register(this.requestModel.onDidInitiateRequest(async () => {
if (this.requestModel.trustRequest) {
if (this.requestModel.trustRequestOptions) {
this.toggleRequestBadge(true);
type WorkspaceTrustRequestedEventClassification = {
......@@ -88,18 +88,18 @@ export class WorkspaceTrustRequestHandler extends Disposable implements IWorkben
};
this.telemetryService.publicLog2<WorkspaceTrustRequestedEvent, WorkspaceTrustRequestedEventClassification>('workspaceTrustRequested', {
modal: this.requestModel.trustRequest.modal,
modal: this.requestModel.trustRequestOptions.modal,
workspaceId: this.workspaceContextService.getWorkspace().id,
extensions: (await this.extensionService.getExtensions()).filter(ext => !!ext.workspaceTrust).map(ext => ext.identifier.value)
});
if (this.requestModel.trustRequest.modal) {
if (this.requestModel.trustRequestOptions.modal) {
// Message
const defaultMessage = localize('immediateTrustRequestMessage', "A feature you are trying to use may be a security risk if you do not trust the source of the files or folders you currently have open.");
const message = this.requestModel.trustRequest.message ?? defaultMessage;
const message = this.requestModel.trustRequestOptions.message ?? defaultMessage;
// Buttons
const buttons = this.requestModel.trustRequest.buttons ?? [
const buttons = this.requestModel.trustRequestOptions.buttons ?? [
{ label: localize('grantWorkspaceTrustButton', "Continue"), type: 'ContinueWithTrust' },
{ label: localize('manageWorkspaceTrustButton', "Learn More"), type: 'Manage' }
];
......
......@@ -11,7 +11,7 @@ import { IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/cont
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
import { IWorkspace, IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace';
import { IWorkspaceTrustModel, WorkspaceTrustRequest, IWorkspaceTrustRequestModel, IWorkspaceTrustService, IWorkspaceTrustStateInfo, WorkspaceTrustState, WorkspaceTrustStateChangeEvent, IWorkspaceTrustFolderInfo } from 'vs/platform/workspace/common/workspaceTrust';
import { IWorkspaceTrustModel, WorkspaceTrustRequestOptions, IWorkspaceTrustRequestModel, IWorkspaceTrustService, IWorkspaceTrustStateInfo, WorkspaceTrustState, WorkspaceTrustStateChangeEvent, IWorkspaceTrustFolderInfo } from 'vs/platform/workspace/common/workspaceTrust';
import { isEqual, isEqualOrParent } from 'vs/base/common/extpath';
import { EditorModel } from 'vs/workbench/common/editor';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
......@@ -184,7 +184,7 @@ export class WorkspaceTrustModel extends Disposable implements IWorkspaceTrustMo
}
export class WorkspaceTrustRequestModel extends Disposable implements IWorkspaceTrustRequestModel {
trustRequest: WorkspaceTrustRequest | undefined;
trustRequestOptions: WorkspaceTrustRequestOptions | undefined;
private readonly _onDidInitiateRequest = this._register(new Emitter<void>());
readonly onDidInitiateRequest: Event<void> = this._onDidInitiateRequest.event;
......@@ -195,22 +195,22 @@ export class WorkspaceTrustRequestModel extends Disposable implements IWorkspace
private readonly _onDidCancelRequest = this._register(new Emitter<void>());
readonly onDidCancelRequest = this._onDidCancelRequest.event;
initiateRequest(request: WorkspaceTrustRequest): void {
if (this.trustRequest && (!request.modal || this.trustRequest.modal)) {
initiateRequest(options: WorkspaceTrustRequestOptions): void {
if (this.trustRequestOptions && (!options.modal || this.trustRequestOptions.modal)) {
return;
}
this.trustRequest = request;
this.trustRequestOptions = options;
this._onDidInitiateRequest.fire();
}
completeRequest(trustState?: WorkspaceTrustState): void {
this.trustRequest = undefined;
this.trustRequestOptions = undefined;
this._onDidCompleteRequest.fire(trustState);
}
cancelRequest(): void {
this.trustRequest = undefined;
this.trustRequestOptions = undefined;
this._onDidCancelRequest.fire();
}
}
......@@ -416,17 +416,17 @@ export class WorkspaceTrustService extends Disposable implements IWorkspaceTrust
return this.configurationService.getValue<boolean>(WORKSPACE_TRUST_ENABLED) ?? false;
}
async requireWorkspaceTrust(request: WorkspaceTrustRequest = { modal: true }): Promise<WorkspaceTrustState> {
async requireWorkspaceTrust(options: WorkspaceTrustRequestOptions = { modal: true }): Promise<WorkspaceTrustState> {
// Trusted workspace
if (this.currentTrustState === WorkspaceTrustState.Trusted) {
return this.currentTrustState;
}
// Untrusted workspace - soft request
if (this.currentTrustState === WorkspaceTrustState.Untrusted && !request.modal) {
if (this.currentTrustState === WorkspaceTrustState.Untrusted && !options.modal) {
return this.currentTrustState;
}
if (request.modal) {
if (options.modal) {
// Modal request
if (!this._modalTrustRequestPromise) {
// Create promise
......@@ -449,10 +449,10 @@ export class WorkspaceTrustService extends Disposable implements IWorkspaceTrust
}
}
this.requestModel.initiateRequest(request);
this.requestModel.initiateRequest(options);
this._ctxWorkspaceTrustPendingRequest.set(true);
return request.modal ? this._modalTrustRequestPromise! : this._trustRequestPromise!;
return options.modal ? this._modalTrustRequestPromise! : this._trustRequestPromise!;
}
}
......
......@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { Event } from 'vs/base/common/event';
import { WorkspaceTrustRequest, IWorkspaceTrustRequestModel, IWorkspaceTrustService, WorkspaceTrustChangeEvent, WorkspaceTrustState } from 'vs/platform/workspace/common/workspaceTrust';
import { WorkspaceTrustRequestOptions, IWorkspaceTrustRequestModel, IWorkspaceTrustService, WorkspaceTrustChangeEvent, WorkspaceTrustState } from 'vs/platform/workspace/common/workspaceTrust';
import { WorkspaceTrustRequestModel } from 'vs/workbench/services/workspaces/common/workspaceTrust';
export class TestWorkspaceTrustService implements IWorkspaceTrustService {
......@@ -22,7 +22,7 @@ export class TestWorkspaceTrustService implements IWorkspaceTrustService {
return true;
}
requireWorkspaceTrust(request: WorkspaceTrustRequest): Promise<WorkspaceTrustState> {
requireWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Promise<WorkspaceTrustState> {
return Promise.resolve(WorkspaceTrustState.Trusted);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册