@@ -16,17 +16,27 @@ const { EnterprisePolicyTesting, PoliciesPrefTracker } =
16
16
"resource://testing-common/EnterprisePolicyTesting.sys.mjs"
17
17
) ;
18
18
19
- const kEnabledPref = "enabled" ;
20
- const kPipeNamePref = "pipe_path_name" ;
21
- const kTimeoutPref = "agent_timeout" ;
22
- const kAllowUrlPref = "allow_url_regex_list" ;
23
- const kDenyUrlPref = "deny_url_regex_list" ;
24
- const kAgentNamePref = "agent_name" ;
25
- const kClientSignaturePref = "client_signature" ;
26
- const kPerUserPref = "is_per_user" ;
27
- const kShowBlockedPref = "show_blocked_result" ;
28
- const kDefaultResultPref = "default_result" ;
29
- const kBypassForSameTabOperationsPref = "bypass_for_same_tab_operations" ;
19
+ const kIndividualPrefs = new Map ( [
20
+ [ "Enabled" , "enabled" ] ,
21
+ [ "PipeName" , "pipe_path_name" ] ,
22
+ [ "Timeout" , "agent_timeout" ] ,
23
+ [ "AllowUrl" , "allow_url_regex_list" ] ,
24
+ [ "DenyUrl" , "deny_url_regex_list" ] ,
25
+ [ "AgentName" , "agent_name" ] ,
26
+ [ "ClientSignature" , "client_signature" ] ,
27
+ [ "PerUser" , "is_per_user" ] ,
28
+ [ "ShowBlocked" , "show_blocked_result" ] ,
29
+ [ "DefaultResult" , "default_result" ] ,
30
+ [ "BypassForSameTab" , "bypass_for_same_tab_operations" ] ,
31
+ ] ) ;
32
+ function getIndividualPrefName ( name ) {
33
+ is (
34
+ kIndividualPrefs . has ( name ) ,
35
+ true ,
36
+ `"${ name } " passed to getIndividualPrefName() is valid`
37
+ ) ;
38
+ return `browser.contentanalysis.${ kIndividualPrefs . get ( name ) } ` ;
39
+ }
30
40
const kInterceptionPoints = [
31
41
"clipboard" ,
32
42
"drag_and_drop" ,
@@ -43,7 +53,7 @@ add_task(async function test_ca_active() {
43
53
ok ( ! ca . isActive , "CA is inactive when pref and cmd line arg are missing" ) ;
44
54
45
55
// Set the pref without enterprise policy. CA should not be active.
46
- Services . prefs . setBoolPref ( "browser.contentanalysis." + kEnabledPref , true ) ;
56
+ Services . prefs . setBoolPref ( getIndividualPrefName ( "Enabled" ) , true ) ;
47
57
ok (
48
58
! ca . isActive ,
49
59
"CA is inactive when pref is set but cmd line arg is missing"
@@ -83,7 +93,38 @@ add_task(async function test_ca_active() {
83
93
) ;
84
94
}
85
95
86
- Services . prefs . setBoolPref ( "browser.contentanalysis." + kEnabledPref , false ) ;
96
+ Services . prefs . setBoolPref ( getIndividualPrefName ( "Enabled" ) , false ) ;
97
+ PoliciesPrefTracker . stop ( ) ;
98
+ } ) ;
99
+
100
+ add_task ( async function test_ca_enterprise_config ( ) {
101
+ PoliciesPrefTracker . start ( ) ;
102
+ await EnterprisePolicyTesting . setupPolicyEngineWithJson ( {
103
+ policies : {
104
+ ContentAnalysis : {
105
+ Enabled : true ,
106
+ } ,
107
+ } ,
108
+ } ) ;
109
+
110
+ for ( let individualPref of kIndividualPrefs . values ( ) ) {
111
+ is (
112
+ Services . prefs . prefIsLocked ( "browser.contentanalysis." + individualPref ) ,
113
+ true ,
114
+ `${ individualPref } should be locked`
115
+ ) ;
116
+ }
117
+
118
+ for ( let interceptionPoint of kInterceptionPoints ) {
119
+ is (
120
+ Services . prefs . prefIsLocked (
121
+ `browser.contentanalysis.interception_point.${ interceptionPoint } .enabled`
122
+ ) ,
123
+ true ,
124
+ `${ interceptionPoint } enabled should be locked`
125
+ ) ;
126
+ }
127
+
87
128
PoliciesPrefTracker . stop ( ) ;
88
129
} ) ;
89
130
@@ -126,56 +167,52 @@ add_task(async function test_ca_enterprise_config() {
126
167
} ) ;
127
168
128
169
is (
129
- Services . prefs . getStringPref ( "browser.contentanalysis." + kPipeNamePref ) ,
170
+ Services . prefs . getStringPref ( getIndividualPrefName ( "PipeName" ) ) ,
130
171
"abc" ,
131
172
"pipe name match"
132
173
) ;
133
174
is (
134
- Services . prefs . getIntPref ( "browser.contentanalysis." + kTimeoutPref ) ,
175
+ Services . prefs . getIntPref ( getIndividualPrefName ( "Timeout" ) ) ,
135
176
99 ,
136
177
"timeout match"
137
178
) ;
138
179
is (
139
- Services . prefs . getStringPref ( "browser.contentanalysis." + kAllowUrlPref ) ,
180
+ Services . prefs . getStringPref ( getIndividualPrefName ( "AllowUrl" ) ) ,
140
181
string1 ,
141
182
"allow urls match"
142
183
) ;
143
184
is (
144
- Services . prefs . getStringPref ( "browser.contentanalysis." + kDenyUrlPref ) ,
185
+ Services . prefs . getStringPref ( getIndividualPrefName ( "DenyUrl" ) ) ,
145
186
string2 ,
146
187
"deny urls match"
147
188
) ;
148
189
is (
149
- Services . prefs . getStringPref ( "browser.contentanalysis." + kAgentNamePref ) ,
190
+ Services . prefs . getStringPref ( getIndividualPrefName ( "AgentName" ) ) ,
150
191
string3 ,
151
192
"agent names match"
152
193
) ;
153
194
is (
154
- Services . prefs . getStringPref (
155
- "browser.contentanalysis." + kClientSignaturePref
156
- ) ,
195
+ Services . prefs . getStringPref ( getIndividualPrefName ( "ClientSignature" ) ) ,
157
196
string4 ,
158
197
"client signatures match"
159
198
) ;
160
199
is (
161
- Services . prefs . getBoolPref ( "browser.contentanalysis." + kPerUserPref ) ,
200
+ Services . prefs . getBoolPref ( getIndividualPrefName ( "PerUser" ) ) ,
162
201
true ,
163
202
"per user match"
164
203
) ;
165
204
is (
166
- Services . prefs . getBoolPref ( "browser.contentanalysis." + kShowBlockedPref ) ,
205
+ Services . prefs . getBoolPref ( getIndividualPrefName ( "ShowBlocked" ) ) ,
167
206
false ,
168
207
"show blocked match"
169
208
) ;
170
209
is (
171
- Services . prefs . getIntPref ( "browser.contentanalysis." + kDefaultResultPref ) ,
210
+ Services . prefs . getIntPref ( getIndividualPrefName ( "DefaultResult" ) ) ,
172
211
1 ,
173
212
"default result match"
174
213
) ;
175
214
is (
176
- Services . prefs . getBoolPref (
177
- "browser.contentanalysis." + kBypassForSameTabOperationsPref
178
- ) ,
215
+ Services . prefs . getBoolPref ( getIndividualPrefName ( "BypassForSameTab" ) ) ,
179
216
true ,
180
217
"bypass for same tab operations match"
181
218
) ;
@@ -201,7 +238,7 @@ add_task(async function test_cleanup() {
201
238
// the policy and do not get cleared if there is no ContentAnalysis
202
239
// element - reset them manually here.
203
240
ca . isSetByEnterprisePolicy = false ;
204
- Services . prefs . setBoolPref ( "browser.contentanalysis." + kEnabledPref , false ) ;
241
+ Services . prefs . setBoolPref ( getIndividualPrefName ( "Enabled" ) , false ) ;
205
242
for ( let interceptionPoint of kInterceptionPoints ) {
206
243
Services . prefs . setBoolPref (
207
244
`browser.contentanalysis.interception_point.${ interceptionPoint } .enabled` ,
0 commit comments