1
>
/*---------------------------------------------------------------------------------------------
workspaceTrust.ts
2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
import { Emitter, Event } from '../../../../base/common/event.js';
7
>
import { Disposable, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';
8
>
import { LinkedList } from '../../../../base/common/linkedList.js';
9
>
import { Schemas } from '../../../../base/common/network.js';
10
>
import { URI } from '../../../../base/common/uri.js';
11
>
import { IPath } from '../../../../platform/window/common/window.js';
12
>
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
13
>
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
14
>
import { IRemoteAuthorityResolverService, ResolverResult } from '../../../../platform/remote/common/remoteAuthorityResolver.js';
15
>
import { getRemoteAuthority } from '../../../../platform/remote/common/remoteHosts.js';
16
>
import { isVirtualResource } from '../../../../platform/workspace/common/virtualWorkspace.js';
17
>
import { AGENT_HOST_SCHEME } from '../../../../platform/agentHost/common/agentHostUri.js';
18
>
import { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';
19
>
import { ISingleFolderWorkspaceIdentifier, isSavedWorkspace, isSingleFolderWorkspaceIdentifier, isTemporaryWorkspace, IWorkspace, IWorkspaceContextService, IWorkspaceFolder, toWorkspaceIdentifier, WorkbenchState } from '../../../../platform/workspace/common/workspace.js';
20
>
import { WorkspaceTrustRequestOptions, IWorkspaceTrustManagementService, IWorkspaceTrustInfo, IWorkspaceTrustUriInfo, IWorkspaceTrustRequestService, IWorkspaceTrustTransitionParticipant, WorkspaceTrustUriResponse, IWorkspaceTrustEnablementService, ResourceTrustRequestOptions } from '../../../../platform/workspace/common/workspaceTrust.js';
21
>
import { Memento } from '../../../common/memento.js';
22
>
import { IWorkbenchEnvironmentService } from '../../environment/common/environmentService.js';
23
>
import { IUriIdentityService } from '../../../../platform/uriIdentity/common/uriIdentity.js';
24
>
import { isEqualAuthority } from '../../../../base/common/resources.js';
25
>
import { isWeb } from '../../../../base/common/platform.js';
26
>
import { IFileService } from '../../../../platform/files/common/files.js';
27
>
import { promiseWithResolvers } from '../../../../base/common/async.js';
28
>
import { ResourceMap } from '../../../../base/common/map.js';
29
>
30
>
export const WORKSPACE_TRUST_ENABLED = 'security.workspace.trust.enabled';
31
>
export const WORKSPACE_TRUST_STARTUP_PROMPT = 'security.workspace.trust.startupPrompt';
32
>
export const WORKSPACE_TRUST_BANNER = 'security.workspace.trust.banner';
33
>
export const WORKSPACE_TRUST_UNTRUSTED_FILES = 'security.workspace.trust.untrustedFiles';
34
>
export const WORKSPACE_TRUST_EMPTY_WINDOW = 'security.workspace.trust.emptyWindow';
35
>
export const WORKSPACE_TRUST_EXTENSION_SUPPORT = 'extensions.supportUntrustedWorkspaces';
36
>
export const WORKSPACE_TRUST_STORAGE_KEY = 'content.trust.model.key';
37
>
38
>
export class CanonicalWorkspace implements IWorkspace {
39
>
constructor(
40
private readonly originalWorkspace: IWorkspace,
41
private readonly canonicalFolderUris: URI[],
42
private readonly canonicalConfiguration: URI | null | undefined
43
) { }
45
>
46
>
get folders(): IWorkspaceFolder[] {
47
return this.originalWorkspace.folders.map((folder, index) => {
48
return {