Skip to content

Commit

Permalink
feat: display extensions in extension gallery as builtin
Browse files Browse the repository at this point in the history
  • Loading branch information
Loïc Mangeonjean committed Feb 16, 2024
1 parent 6cd950c commit cfd9aa0
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
15 changes: 15 additions & 0 deletions src/extensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@ export async function registerRemoteExtension (directory: string): Promise<Regis
return registerExtension(manifest, ExtensionHostKind.Remote, { path: directory })
}

const extensions: IExtension[] = []
export function getExtensionManifests (): IExtension[] {
return extensions
}

export function registerExtension (manifest: IExtensionManifest, extHostKind: ExtensionHostKind.LocalProcess, params?: RegisterExtensionParams): RegisterLocalProcessExtensionResult
export function registerExtension (manifest: IExtensionManifest, extHostKind: ExtensionHostKind.LocalWebWorker, params?: RegisterExtensionParams): RegisterLocalExtensionResult
export function registerExtension (manifest: IExtensionManifest, extHostKind: ExtensionHostKind.Remote, params?: RegisterRemoteExtensionParams): RegisterRemoteExtensionResult
Expand Down Expand Up @@ -127,6 +132,10 @@ export function registerExtension (manifest: IExtensionManifest, extHostKind?: E
changelogUrl: changelogPath != null ? URI.joinPath(realLocation, changelogPath) : undefined
}

if (extHostKind !== ExtensionHostKind.Remote) {
extensions.push(extension)
}

await deltaExtensions({ toAdd: [extension], toRemove: [] })

return extension
Expand All @@ -139,6 +148,12 @@ export function registerExtension (manifest: IExtensionManifest, extHostKind?: E
},
async dispose () {
const extension = await addExtensionPromise

const index = extensions.indexOf(extension)
if (index >= 0) {
extensions.splice(extensions.indexOf(extension), 1)
}

await deltaExtensions({ toAdd: [], toRemove: [extension] })
}
}
Expand Down
14 changes: 11 additions & 3 deletions src/service-override/extensionGallery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ import { WebExtensionsScannerService } from 'vs/workbench/services/extensionMana
import { IExtensionRecommendationNotificationService } from 'vs/platform/extensionRecommendations/common/extensionRecommendations'
import { IIgnoredExtensionsManagementService, IgnoredExtensionsManagementService } from 'vs/platform/userDataSync/common/ignoredExtensions'
import { ExtensionManifestPropertiesService, IExtensionManifestPropertiesService } from 'vs/workbench/services/extensions/common/extensionManifestPropertiesService'
import { IBuiltinExtensionsScannerService } from 'vs/platform/extensions/common/extensions'
import { BuiltinExtensionsScannerService } from 'vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService'
import { IBuiltinExtensionsScannerService, IExtension } from 'vs/platform/extensions/common/extensions'
import { ExtensionIgnoredRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionIgnoredRecommendationsService'
import { IWorkspaceExtensionsConfigService, WorkspaceExtensionsConfigService } from 'vs/workbench/services/extensionRecommendations/common/workspaceExtensionsConfig'
import { ExtensionRecommendationNotificationService } from 'vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService'
Expand All @@ -29,6 +28,7 @@ import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteA
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'
import { ILabelService } from 'vs/platform/label/common/label'
import { registerAssets } from '../assets'
import { getExtensionManifests } from '../extensions'

// plugin-import-meta-asset only allows relative paths
registerAssets({
Expand Down Expand Up @@ -57,6 +57,14 @@ class ExtensionManagementServerServiceOverride extends ExtensionManagementServer
}
}

class CustomBuiltinExtensionsScannerService implements IBuiltinExtensionsScannerService {
_serviceBrand: undefined

async scanBuiltinExtensions (): Promise<IExtension[]> {
return getExtensionManifests()
}
}

export interface ExtensionGalleryOptions {
/**
* Whether we should only allow for web extensions to be installed, this is generally
Expand All @@ -78,7 +86,7 @@ export default function getServiceOverride (options: ExtensionGalleryOptions = {
[IIgnoredExtensionsManagementService.toString()]: new SyncDescriptor(IgnoredExtensionsManagementService, [], true),
[IExtensionManifestPropertiesService.toString()]: new SyncDescriptor(ExtensionManifestPropertiesService, [], true),
[IExtensionManagementService.toString()]: new SyncDescriptor(ExtensionManagementService, [], true),
[IBuiltinExtensionsScannerService.toString()]: new SyncDescriptor(BuiltinExtensionsScannerService, [], true),
[IBuiltinExtensionsScannerService.toString()]: new SyncDescriptor(CustomBuiltinExtensionsScannerService, [], true),
[IWorkspaceExtensionsConfigService.toString()]: new SyncDescriptor(WorkspaceExtensionsConfigService, [], true),
[IExtensionTipsService.toString()]: new SyncDescriptor(ExtensionTipsService, [], true),
[IRemoteUserDataProfilesService.toString()]: new SyncDescriptor(RemoteUserDataProfilesService, [], true),
Expand Down

0 comments on commit cfd9aa0

Please sign in to comment.