@theia/workspace 1.68.0-next.48 → 1.68.0-next.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/lib/browser/workspace-frontend-contribution.d.ts.map +1 -1
  2. package/lib/browser/workspace-frontend-contribution.js +3 -0
  3. package/lib/browser/workspace-frontend-contribution.js.map +1 -1
  4. package/lib/browser/workspace-frontend-module.d.ts +1 -0
  5. package/lib/browser/workspace-frontend-module.d.ts.map +1 -1
  6. package/lib/browser/workspace-frontend-module.js +2 -0
  7. package/lib/browser/workspace-frontend-module.js.map +1 -1
  8. package/lib/browser/workspace-trust-dialog.d.ts +13 -0
  9. package/lib/browser/workspace-trust-dialog.d.ts.map +1 -0
  10. package/lib/browser/workspace-trust-dialog.js +66 -0
  11. package/lib/browser/workspace-trust-dialog.js.map +1 -0
  12. package/lib/browser/workspace-trust-service.d.ts +58 -2
  13. package/lib/browser/workspace-trust-service.d.ts.map +1 -1
  14. package/lib/browser/workspace-trust-service.js +177 -37
  15. package/lib/browser/workspace-trust-service.js.map +1 -1
  16. package/lib/browser/workspace-trust-service.spec.js +192 -39
  17. package/lib/browser/workspace-trust-service.spec.js.map +1 -1
  18. package/lib/common/untitled-workspace-service.d.ts +8 -1
  19. package/lib/common/untitled-workspace-service.d.ts.map +1 -1
  20. package/lib/common/untitled-workspace-service.js +21 -2
  21. package/lib/common/untitled-workspace-service.js.map +1 -1
  22. package/package.json +5 -5
  23. package/src/browser/style/index.css +75 -0
  24. package/src/browser/workspace-frontend-contribution.ts +2 -0
  25. package/src/browser/workspace-frontend-module.ts +4 -1
  26. package/src/browser/workspace-trust-dialog.tsx +90 -0
  27. package/src/browser/workspace-trust-service.spec.ts +246 -43
  28. package/src/browser/workspace-trust-service.ts +213 -40
  29. package/src/common/untitled-workspace-service.ts +21 -2
@@ -20,6 +20,7 @@ const sinon = require("sinon");
20
20
  const preferences_1 = require("@theia/core/lib/common/preferences");
21
21
  const workspace_trust_service_1 = require("./workspace-trust-service");
22
22
  const workspace_trust_preferences_1 = require("../common/workspace-trust-preferences");
23
+ const uri_1 = require("@theia/core/lib/common/uri");
23
24
  class TestableWorkspaceTrustService extends workspace_trust_service_1.WorkspaceTrustService {
24
25
  async testHandlePreferenceChange(change) {
25
26
  return this.handlePreferenceChange(change);
@@ -36,12 +37,168 @@ class TestableWorkspaceTrustService extends workspace_trust_service_1.WorkspaceT
36
37
  isWorkspaceTrustResolved() {
37
38
  return super.isWorkspaceTrustResolved();
38
39
  }
40
+ async testCalculateWorkspaceTrust() {
41
+ return this.calculateWorkspaceTrust();
42
+ }
39
43
  }
40
44
  describe('WorkspaceTrustService', () => {
41
45
  let service;
42
46
  beforeEach(() => {
43
47
  service = new TestableWorkspaceTrustService();
44
48
  });
49
+ afterEach(() => {
50
+ sinon.restore();
51
+ });
52
+ describe('calculateWorkspaceTrust', () => {
53
+ let workspaceTrustPrefStub;
54
+ let workspaceServiceStub;
55
+ let untitledWorkspaceServiceStub;
56
+ let envVariablesServerStub;
57
+ beforeEach(() => {
58
+ workspaceTrustPrefStub = {
59
+ [workspace_trust_preferences_1.WORKSPACE_TRUST_ENABLED]: true,
60
+ [workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW]: false,
61
+ [workspace_trust_preferences_1.WORKSPACE_TRUST_STARTUP_PROMPT]: workspace_trust_preferences_1.WorkspaceTrustPrompt.NEVER,
62
+ [workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS]: []
63
+ };
64
+ workspaceServiceStub = {
65
+ tryGetRoots: () => [],
66
+ workspace: undefined,
67
+ saved: false
68
+ };
69
+ untitledWorkspaceServiceStub = {
70
+ isUntitledWorkspace: () => false
71
+ };
72
+ envVariablesServerStub = {
73
+ getConfigDirUri: async () => 'file:///home/user/.theia'
74
+ };
75
+ service.workspaceTrustPref = workspaceTrustPrefStub;
76
+ service.workspaceService = workspaceServiceStub;
77
+ service.untitledWorkspaceService = untitledWorkspaceServiceStub;
78
+ service.envVariablesServer = envVariablesServerStub;
79
+ });
80
+ it('should return true when trust is disabled', async () => {
81
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_ENABLED] = false;
82
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.true;
83
+ });
84
+ describe('empty workspace', () => {
85
+ it('should return emptyWindow setting when no workspace is open', async () => {
86
+ workspaceServiceStub.workspace = undefined;
87
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW] = true;
88
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.true;
89
+ });
90
+ it('should return false when emptyWindow is false and no workspace', async () => {
91
+ workspaceServiceStub.workspace = undefined;
92
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW] = false;
93
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.false;
94
+ });
95
+ it('should return emptyWindow setting for untitled workspace with no folders', async () => {
96
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///home/user/.theia/workspaces/Untitled-123.theia-workspace') };
97
+ workspaceServiceStub.tryGetRoots = () => [];
98
+ untitledWorkspaceServiceStub.isUntitledWorkspace = () => true;
99
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW] = true;
100
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.true;
101
+ });
102
+ it('should not treat saved workspace with no folders as empty', async () => {
103
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///home/user/my.theia-workspace') };
104
+ workspaceServiceStub.tryGetRoots = () => [];
105
+ workspaceServiceStub.saved = true;
106
+ untitledWorkspaceServiceStub.isUntitledWorkspace = () => false;
107
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW] = true;
108
+ // Should return false because saved workspace with 0 folders is not "empty"
109
+ // and the workspace file is not trusted
110
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.false;
111
+ });
112
+ });
113
+ describe('single-root workspace', () => {
114
+ it('should return true when folder is in trusted folders', async () => {
115
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] = ['file:///home/user/project'];
116
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///home/user/project') };
117
+ workspaceServiceStub.tryGetRoots = () => [
118
+ { resource: new uri_1.default('file:///home/user/project') }
119
+ ];
120
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.true;
121
+ });
122
+ it('should return true when parent folder is trusted', async () => {
123
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] = ['file:///home/user'];
124
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///home/user/project') };
125
+ workspaceServiceStub.tryGetRoots = () => [
126
+ { resource: new uri_1.default('file:///home/user/project') }
127
+ ];
128
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.true;
129
+ });
130
+ it('should return false when folder is not trusted', async () => {
131
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] = ['file:///home/other'];
132
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///home/user/project') };
133
+ workspaceServiceStub.tryGetRoots = () => [
134
+ { resource: new uri_1.default('file:///home/user/project') }
135
+ ];
136
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.false;
137
+ });
138
+ });
139
+ describe('multi-root workspace', () => {
140
+ it('should return true when all folders are trusted', async () => {
141
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] = [
142
+ 'file:///home/user/project1',
143
+ 'file:///home/user/project2'
144
+ ];
145
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///home/user/my.theia-workspace') };
146
+ workspaceServiceStub.tryGetRoots = () => [
147
+ { resource: new uri_1.default('file:///home/user/project1') },
148
+ { resource: new uri_1.default('file:///home/user/project2') }
149
+ ];
150
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.true;
151
+ });
152
+ it('should return false when one folder is not trusted', async () => {
153
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] = ['file:///home/user/project1'];
154
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///home/user/my.theia-workspace') };
155
+ workspaceServiceStub.tryGetRoots = () => [
156
+ { resource: new uri_1.default('file:///home/user/project1') },
157
+ { resource: new uri_1.default('file:///home/user/project2') }
158
+ ];
159
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.false;
160
+ });
161
+ it('should return true when parent folder covers all roots', async () => {
162
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] = ['file:///home/user'];
163
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///home/user/my.theia-workspace') };
164
+ workspaceServiceStub.tryGetRoots = () => [
165
+ { resource: new uri_1.default('file:///home/user/project1') },
166
+ { resource: new uri_1.default('file:///home/user/project2') }
167
+ ];
168
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.true;
169
+ });
170
+ });
171
+ describe('saved workspace file trust', () => {
172
+ it('should require workspace file to be trusted for saved workspaces', async () => {
173
+ // Folder is trusted but workspace file location is not
174
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] = ['file:///home/user/project'];
175
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///other/location/my.theia-workspace') };
176
+ workspaceServiceStub.saved = true;
177
+ workspaceServiceStub.tryGetRoots = () => [
178
+ { resource: new uri_1.default('file:///home/user/project') }
179
+ ];
180
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.false;
181
+ });
182
+ it('should return true when both folder and workspace file are trusted', async () => {
183
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] = ['file:///home/user'];
184
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///home/user/my.theia-workspace') };
185
+ workspaceServiceStub.saved = true;
186
+ workspaceServiceStub.tryGetRoots = () => [
187
+ { resource: new uri_1.default('file:///home/user/project') }
188
+ ];
189
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.true;
190
+ });
191
+ it('should not require workspace file trust for unsaved workspaces', async () => {
192
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS] = ['file:///home/user/project'];
193
+ workspaceServiceStub.workspace = { resource: new uri_1.default('file:///tmp/untitled.theia-workspace') };
194
+ workspaceServiceStub.saved = false;
195
+ workspaceServiceStub.tryGetRoots = () => [
196
+ { resource: new uri_1.default('file:///home/user/project') }
197
+ ];
198
+ (0, chai_1.expect)(await service.testCalculateWorkspaceTrust()).to.be.true;
199
+ });
200
+ });
201
+ });
45
202
  describe('handleWorkspaceChanged', () => {
46
203
  let resolveWorkspaceTrustStub;
47
204
  let getWorkspaceTrustStub;
@@ -51,9 +208,6 @@ describe('WorkspaceTrustService', () => {
51
208
  getWorkspaceTrustStub = sinon.stub(service, 'getWorkspaceTrust').resolves(true);
52
209
  updateRestrictedModeIndicatorStub = sinon.stub(service, 'updateRestrictedModeIndicator');
53
210
  });
54
- afterEach(() => {
55
- sinon.restore();
56
- });
57
211
  it('should reset trust state when workspace changes', async () => {
58
212
  service.setCurrentTrust(true);
59
213
  await service.testHandleWorkspaceChanged();
@@ -78,60 +232,51 @@ describe('WorkspaceTrustService', () => {
78
232
  });
79
233
  });
80
234
  describe('handlePreferenceChange', () => {
81
- let isWorkspaceInTrustedFoldersStub;
235
+ let areAllWorkspaceUrisTrustedStub;
82
236
  let setWorkspaceTrustStub;
237
+ let isEmptyWorkspaceStub;
83
238
  let workspaceTrustPrefStub;
84
- let workspaceServiceStub;
85
239
  beforeEach(() => {
86
- isWorkspaceInTrustedFoldersStub = sinon.stub(service, 'isWorkspaceInTrustedFolders');
240
+ areAllWorkspaceUrisTrustedStub = sinon.stub(service, 'areAllWorkspaceUrisTrusted');
87
241
  setWorkspaceTrustStub = sinon.stub(service, 'setWorkspaceTrust');
242
+ isEmptyWorkspaceStub = sinon.stub(service, 'isEmptyWorkspace');
88
243
  // Mock workspaceTrustPref - default emptyWindow to false so trusted folders logic runs
89
244
  workspaceTrustPrefStub = { [workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW]: false };
90
245
  service.workspaceTrustPref = workspaceTrustPrefStub;
91
- // Mock workspaceService with a workspace (non-empty)
92
- workspaceServiceStub = { workspace: { resource: { toString: () => 'file:///some/workspace' } } };
93
- service.workspaceService = workspaceServiceStub;
94
- });
95
- afterEach(() => {
96
- sinon.restore();
246
+ // Default to non-empty workspace
247
+ isEmptyWorkspaceStub.resolves(false);
97
248
  });
98
- it('should update trust to true when folder is added to trustedFolders', async () => {
249
+ it('should update trust to true when all workspace URIs become trusted', async () => {
99
250
  service.setCurrentTrust(false);
100
- isWorkspaceInTrustedFoldersStub.returns(true);
251
+ areAllWorkspaceUrisTrustedStub.resolves(true);
101
252
  const change = {
102
253
  preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS,
103
254
  scope: preferences_1.PreferenceScope.User,
104
255
  domain: [],
105
- newValue: ['/some/path'],
106
- oldValue: [],
107
256
  affects: () => true
108
257
  };
109
258
  await service.testHandlePreferenceChange(change);
110
259
  (0, chai_1.expect)(setWorkspaceTrustStub.calledOnceWith(true)).to.be.true;
111
260
  });
112
- it('should update trust to false when folder is removed from trustedFolders', async () => {
261
+ it('should update trust to false when not all workspace URIs are trusted', async () => {
113
262
  service.setCurrentTrust(true);
114
- isWorkspaceInTrustedFoldersStub.returns(false);
263
+ areAllWorkspaceUrisTrustedStub.resolves(false);
115
264
  const change = {
116
265
  preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS,
117
266
  scope: preferences_1.PreferenceScope.User,
118
267
  domain: [],
119
- newValue: [],
120
- oldValue: ['/some/path'],
121
268
  affects: () => true
122
269
  };
123
270
  await service.testHandlePreferenceChange(change);
124
271
  (0, chai_1.expect)(setWorkspaceTrustStub.calledOnceWith(false)).to.be.true;
125
272
  });
126
- it('should not update trust when trustedFolders change does not affect current workspace', async () => {
273
+ it('should not update trust when trustedFolders change does not affect trust status', async () => {
127
274
  service.setCurrentTrust(false);
128
- isWorkspaceInTrustedFoldersStub.returns(false);
275
+ areAllWorkspaceUrisTrustedStub.resolves(false);
129
276
  const change = {
130
277
  preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS,
131
278
  scope: preferences_1.PreferenceScope.User,
132
279
  domain: [],
133
- newValue: ['/other/path'],
134
- oldValue: [],
135
280
  affects: () => true
136
281
  };
137
282
  await service.testHandlePreferenceChange(change);
@@ -139,18 +284,16 @@ describe('WorkspaceTrustService', () => {
139
284
  });
140
285
  describe('emptyWindow setting changes', () => {
141
286
  beforeEach(() => {
142
- // Reset workspace to undefined for empty window tests
143
- workspaceServiceStub.workspace = undefined;
287
+ // Reset to empty workspace for empty window tests
288
+ isEmptyWorkspaceStub.resolves(true);
144
289
  });
145
290
  it('should update trust to true when emptyWindow setting changes to true for empty window', async () => {
146
291
  service.setCurrentTrust(false);
147
- workspaceServiceStub.workspace = undefined;
292
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW] = true;
148
293
  const change = {
149
294
  preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW,
150
295
  scope: preferences_1.PreferenceScope.User,
151
296
  domain: [],
152
- newValue: true,
153
- oldValue: false,
154
297
  affects: () => true
155
298
  };
156
299
  await service.testHandlePreferenceChange(change);
@@ -158,27 +301,22 @@ describe('WorkspaceTrustService', () => {
158
301
  });
159
302
  it('should update trust to false when emptyWindow setting changes to false for empty window', async () => {
160
303
  service.setCurrentTrust(true);
161
- workspaceServiceStub.workspace = undefined;
162
304
  const change = {
163
305
  preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW,
164
306
  scope: preferences_1.PreferenceScope.User,
165
307
  domain: [],
166
- newValue: false,
167
- oldValue: true,
168
308
  affects: () => true
169
309
  };
170
310
  await service.testHandlePreferenceChange(change);
171
311
  (0, chai_1.expect)(setWorkspaceTrustStub.calledOnceWith(false)).to.be.true;
172
312
  });
173
- it('should not update trust when emptyWindow setting changes but workspace is open', async () => {
313
+ it('should not update trust when emptyWindow setting changes but workspace has roots', async () => {
174
314
  service.setCurrentTrust(false);
175
- workspaceServiceStub.workspace = { resource: { toString: () => 'file:///some/path' } };
315
+ isEmptyWorkspaceStub.resolves(false);
176
316
  const change = {
177
317
  preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW,
178
318
  scope: preferences_1.PreferenceScope.User,
179
319
  domain: [],
180
- newValue: true,
181
- oldValue: false,
182
320
  affects: () => true
183
321
  };
184
322
  await service.testHandlePreferenceChange(change);
@@ -186,13 +324,28 @@ describe('WorkspaceTrustService', () => {
186
324
  });
187
325
  it('should not update trust when emptyWindow setting changes but trust already matches', async () => {
188
326
  service.setCurrentTrust(true);
189
- workspaceServiceStub.workspace = undefined;
327
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW] = true;
190
328
  const change = {
191
329
  preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW,
192
330
  scope: preferences_1.PreferenceScope.User,
193
331
  domain: [],
194
- newValue: true,
195
- oldValue: false,
332
+ affects: () => true
333
+ };
334
+ await service.testHandlePreferenceChange(change);
335
+ (0, chai_1.expect)(setWorkspaceTrustStub.called).to.be.false;
336
+ });
337
+ });
338
+ describe('trustedFolders change for empty window with emptyWindow enabled', () => {
339
+ beforeEach(() => {
340
+ isEmptyWorkspaceStub.resolves(true);
341
+ workspaceTrustPrefStub[workspace_trust_preferences_1.WORKSPACE_TRUST_EMPTY_WINDOW] = true;
342
+ });
343
+ it('should not change trust when trustedFolders change for empty window with emptyWindow enabled', async () => {
344
+ service.setCurrentTrust(true);
345
+ const change = {
346
+ preferenceName: workspace_trust_preferences_1.WORKSPACE_TRUST_TRUSTED_FOLDERS,
347
+ scope: preferences_1.PreferenceScope.User,
348
+ domain: [],
196
349
  affects: () => true
197
350
  };
198
351
  await service.testHandlePreferenceChange(change);
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-trust-service.spec.js","sourceRoot":"","sources":["../../src/browser/workspace-trust-service.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,+BAA8B;AAC9B,+BAA+B;AAC/B,oEAAuF;AACvF,uEAAkE;AAClE,uFAAsH;AAEtH,MAAM,6BAA8B,SAAQ,+CAAqB;IACtD,KAAK,CAAC,0BAA0B,CAAC,MAAwB;QAC5D,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,0BAA0B;QACnC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACzC,CAAC;IAEM,eAAe,CAAC,KAAc;QACjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAEe,wBAAwB;QACpC,OAAO,KAAK,CAAC,wBAAwB,EAAE,CAAC;IAC5C,CAAC;CACJ;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACnC,IAAI,OAAsC,CAAC;IAE3C,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,GAAG,IAAI,6BAA6B,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACpC,IAAI,yBAA0C,CAAC;QAC/C,IAAI,qBAAsC,CAAC;QAC3C,IAAI,iCAAkD,CAAC;QAEvD,UAAU,CAAC,GAAG,EAAE;YACZ,yBAAyB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAoE,EAAE,uBAAuB,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjJ,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAChF,iCAAiC,GAAG,KAAK,CAAC,IAAI,CAC1C,OAAiF,EACjF,+BAA+B,CAClC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACX,KAAK,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC7D,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE9B,MAAM,OAAO,CAAC,0BAA0B,EAAE,CAAC;YAE3C,IAAA,aAAM,EAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC7D,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE9B,MAAM,OAAO,CAAC,0BAA0B,EAAE,CAAC;YAE3C,IAAA,aAAM,EAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;YAC3F,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEtC,MAAM,OAAO,CAAC,0BAA0B,EAAE,CAAC;YAE3C,IAAA,aAAM,EAAC,iCAAiC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACtE,0BAA0B;YAC1B,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE9B,MAAM,OAAO,CAAC,0BAA0B,EAAE,CAAC;YAE3C,0FAA0F;YAC1F,IAAA,aAAM,EAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACpC,IAAI,+BAAgD,CAAC;QACrD,IAAI,qBAAsC,CAAC;QAC3C,IAAI,sBAAkD,CAAC;QACvD,IAAI,oBAA4C,CAAC;QAEjD,UAAU,CAAC,GAAG,EAAE;YACZ,+BAA+B,GAAG,KAAK,CAAC,IAAI,CAAC,OAAoE,EAAE,6BAA6B,CAAC,CAAC;YAClJ,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YACjE,uFAAuF;YACvF,sBAAsB,GAAG,EAAE,CAAC,0DAA4B,CAAC,EAAE,KAAK,EAAE,CAAC;YAClE,OAAyE,CAAC,kBAAkB,GAAG,sBAAsB,CAAC;YACvH,qDAAqD;YACrD,oBAAoB,GAAG,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,wBAAwB,EAAE,EAAE,EAAE,CAAC;YAChG,OAAmE,CAAC,gBAAgB,GAAG,oBAAoB,CAAC;QACjH,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,EAAE;YACX,KAAK,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAChF,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC/B,+BAA+B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAqB;gBAC7B,cAAc,EAAE,6DAA+B;gBAC/C,KAAK,EAAE,6BAAe,CAAC,IAAI;gBAC3B,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,CAAC,YAAY,CAAC;gBACxB,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;aACtB,CAAC;YAEF,MAAM,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAA,aAAM,EAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;YACrF,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9B,+BAA+B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAqB;gBAC7B,cAAc,EAAE,6DAA+B;gBAC/C,KAAK,EAAE,6BAAe,CAAC,IAAI;gBAC3B,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,CAAC,YAAY,CAAC;gBACxB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;aACtB,CAAC;YAEF,MAAM,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAA,aAAM,EAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;YAClG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC/B,+BAA+B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAqB;gBAC7B,cAAc,EAAE,6DAA+B;gBAC/C,KAAK,EAAE,6BAAe,CAAC,IAAI;gBAC3B,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,CAAC,aAAa,CAAC;gBACzB,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;aACtB,CAAC;YAEF,MAAM,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAA,aAAM,EAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACzC,UAAU,CAAC,GAAG,EAAE;gBACZ,sDAAsD;gBACtD,oBAAoB,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;gBACnG,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC/B,oBAAoB,CAAC,SAAS,GAAG,SAAS,CAAC;gBAE3C,MAAM,MAAM,GAAqB;oBAC7B,cAAc,EAAE,0DAA4B;oBAC5C,KAAK,EAAE,6BAAe,CAAC,IAAI;oBAC3B,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;iBACtB,CAAC;gBAEF,MAAM,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;gBAEjD,IAAA,aAAM,EAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAClE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;gBACrG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAC9B,oBAAoB,CAAC,SAAS,GAAG,SAAS,CAAC;gBAE3C,MAAM,MAAM,GAAqB;oBAC7B,cAAc,EAAE,0DAA4B;oBAC5C,KAAK,EAAE,6BAAe,CAAC,IAAI;oBAC3B,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,KAAK;oBACf,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;iBACtB,CAAC;gBAEF,MAAM,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;gBAEjD,IAAA,aAAM,EAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACnE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;gBAC5F,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC/B,oBAAoB,CAAC,SAAS,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAEvF,MAAM,MAAM,GAAqB;oBAC7B,cAAc,EAAE,0DAA4B;oBAC5C,KAAK,EAAE,6BAAe,CAAC,IAAI;oBAC3B,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;iBACtB,CAAC;gBAEF,MAAM,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;gBAEjD,IAAA,aAAM,EAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;gBAChG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAC9B,oBAAoB,CAAC,SAAS,GAAG,SAAS,CAAC;gBAE3C,MAAM,MAAM,GAAqB;oBAC7B,cAAc,EAAE,0DAA4B;oBAC5C,KAAK,EAAE,6BAAe,CAAC,IAAI;oBAC3B,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;iBACtB,CAAC;gBAEF,MAAM,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;gBAEjD,IAAA,aAAM,EAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YACrD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"workspace-trust-service.spec.js","sourceRoot":"","sources":["../../src/browser/workspace-trust-service.spec.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,14 @@ import { MaybePromise } from '@theia/core';
3
3
  import { WorkspaceFileService } from './workspace-file-service';
4
4
  export declare class UntitledWorkspaceService {
5
5
  protected readonly workspaceFileService: WorkspaceFileService;
6
- isUntitledWorkspace(candidate?: URI): boolean;
6
+ /**
7
+ * Check if a URI is an untitled workspace.
8
+ * @param candidate The URI to check
9
+ * @param configDirUri Optional config directory URI. If provided, also verifies
10
+ * that the candidate is under the expected workspaces directory.
11
+ * This is the secure check and should be used when possible.
12
+ */
13
+ isUntitledWorkspace(candidate?: URI, configDirUri?: URI): boolean;
7
14
  getUntitledWorkspaceUri(configDirUri: URI, isAcceptable: (candidate: URI) => MaybePromise<boolean>, warnOnHits?: () => unknown): Promise<URI>;
8
15
  }
9
16
  //# sourceMappingURL=untitled-workspace-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"untitled-workspace-service.d.ts","sourceRoot":"","sources":["../../src/common/untitled-workspace-service.ts"],"names":[],"mappings":"AAgBA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,qBACa,wBAAwB;IAGjC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAE9D,mBAAmB,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,OAAO;IAIvC,uBAAuB,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;CAkBtJ"}
1
+ {"version":3,"file":"untitled-workspace-service.d.ts","sourceRoot":"","sources":["../../src/common/untitled-workspace-service.ts"],"names":[],"mappings":"AAgBA,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,qBACa,wBAAwB;IAGjC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAE9D;;;;;;OAMG;IACH,mBAAmB,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,GAAG,OAAO;IAgB3D,uBAAuB,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;CAkBtJ"}
@@ -20,8 +20,27 @@ const tslib_1 = require("tslib");
20
20
  const inversify_1 = require("@theia/core/shared/inversify");
21
21
  const workspace_file_service_1 = require("./workspace-file-service");
22
22
  let UntitledWorkspaceService = class UntitledWorkspaceService {
23
- isUntitledWorkspace(candidate) {
24
- return !!candidate && this.workspaceFileService.isWorkspaceFile(candidate) && candidate.path.base.startsWith('Untitled');
23
+ /**
24
+ * Check if a URI is an untitled workspace.
25
+ * @param candidate The URI to check
26
+ * @param configDirUri Optional config directory URI. If provided, also verifies
27
+ * that the candidate is under the expected workspaces directory.
28
+ * This is the secure check and should be used when possible.
29
+ */
30
+ isUntitledWorkspace(candidate, configDirUri) {
31
+ if (!candidate || !this.workspaceFileService.isWorkspaceFile(candidate)) {
32
+ return false;
33
+ }
34
+ if (!candidate.path.base.startsWith('Untitled')) {
35
+ return false;
36
+ }
37
+ // If configDirUri is provided, verify the candidate is in the expected location
38
+ if (configDirUri) {
39
+ const expectedParentDir = configDirUri.resolve('workspaces');
40
+ return expectedParentDir.isEqualOrParent(candidate);
41
+ }
42
+ // Without configDirUri, fall back to name-only check (less secure)
43
+ return true;
25
44
  }
26
45
  async getUntitledWorkspaceUri(configDirUri, isAcceptable, warnOnHits) {
27
46
  const parentDir = configDirUri.resolve('workspaces');
@@ -1 +1 @@
1
- {"version":3,"file":"untitled-workspace-service.js","sourceRoot":"","sources":["../../src/common/untitled-workspace-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,4DAAkE;AAElE,qEAAgE;AAGzD,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAKjC,mBAAmB,CAAC,SAAe;QAC/B,OAAO,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC7H,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,YAAiB,EAAE,YAAuD,EAAE,UAA0B;QAChI,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,CAAC;QACnF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;QACjG,IAAI,GAAG,CAAC;QACR,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,GAAG,CAAC;YACA,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;YAChG,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAClB,UAAU,EAAE,EAAE,CAAC;YACnB,CAAC;YACD,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACrF,CAAC;QACL,CAAC,QAAQ,CAAC,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;QACrC,OAAO,GAAG,CAAC;IACf,CAAC;CACJ,CAAA;AA3BY,4DAAwB;AAGd;IADlB,IAAA,kBAAM,EAAC,6CAAoB,CAAC;sCACY,6CAAoB;sEAAC;mCAHrD,wBAAwB;IADpC,IAAA,sBAAU,GAAE;GACA,wBAAwB,CA2BpC"}
1
+ {"version":3,"file":"untitled-workspace-service.js","sourceRoot":"","sources":["../../src/common/untitled-workspace-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,4DAAkE;AAElE,qEAAgE;AAGzD,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAKjC;;;;;;OAMG;IACH,mBAAmB,CAAC,SAAe,EAAE,YAAkB;QACnD,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,gFAAgF;QAChF,IAAI,YAAY,EAAE,CAAC;YACf,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC7D,OAAO,iBAAiB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC;QACD,mEAAmE;QACnE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,YAAiB,EAAE,YAAuD,EAAE,UAA0B;QAChI,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,CAAC;QACnF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;QACjG,IAAI,GAAG,CAAC;QACR,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,GAAG,CAAC;YACA,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;YAChG,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAClB,UAAU,EAAE,EAAE,CAAC;YACnB,CAAC;YACD,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACrF,CAAC;QACL,CAAC,QAAQ,CAAC,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;QACrC,OAAO,GAAG,CAAC;IACf,CAAC;CACJ,CAAA;AA9CY,4DAAwB;AAGd;IADlB,IAAA,kBAAM,EAAC,6CAAoB,CAAC;sCACY,6CAAoB;sEAAC;mCAHrD,wBAAwB;IADpC,IAAA,sBAAU,GAAE;GACA,wBAAwB,CA8CpC"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@theia/workspace",
3
- "version": "1.68.0-next.48+c13611b3f",
3
+ "version": "1.68.0-next.79+c38f18ec72c",
4
4
  "description": "Theia - Workspace Extension",
5
5
  "dependencies": {
6
- "@theia/core": "1.68.0-next.48+c13611b3f",
7
- "@theia/filesystem": "1.68.0-next.48+c13611b3f",
8
- "@theia/variable-resolver": "1.68.0-next.48+c13611b3f",
6
+ "@theia/core": "1.68.0-next.79+c38f18ec72c",
7
+ "@theia/filesystem": "1.68.0-next.79+c38f18ec72c",
8
+ "@theia/variable-resolver": "1.68.0-next.79+c38f18ec72c",
9
9
  "jsonc-parser": "^2.2.0",
10
10
  "tslib": "^2.6.2",
11
11
  "valid-filename": "^2.0.1"
@@ -52,5 +52,5 @@
52
52
  "nyc": {
53
53
  "extends": "../../configs/nyc.json"
54
54
  },
55
- "gitHead": "c13611b3f07bfc3d2c7525d8488283ff3e575422"
55
+ "gitHead": "c38f18ec72c0cb454100658a01331bd9fb7bd8cc"
56
56
  }
@@ -0,0 +1,75 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2026 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ /* Workspace Trust Dialog Styles */
18
+
19
+ .workspace-trust-content {
20
+ display: flex;
21
+ flex-direction: column;
22
+ gap: calc(var(--theia-ui-padding) * 3);
23
+ padding: calc(var(--theia-ui-padding) * 2);
24
+ }
25
+
26
+ .workspace-trust-header {
27
+ display: flex;
28
+ align-items: center;
29
+ gap: calc(var(--theia-ui-padding) * 2);
30
+ }
31
+
32
+ .workspace-trust-header i {
33
+ font-size: calc(var(--theia-ui-font-size3) * 2.5) !important;
34
+ color: var(--theia-button-background);
35
+ }
36
+
37
+ .workspace-trust-title {
38
+ font-size: var(--theia-ui-font-size2);
39
+ font-weight: 600;
40
+ line-height: var(--theia-content-line-height);
41
+ }
42
+
43
+ .workspace-trust-description,
44
+ .workspace-trust-folder {
45
+ margin-left: calc(var(--theia-ui-font-size3) * 2.5 + var(--theia-ui-padding) * 2);
46
+ }
47
+
48
+ .workspace-trust-dialog .dialogControl {
49
+ margin-left: calc(var(--theia-ui-font-size3) * 2.5 + var(--theia-ui-padding) * 4);
50
+ padding-bottom: calc(var(--theia-ui-padding) * 4) !important;
51
+ justify-content: flex-start !important;
52
+ }
53
+
54
+ .workspace-trust-description {
55
+ color: var(--theia-descriptionForeground);
56
+ line-height: var(--theia-content-line-height);
57
+ }
58
+
59
+ .workspace-trust-folder-list {
60
+ padding-inline-start: 15px;
61
+ margin-block: 0;
62
+ }
63
+
64
+ .workspace-trust-folder {
65
+ font-family: var(--theia-code-font-family);
66
+ font-size: var(--theia-code-font-size);
67
+ color: var(--theia-foreground);
68
+ background-color: var(--theia-editor-background);
69
+ padding: var(--theia-ui-padding) calc(var(--theia-ui-padding) * 1.5);
70
+ border-radius: 4px;
71
+ }
72
+
73
+ .workspace-trust-dialog .dialogControl .theia-button.secondary {
74
+ margin-left: 0;
75
+ }
@@ -531,6 +531,8 @@ export class WorkspaceFrontendContribution implements CommandContribution, Keybi
531
531
  this.workspaceTrustService.setWorkspaceTrust(newTrust);
532
532
  if (newTrust) {
533
533
  await this.workspaceTrustService.addToTrustedFolders();
534
+ } else {
535
+ await this.workspaceTrustService.removeFromTrustedFolders();
534
536
  }
535
537
  }
536
538
  }
@@ -14,6 +14,8 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
+ import '../../src/browser/style/index.css';
18
+
17
19
  import { ContainerModule, interfaces } from '@theia/core/shared/inversify';
18
20
  import { CommandContribution, MenuContribution, bindContributionProvider } from '@theia/core/lib/common';
19
21
  import { WebSocketConnectionProvider, FrontendApplicationContribution, KeybindingContribution } from '@theia/core/lib/browser';
@@ -48,7 +50,7 @@ import { JsonSchemaContribution } from '@theia/core/lib/browser/json-schema-stor
48
50
  import { WorkspaceSchemaUpdater } from './workspace-schema-updater';
49
51
  import { WorkspaceBreadcrumbsContribution } from './workspace-breadcrumbs-contribution';
50
52
  import { FilepathBreadcrumbsContribution } from '@theia/filesystem/lib/browser/breadcrumbs/filepath-breadcrumbs-contribution';
51
- import { WorkspaceTrustService } from './workspace-trust-service';
53
+ import { WorkspaceTrustService, WorkspaceRestrictionContribution } from './workspace-trust-service';
52
54
  import { bindWorkspaceTrustPreferences } from '../common/workspace-trust-preferences';
53
55
  import { UserWorkingDirectoryProvider } from '@theia/core/lib/browser/user-working-directory-provider';
54
56
  import { WorkspaceUserWorkingDirectoryProvider } from './workspace-user-working-directory-provider';
@@ -113,6 +115,7 @@ export default new ContainerModule((bind: interfaces.Bind, unbind: interfaces.Un
113
115
  bind(JsonSchemaContribution).toService(WorkspaceSchemaUpdater);
114
116
  rebind(FilepathBreadcrumbsContribution).to(WorkspaceBreadcrumbsContribution).inSingletonScope();
115
117
 
118
+ bindContributionProvider(bind, WorkspaceRestrictionContribution);
116
119
  bind(WorkspaceTrustService).toSelf().inSingletonScope();
117
120
  rebind(UserWorkingDirectoryProvider).to(WorkspaceUserWorkingDirectoryProvider).inSingletonScope();
118
121