Skip to content

Commit b962dd0

Browse files
authored
Check for treatment and guard against malformed JSON in featured extension experiment (microsoft#178180)
Check for treatment and guard against malformed JSON
1 parent de3c6c9 commit b962dd0

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/vs/workbench/contrib/welcomeGettingStarted/browser/featuredExtensionService.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export class FeaturedExtensionsService extends Disposable implements IFeaturedEx
5959

6060
await this._init();
6161

62-
let treatments = this.treatment?.extensions.filter(extension => !this.ignoredExtensions.has(extension)) ?? new Array<string>();
62+
let treatments = this.treatment?.extensions?.filter(extension => !this.ignoredExtensions.has(extension)) ?? new Array<string>();
6363
const featuredExtensions: IFeaturedExtension[] = new Array();
6464

6565
if (this.treatment?.showAsList !== 'true' && treatments.length > 0) {
@@ -94,12 +94,16 @@ export class FeaturedExtensionsService extends Disposable implements IFeaturedEx
9494
new Promise<string | undefined>(resolve => setTimeout(() => resolve(''), 2000))
9595
]);
9696

97-
this.treatment = extensions ? JSON.parse(extensions) : { extensions: [] };
97+
try {
98+
this.treatment = extensions ? JSON.parse(extensions) : { extensions: [] };
99+
} catch {
100+
}
101+
98102
this.title = extensionListTitle ?? localize('gettingStarted.featuredTitle', 'Featured');
99103

100-
if (this.treatment) {
104+
if (this.treatment?.extensions && Array.isArray(this.treatment.extensions)) {
101105
const installed = await this.extensionManagementService.getInstalled();
102-
for (const extension of Object.values(this.treatment.extensions)) {
106+
for (const extension of this.treatment.extensions) {
103107
if (installed.some(e => ExtensionIdentifier.equals(e.identifier.id, extension))) {
104108
this.ignoredExtensions.add(extension);
105109
}

0 commit comments

Comments
 (0)