Skip to content

Commit 207c1b9

Browse files
authored
1 parent 1b01ed0 commit 207c1b9

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -857,9 +857,12 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension
857857
// Check for updates
858858
this.eventuallyCheckForUpdates(true);
859859

860-
// Always auto update builtin extensions in web
861-
if (isWeb && !this.isAutoUpdateEnabled()) {
862-
this.autoUpdateBuiltinExtensions();
860+
if (isWeb) {
861+
this.syncPinnedBuiltinExtensions();
862+
// Always auto update builtin extensions in web
863+
if (!this.isAutoUpdateEnabled()) {
864+
this.autoUpdateBuiltinExtensions();
865+
}
863866
}
864867
}
865868

@@ -1333,7 +1336,7 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension
13331336
// Skip if check updates only for builtin extensions and current extension is not builtin.
13341337
continue;
13351338
}
1336-
if (installed.isBuiltin && (installed.type === ExtensionType.System || !installed.local?.identifier.uuid)) {
1339+
if (installed.isBuiltin && !installed.pinned && (installed.type === ExtensionType.System || !installed.local?.identifier.uuid)) {
13371340
// Skip checking updates for a builtin extension if it is a system extension or if it does not has Marketplace identifier
13381341
continue;
13391342
}
@@ -1412,6 +1415,21 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension
14121415
await Promises.settled(toUpdate.map(e => this.install(e, e.local?.preRelease ? { installPreReleaseVersion: true } : undefined)));
14131416
}
14141417

1418+
private async syncPinnedBuiltinExtensions(): Promise<void> {
1419+
const infos: IExtensionInfo[] = [];
1420+
for (const installed of this.local) {
1421+
if (installed.isBuiltin && installed.pinned && installed.local?.identifier.uuid) {
1422+
infos.push({ ...installed.identifier, version: installed.version });
1423+
}
1424+
}
1425+
if (infos.length) {
1426+
const galleryExtensions = await this.galleryService.getExtensions(infos, CancellationToken.None);
1427+
if (galleryExtensions.length) {
1428+
await this.syncInstalledExtensionsWithGallery(galleryExtensions);
1429+
}
1430+
}
1431+
}
1432+
14151433
private autoUpdateExtensions(): Promise<any> {
14161434
if (!this.isAutoUpdateEnabled()) {
14171435
return Promise.resolve();

src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,9 +385,10 @@ export class WebExtensionsScannerService extends Disposable implements IWebExten
385385
if (webExtension) {
386386
result.set(galleryExtension.identifier.id.toLowerCase(), {
387387
...webExtension,
388+
identifier: { id: webExtension.identifier.id, uuid: galleryExtension.identifier.uuid },
388389
readmeUri: galleryExtension.assets.readme ? URI.parse(galleryExtension.assets.readme.uri) : undefined,
389390
changelogUri: galleryExtension.assets.changelog ? URI.parse(galleryExtension.assets.changelog.uri) : undefined,
390-
metadata: { isPreReleaseVersion: galleryExtension.properties.isPreReleaseVersion, preRelease: galleryExtension.properties.isPreReleaseVersion, isBuiltin: true }
391+
metadata: { isPreReleaseVersion: galleryExtension.properties.isPreReleaseVersion, preRelease: galleryExtension.properties.isPreReleaseVersion, isBuiltin: true, pinned: true }
391392
});
392393
}
393394
}

0 commit comments

Comments
 (0)