src/vs/platform/policy/common/filePolicyService.ts

82 LOC · 78 covered · 4 uncovered · 21 ranges · 54 concepts · 4 introducers · 38 tests

File neighbourhood

The centred file is linked to every concept that introduces one of its ranges, every test that runs code from the file, and the gray connector concepts standing between those tests and the file's own introducer concepts. Undirected links join concepts to every file where they introduce source and concepts to the tests they introduce; arrows show specialization between the displayed concepts and bridge only concepts omitted from this view. Concept colors match the source ranges below; connector concepts have no source color and are shown in gray.

Focused file, its introducer and connector concepts, their introduced files, and tests that run code from the file

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the related-file, concept, and source links on this page.

Focused file, its introducer and connector concepts, their introduced files, and tests that run code from the filesrc/vs/platform/configuration/common/configurations.ts · 348 LOCcommon/configurations.tssrc/vs/platform/policy/common/policy.ts · 99 LOCcommon/policy.tsconfigurationService.test|title=ConfigurationService.test.ts model defaults|occurrence=1 · 0 introduced LOCconfigurationService.tes…configurationRegistry.ts ×1 · 1 introduced LOCconfigurationRegistry.ts…configurationModels.ts ×8 · 32 introduced LOCconfigurationModels.ts ×…configurationModels.ts ×1 · 2 introduced LOCconfigurationModels.ts ×…configurationService.test|title=ConfigurationService.test.ts update configuration should remove when undefined is passed|occurrence=1 · 0 introduced LOCconfigurationService.tes…configurationService.ts ×1 · 2 introduced LOCconfigurationService.ts …configurationService.test|title=ConfigurationService.test.ts update configuration when exist|occurrence=1 · 0 introduced LOCconfigurationService.tes…configurationService.ts ×1 · 1 introduced LOCconfigurationService.ts …configurationService.test|title=ConfigurationService.test.ts update configuration|occurrence=1 · 0 introduced LOCconfigurationService.tes…configurationService.test|title=ConfigurationService.test.ts trigger configuration change event when file does not exist|occurrence=1 · 0 introduced LOCconfigurationService.tes…configurationService.test|title=ConfigurationService.test.ts update unknown configuration|occurrence=1 · 0 introduced LOCconfigurationService.tes…configurationService.ts ×13 · 45 introduced LOCconfigurationService.ts …configurationService.test|title=ConfigurationService.test.ts trigger configuration change event when file exists|occurrence=1 · 0 introduced LOCconfigurationService.tes…configurationService.test|title=ConfigurationService.test.ts reloadConfiguration|occurrence=1 · 0 introduced LOCconfigurationService.tes…configurationModels.ts ×1 · 8 introduced LOCconfigurationModels.ts ×…configurationService.test|title=ConfigurationService.test.ts config gets flattened|occurrence=1 · 0 introduced LOCconfigurationService.tes…configurationService.test|title=ConfigurationService.test.ts simple|occurrence=1 · 0 introduced LOCconfigurationService.tes…policyConfiguration.test|title=PolicyConfiguration initialize: with object type policy|occurrence=1 · 0 introduced LOCpolicyConfiguration.test…configurations.ts ×1 · 2 introduced LOCconfigurations.ts ×1policyConfiguration.test|title=PolicyConfiguration change: when policy is removed|occurrence=1 · 0 introduced LOCpolicyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration change: when policy is updated|occurrence=1 · 0 introduced LOCpolicyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration change: when policy is added|occurrence=1 · 0 introduced LOCpolicyConfiguration.test…errors.ts ×2 · 9 introduced LOCerrors.ts ×2json.ts ×1 · 3 introduced LOCjson.ts ×1configurations.ts ×1 · 2 introduced LOCconfigurations.ts ×1configurations.ts ×1 · 2 introduced LOCconfigurations.ts ×1configurations.ts ×1 · 3 introduced LOCconfigurations.ts ×1configurations.ts ×3 · 10 introduced LOCconfigurations.ts ×3configurationModels.ts ×2 · 7 introduced LOCconfigurationModels.ts ×…configurations.ts ×4 · 11 introduced LOCconfigurations.ts ×4configurations.ts ×1 · 2 introduced LOCconfigurations.ts ×1configurations.ts ×11 · 31 introduced LOCconfigurations.ts ×11configurations.ts ×1 · 2 introduced LOCconfigurations.ts ×1policyConfiguration.test|title=PolicyConfiguration change: a late-registering owner supersedes an earlier reference definition|occurrence=1, policyConfiguration.test|title=PolicyConfiguration change: deregistering the owner falls back to a surviving reference definition|occurrence=1 · 0 introduced LOCpolicyConfiguration.test…configurations.ts ×2 · 12 introduced LOCconfigurations.ts ×2policyConfiguration.test|title=PolicyConfiguration change: when policy setting is registered|occurrence=1 · 0 introduced LOCpolicyConfiguration.test…configurations.ts ×1 · 1 introduced LOCconfigurations.ts ×1configurations.ts ×2 · 14 introduced LOCconfigurations.ts ×2configurations.ts ×1 · 2 introduced LOCconfigurations.ts ×1configurations.ts ×1 · 2 introduced LOCconfigurations.ts ×1policyConfiguration.test|title=PolicyConfiguration initialize: a reference resolves even when its owner is not registered|occurrence=1 · 0 introduced LOCpolicyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with internal policies|occurrence=1 · 0 introduced LOCpolicyConfiguration.test…configurationModels.ts ×2 · 9 introduced LOCconfigurationModels.ts ×…policyConfiguration.test|title=PolicyConfiguration initialize: with policies|occurrence=1, policyConfiguration.test|title=PolicyConfiguration initialize: with policies but not registered|occurrence=1 · 0 introduced LOCpolicyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with boolean type policy as true|occurrence=1, policyConfiguration.test|title=PolicyConfiguration initialize: with boolean type policy as false|occurrence=1, +2 · 0 introduced LOCpolicyConfiguration.test…configurations.ts ×5 · 14 introduced LOCconfigurations.ts ×5filePolicyService.ts ×4 · 15 introduced LOCfilePolicyService.ts ×4configurationService.test|title=ConfigurationService.test.ts missing file does not explode|occurrence=1 · 0 introduced LOCconfigurationService.tes…configuration.ts ×1 · 5 introduced LOCconfiguration.ts ×1filePolicyService.ts ×2 · 2 introduced LOCfilePolicyService.ts ×2configurationService.ts ×6 · 16 introduced LOCconfigurationService.ts …configurations.ts ×2 · 11 introduced LOCconfigurations.ts ×2configurations.ts ×15 · 128 introduced LOCconfigurations.ts ×15filePolicyService.ts ×6 · 28 introduced LOCfilePolicyService.ts ×6configurationService.test|title=ConfigurationService.test.ts config gets flattened|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts config gets flattened|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts error case does not explode|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts error case does not explode|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts lookup with null|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts lookup with null|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts lookup|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts lookup|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts missing file does not explode|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts missing file does not explode|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts model defaults|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts model defaults|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts reloadConfiguration|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts reloadConfiguration|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts simple|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts simple|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts trigger configuration change event when file does not exist|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts trigger configuration change event when file does not exist|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts trigger configuration change event when file exists|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts trigger configuration change event when file exists|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts update configuration in non user target throws error|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts update configuration in non user target throws error|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts update configuration should remove when undefined is passed|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts update configuration should remove when undefined is passed|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts update configuration throws error for policy setting|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts update configuration throws error for policy setting|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts update configuration to default value should remove|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts update configuration to default value should remove|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts update configuration when exist|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts update configuration when exist|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts update configuration|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts update configuration|occurrence=1configurationService.tes…configurationService.test|title=ConfigurationService.test.ts update unknown configuration|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/configurationService.test|title=ConfigurationService.test.ts update unknown configuration|occurrence=1configurationService.tes…policyConfiguration.test|title=PolicyConfiguration change: a late-registering owner supersedes an earlier reference definition|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration change: a late-registering owner supersedes an earlier reference definition|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration change: an owning policy update propagates to both the owner and its references|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration change: an owning policy update propagates to both the owner and its references|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration change: deregistering the owner falls back to a surviving reference definition|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration change: deregistering the owner falls back to a surviving reference definition|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration change: when policy is added|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration change: when policy is added|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration change: when policy is removed|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration change: when policy is removed|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration change: when policy is updated|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration change: when policy is updated|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration change: when policy setting is deregistered|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration change: when policy setting is deregistered|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration change: when policy setting is registered|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration change: when policy setting is registered|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: a reference resolves even when its owner is not registered|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: a reference resolves even when its owner is not registered|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: an owning policy applies to both the owner and its references|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: an owning policy applies to both the owner and its references|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: no policies|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: no policies|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: the owner definition is authoritative; a reference only contributes the policy name|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: the owner definition is authoritative; a reference only contributes the policy name|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with array type policy|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: with array type policy|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with boolean type policy as false|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: with boolean type policy as false|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with boolean type policy as true|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: with boolean type policy as true|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with internal policies|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: with internal policies|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with object type policy ignores policy if there are duplicate keys|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: with object type policy ignores policy if there are duplicate keys|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with object type policy ignores policy if value is not valid|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: with object type policy ignores policy if value is not valid|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with object type policy|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: with object type policy|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with policies but not registered|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: with policies but not registered|occurrence=1policyConfiguration.test…policyConfiguration.test|title=PolicyConfiguration initialize: with policies|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/platform/configuration/test/common/policyConfiguration.test|title=PolicyConfiguration initialize: with policies|occurrence=1policyConfiguration.test…Focused file · src/vs/platform/policy/common/filePolicyService.ts · 82 LOCcommon/filePolicyService…

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the related-file, concept, and source links on this page while the interactive map is unavailable.

1 > /*--------------------------------------------------------------------------------------------- filePolicyService.ts ×6
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 { ThrottledDelayer } from '../../../base/common/async.js';
7 > import { Event } from '../../../base/common/event.js';
8 > import { Iterable } from '../../../base/common/iterator.js';
9 > import { PolicyName } from '../../../base/common/policy.js';
10 > import { isObject } from '../../../base/common/types.js';
11 > import { URI } from '../../../base/common/uri.js';
12 > import { FileOperationError, FileOperationResult, IFileService } from '../../files/common/files.js';
13 > import { ILogService } from '../../log/common/log.js';
14 > import { AbstractPolicyService, IPolicyService, PolicyValue } from './policy.js';
15 >
16 > function keysDiff<T>(a: Map<string, T>, b: Map<string, T>): string[] { configurations.ts ×15
17 > const result: string[] = [];
18 >
19 > for (const key of new Set(Iterable.concat(a.keys(), b.keys()))) {
20 > if (a.get(key) !== b.get(key)) { filePolicyService.ts ×4
21 > result.push(key);
22 > }
23 > }
25 > return result;
26 > }
28 > export class FilePolicyService extends AbstractPolicyService implements IPolicyService {
29 >
30 > private readonly throttledDelayer = this._register(new ThrottledDelayer(500));
31 >
32 > constructor(
33 > private readonly file: URI, configurations.ts ×15
34 > @IFileService private readonly fileService: IFileService,
35 > @ILogService private readonly logService: ILogService
36 > ) {
37 > super();
38 >
39 > const onDidChangePolicyFile = Event.filter(fileService.onDidFilesChange, e => e.affects(file));
40 > this._register(fileService.watch(file));
41 > this._register(onDidChangePolicyFile(() => this.throttledDelayer.trigger(() => this.refresh())));
42 > }
44 > protected async _updatePolicyDefinitions(): Promise<void> {
45 > await this.refresh(); configurations.ts ×15
46 > }
48 > private async read(): Promise<Map<PolicyName, PolicyValue>> {
49 > const policies = new Map<PolicyName, PolicyValue>(); configurations.ts ×15
50 >
51 > try {
52 > const content = await this.fileService.readFile(this.file);
53 > const raw = JSON.parse(content.value.toString()); filePolicyService.ts ×4
54 >
55 > if (!isObject(raw)) {
56 throw new Error('Policy file isn\'t a JSON object');
57 }
59 > for (const key of Object.keys(raw)) {
60 > if (this.policyDefinitions[key]) {
61 > policies.set(key, raw[key]);
62 > }
63 > }
64 > } catch (error) { configurations.ts ×15
65 > if ((<FileOperationError>error).fileOperationResult !== FileOperationResult.FILE_NOT_FOUND) { filePolicyService.ts ×2
66 this.logService.error(`[FilePolicyService] Failed to read policies`, error);
67 }
70 > return policies;
71 > }
73 > private async refresh(): Promise<void> {
74 > const policies = await this.read(); configurations.ts ×15
75 > const diff = keysDiff(this.policies, policies);
76 > this.policies = policies;
77 >
78 > if (diff.length > 0) {
79 > this._onDidChange.fire(diff); filePolicyService.ts ×4
80 > }