• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.systemui.mediaprojection.devicepolicy
17 
18 import android.app.admin.DevicePolicyManager
19 import android.os.UserHandle
20 import android.os.UserManager
21 import androidx.test.filters.SmallTest
22 import com.android.systemui.SysuiTestCase
23 import com.android.systemui.util.mockito.eq
24 import com.android.systemui.util.mockito.mock
25 import com.android.systemui.util.mockito.whenever
26 import com.google.common.truth.Truth.assertWithMessage
27 import org.junit.Before
28 import org.junit.Test
29 import org.junit.runner.RunWith
30 import org.junit.runners.Parameterized
31 import org.junit.runners.Parameterized.Parameters
32 import org.mockito.ArgumentMatchers.any
33 
34 abstract class BaseScreenCaptureDevicePolicyResolverTest(private val precondition: Preconditions) :
35     SysuiTestCase() {
36 
37     abstract class Preconditions(
38         val personalScreenCaptureDisabled: Boolean,
39         val workScreenCaptureDisabled: Boolean,
40         val disallowShareIntoManagedProfile: Boolean
41     )
42 
43     protected val devicePolicyManager: DevicePolicyManager = mock()
44     protected val userManager: UserManager = mock()
45 
46     protected val personalUserHandle: UserHandle = UserHandle.of(123)
47     protected val workUserHandle: UserHandle = UserHandle.of(456)
48 
49     protected val policyResolver =
50         ScreenCaptureDevicePolicyResolver(
51             devicePolicyManager,
52             userManager,
53             personalUserHandle,
54             workUserHandle
55         )
56 
57     @Before
setUpnull58     fun setUp() {
59         setUpPolicies()
60     }
61 
setUpPoliciesnull62     private fun setUpPolicies() {
63         whenever(
64                 devicePolicyManager.getScreenCaptureDisabled(
65                     any(),
66                     eq(personalUserHandle.identifier)
67                 )
68             )
69             .thenReturn(precondition.personalScreenCaptureDisabled)
70 
71         whenever(devicePolicyManager.getScreenCaptureDisabled(any(), eq(workUserHandle.identifier)))
72             .thenReturn(precondition.workScreenCaptureDisabled)
73 
74         whenever(
75                 userManager.hasUserRestrictionForUser(
76                     eq(UserManager.DISALLOW_SHARE_INTO_MANAGED_PROFILE),
77                     eq(workUserHandle)
78                 )
79             )
80             .thenReturn(precondition.disallowShareIntoManagedProfile)
81     }
82 }
83 
84 @RunWith(Parameterized::class)
85 @SmallTest
86 class IsAllowedScreenCaptureDevicePolicyResolverTest(
87     private val test: IsScreenCaptureAllowedTestCase
88 ) : BaseScreenCaptureDevicePolicyResolverTest(test.given) {
89 
90     companion object {
91         @Parameters(name = "{0}")
92         @JvmStatic
getParamsnull93         fun getParams() =
94             listOf(
95                 IsScreenCaptureAllowedTestCase(
96                     given =
97                         Preconditions(
98                             isHostInWorkProfile = false,
99                             isTargetInWorkProfile = false,
100                             personalScreenCaptureDisabled = false,
101                             workScreenCaptureDisabled = false,
102                             disallowShareIntoManagedProfile = false,
103                         ),
104                     expectedScreenCaptureAllowed = true,
105                 ),
106                 IsScreenCaptureAllowedTestCase(
107                     given =
108                         Preconditions(
109                             isHostInWorkProfile = false,
110                             isTargetInWorkProfile = false,
111                             personalScreenCaptureDisabled = false,
112                             workScreenCaptureDisabled = false,
113                             disallowShareIntoManagedProfile = true,
114                         ),
115                     expectedScreenCaptureAllowed = true,
116                 ),
117                 IsScreenCaptureAllowedTestCase(
118                     given =
119                         Preconditions(
120                             isHostInWorkProfile = false,
121                             isTargetInWorkProfile = false,
122                             personalScreenCaptureDisabled = false,
123                             workScreenCaptureDisabled = true,
124                             disallowShareIntoManagedProfile = false,
125                         ),
126                     expectedScreenCaptureAllowed = true,
127                 ),
128                 IsScreenCaptureAllowedTestCase(
129                     given =
130                         Preconditions(
131                             isHostInWorkProfile = false,
132                             isTargetInWorkProfile = false,
133                             personalScreenCaptureDisabled = false,
134                             workScreenCaptureDisabled = true,
135                             disallowShareIntoManagedProfile = true,
136                         ),
137                     expectedScreenCaptureAllowed = true,
138                 ),
139                 IsScreenCaptureAllowedTestCase(
140                     given =
141                         Preconditions(
142                             isHostInWorkProfile = false,
143                             isTargetInWorkProfile = false,
144                             personalScreenCaptureDisabled = true,
145                             workScreenCaptureDisabled = false,
146                             disallowShareIntoManagedProfile = false
147                         ),
148                     expectedScreenCaptureAllowed = false,
149                 ),
150                 IsScreenCaptureAllowedTestCase(
151                     given =
152                         Preconditions(
153                             isHostInWorkProfile = false,
154                             isTargetInWorkProfile = false,
155                             personalScreenCaptureDisabled = true,
156                             workScreenCaptureDisabled = false,
157                             disallowShareIntoManagedProfile = true
158                         ),
159                     expectedScreenCaptureAllowed = false,
160                 ),
161                 IsScreenCaptureAllowedTestCase(
162                     given =
163                         Preconditions(
164                             isHostInWorkProfile = false,
165                             isTargetInWorkProfile = false,
166                             personalScreenCaptureDisabled = true,
167                             workScreenCaptureDisabled = true,
168                             disallowShareIntoManagedProfile = false
169                         ),
170                     expectedScreenCaptureAllowed = false,
171                 ),
172                 IsScreenCaptureAllowedTestCase(
173                     given =
174                         Preconditions(
175                             isHostInWorkProfile = false,
176                             isTargetInWorkProfile = false,
177                             personalScreenCaptureDisabled = true,
178                             workScreenCaptureDisabled = true,
179                             disallowShareIntoManagedProfile = true
180                         ),
181                     expectedScreenCaptureAllowed = false,
182                 ),
183                 IsScreenCaptureAllowedTestCase(
184                     given =
185                         Preconditions(
186                             isHostInWorkProfile = false,
187                             isTargetInWorkProfile = true,
188                             personalScreenCaptureDisabled = false,
189                             workScreenCaptureDisabled = false,
190                             disallowShareIntoManagedProfile = false
191                         ),
192                     expectedScreenCaptureAllowed = true,
193                 ),
194                 IsScreenCaptureAllowedTestCase(
195                     given =
196                         Preconditions(
197                             isHostInWorkProfile = false,
198                             isTargetInWorkProfile = true,
199                             personalScreenCaptureDisabled = false,
200                             workScreenCaptureDisabled = false,
201                             disallowShareIntoManagedProfile = true
202                         ),
203                     expectedScreenCaptureAllowed = true,
204                 ),
205                 IsScreenCaptureAllowedTestCase(
206                     given =
207                         Preconditions(
208                             isHostInWorkProfile = false,
209                             isTargetInWorkProfile = true,
210                             personalScreenCaptureDisabled = false,
211                             workScreenCaptureDisabled = true,
212                             disallowShareIntoManagedProfile = false
213                         ),
214                     expectedScreenCaptureAllowed = false,
215                 ),
216                 IsScreenCaptureAllowedTestCase(
217                     given =
218                         Preconditions(
219                             isHostInWorkProfile = false,
220                             isTargetInWorkProfile = true,
221                             personalScreenCaptureDisabled = false,
222                             workScreenCaptureDisabled = true,
223                             disallowShareIntoManagedProfile = true
224                         ),
225                     expectedScreenCaptureAllowed = false,
226                 ),
227                 IsScreenCaptureAllowedTestCase(
228                     given =
229                         Preconditions(
230                             isHostInWorkProfile = false,
231                             isTargetInWorkProfile = true,
232                             personalScreenCaptureDisabled = true,
233                             workScreenCaptureDisabled = false,
234                             disallowShareIntoManagedProfile = false
235                         ),
236                     expectedScreenCaptureAllowed = false,
237                 ),
238                 IsScreenCaptureAllowedTestCase(
239                     given =
240                         Preconditions(
241                             isHostInWorkProfile = false,
242                             isTargetInWorkProfile = true,
243                             personalScreenCaptureDisabled = true,
244                             workScreenCaptureDisabled = false,
245                             disallowShareIntoManagedProfile = true
246                         ),
247                     expectedScreenCaptureAllowed = false,
248                 ),
249                 IsScreenCaptureAllowedTestCase(
250                     given =
251                         Preconditions(
252                             isHostInWorkProfile = false,
253                             isTargetInWorkProfile = true,
254                             personalScreenCaptureDisabled = true,
255                             workScreenCaptureDisabled = true,
256                             disallowShareIntoManagedProfile = false
257                         ),
258                     expectedScreenCaptureAllowed = false,
259                 ),
260                 IsScreenCaptureAllowedTestCase(
261                     given =
262                         Preconditions(
263                             isHostInWorkProfile = false,
264                             isTargetInWorkProfile = true,
265                             personalScreenCaptureDisabled = true,
266                             workScreenCaptureDisabled = true,
267                             disallowShareIntoManagedProfile = true
268                         ),
269                     expectedScreenCaptureAllowed = false,
270                 ),
271                 IsScreenCaptureAllowedTestCase(
272                     given =
273                         Preconditions(
274                             isHostInWorkProfile = true,
275                             isTargetInWorkProfile = false,
276                             personalScreenCaptureDisabled = false,
277                             workScreenCaptureDisabled = false,
278                             disallowShareIntoManagedProfile = false
279                         ),
280                     expectedScreenCaptureAllowed = true,
281                 ),
282                 IsScreenCaptureAllowedTestCase(
283                     given =
284                         Preconditions(
285                             isHostInWorkProfile = true,
286                             isTargetInWorkProfile = false,
287                             personalScreenCaptureDisabled = false,
288                             workScreenCaptureDisabled = false,
289                             disallowShareIntoManagedProfile = true
290                         ),
291                     expectedScreenCaptureAllowed = false,
292                 ),
293                 IsScreenCaptureAllowedTestCase(
294                     given =
295                         Preconditions(
296                             isHostInWorkProfile = true,
297                             isTargetInWorkProfile = false,
298                             personalScreenCaptureDisabled = false,
299                             workScreenCaptureDisabled = true,
300                             disallowShareIntoManagedProfile = false
301                         ),
302                     expectedScreenCaptureAllowed = false,
303                 ),
304                 IsScreenCaptureAllowedTestCase(
305                     given =
306                         Preconditions(
307                             isHostInWorkProfile = true,
308                             isTargetInWorkProfile = false,
309                             personalScreenCaptureDisabled = false,
310                             workScreenCaptureDisabled = true,
311                             disallowShareIntoManagedProfile = true
312                         ),
313                     expectedScreenCaptureAllowed = false,
314                 ),
315                 IsScreenCaptureAllowedTestCase(
316                     given =
317                         Preconditions(
318                             isHostInWorkProfile = true,
319                             isTargetInWorkProfile = false,
320                             personalScreenCaptureDisabled = true,
321                             workScreenCaptureDisabled = false,
322                             disallowShareIntoManagedProfile = false
323                         ),
324                     expectedScreenCaptureAllowed = false,
325                 ),
326                 IsScreenCaptureAllowedTestCase(
327                     given =
328                         Preconditions(
329                             isHostInWorkProfile = true,
330                             isTargetInWorkProfile = false,
331                             personalScreenCaptureDisabled = true,
332                             workScreenCaptureDisabled = false,
333                             disallowShareIntoManagedProfile = true
334                         ),
335                     expectedScreenCaptureAllowed = false,
336                 ),
337                 IsScreenCaptureAllowedTestCase(
338                     given =
339                         Preconditions(
340                             isHostInWorkProfile = true,
341                             isTargetInWorkProfile = false,
342                             personalScreenCaptureDisabled = true,
343                             workScreenCaptureDisabled = true,
344                             disallowShareIntoManagedProfile = false
345                         ),
346                     expectedScreenCaptureAllowed = false,
347                 ),
348                 IsScreenCaptureAllowedTestCase(
349                     given =
350                         Preconditions(
351                             isHostInWorkProfile = true,
352                             isTargetInWorkProfile = false,
353                             personalScreenCaptureDisabled = true,
354                             workScreenCaptureDisabled = true,
355                             disallowShareIntoManagedProfile = true
356                         ),
357                     expectedScreenCaptureAllowed = false,
358                 ),
359                 IsScreenCaptureAllowedTestCase(
360                     given =
361                         Preconditions(
362                             isHostInWorkProfile = true,
363                             isTargetInWorkProfile = true,
364                             personalScreenCaptureDisabled = false,
365                             workScreenCaptureDisabled = false,
366                             disallowShareIntoManagedProfile = false
367                         ),
368                     expectedScreenCaptureAllowed = true,
369                 ),
370                 IsScreenCaptureAllowedTestCase(
371                     given =
372                         Preconditions(
373                             isHostInWorkProfile = true,
374                             isTargetInWorkProfile = true,
375                             personalScreenCaptureDisabled = false,
376                             workScreenCaptureDisabled = false,
377                             disallowShareIntoManagedProfile = true
378                         ),
379                     expectedScreenCaptureAllowed = true,
380                 ),
381                 IsScreenCaptureAllowedTestCase(
382                     given =
383                         Preconditions(
384                             isHostInWorkProfile = true,
385                             isTargetInWorkProfile = true,
386                             personalScreenCaptureDisabled = false,
387                             workScreenCaptureDisabled = true,
388                             disallowShareIntoManagedProfile = false
389                         ),
390                     expectedScreenCaptureAllowed = false,
391                 ),
392                 IsScreenCaptureAllowedTestCase(
393                     given =
394                         Preconditions(
395                             isHostInWorkProfile = true,
396                             isTargetInWorkProfile = true,
397                             personalScreenCaptureDisabled = false,
398                             workScreenCaptureDisabled = true,
399                             disallowShareIntoManagedProfile = true
400                         ),
401                     expectedScreenCaptureAllowed = false,
402                 ),
403                 IsScreenCaptureAllowedTestCase(
404                     given =
405                         Preconditions(
406                             isHostInWorkProfile = true,
407                             isTargetInWorkProfile = true,
408                             personalScreenCaptureDisabled = true,
409                             workScreenCaptureDisabled = false,
410                             disallowShareIntoManagedProfile = false
411                         ),
412                     expectedScreenCaptureAllowed = true,
413                 ),
414                 IsScreenCaptureAllowedTestCase(
415                     given =
416                         Preconditions(
417                             isHostInWorkProfile = true,
418                             isTargetInWorkProfile = true,
419                             personalScreenCaptureDisabled = true,
420                             workScreenCaptureDisabled = false,
421                             disallowShareIntoManagedProfile = true
422                         ),
423                     expectedScreenCaptureAllowed = true,
424                 ),
425                 IsScreenCaptureAllowedTestCase(
426                     given =
427                         Preconditions(
428                             isHostInWorkProfile = true,
429                             isTargetInWorkProfile = true,
430                             personalScreenCaptureDisabled = true,
431                             workScreenCaptureDisabled = true,
432                             disallowShareIntoManagedProfile = false
433                         ),
434                     expectedScreenCaptureAllowed = false,
435                 ),
436                 IsScreenCaptureAllowedTestCase(
437                     given =
438                         Preconditions(
439                             isHostInWorkProfile = true,
440                             isTargetInWorkProfile = true,
441                             personalScreenCaptureDisabled = true,
442                             workScreenCaptureDisabled = true,
443                             disallowShareIntoManagedProfile = true
444                         ),
445                     expectedScreenCaptureAllowed = false,
446                 ),
447             )
448     }
449 
450     class Preconditions(
451         personalScreenCaptureDisabled: Boolean,
452         workScreenCaptureDisabled: Boolean,
453         disallowShareIntoManagedProfile: Boolean,
454         val isHostInWorkProfile: Boolean,
455         val isTargetInWorkProfile: Boolean,
456     ) :
457         BaseScreenCaptureDevicePolicyResolverTest.Preconditions(
458             personalScreenCaptureDisabled,
459             workScreenCaptureDisabled,
460             disallowShareIntoManagedProfile
461         )
462 
463     data class IsScreenCaptureAllowedTestCase(
464         val given: Preconditions,
465         val expectedScreenCaptureAllowed: Boolean
466     ) {
467         override fun toString(): String =
468             "isScreenCaptureAllowed: " +
469                 "host[${if (given.isHostInWorkProfile) "work" else "personal"} profile], " +
470                 "target[${if (given.isTargetInWorkProfile) "work" else "personal"} profile], " +
471                 "personal screen capture disabled = ${given.personalScreenCaptureDisabled}, " +
472                 "work screen capture disabled = ${given.workScreenCaptureDisabled}, " +
473                 "disallow share into managed profile = ${given.disallowShareIntoManagedProfile}, " +
474                 "expected screen capture allowed = $expectedScreenCaptureAllowed"
475     }
476 
477     @Test
testnull478     fun test() {
479         val targetAppUserHandle =
480             if (test.given.isTargetInWorkProfile) workUserHandle else personalUserHandle
481         val hostAppUserHandle =
482             if (test.given.isHostInWorkProfile) workUserHandle else personalUserHandle
483 
484         val screenCaptureAllowed =
485             policyResolver.isScreenCaptureAllowed(targetAppUserHandle, hostAppUserHandle)
486 
487         assertWithMessage("Screen capture policy resolved incorrectly")
488             .that(screenCaptureAllowed)
489             .isEqualTo(test.expectedScreenCaptureAllowed)
490     }
491 }
492 
493 @RunWith(Parameterized::class)
494 @SmallTest
495 class IsCompletelyNotAllowedScreenCaptureDevicePolicyResolverTest(
496     private val test: IsScreenCaptureCompletelyDisabledTestCase
497 ) : BaseScreenCaptureDevicePolicyResolverTest(test.given) {
498 
499     companion object {
500         @Parameters(name = "{0}")
501         @JvmStatic
getParamsnull502         fun getParams() =
503             listOf(
504                 IsScreenCaptureCompletelyDisabledTestCase(
505                     given =
506                         Preconditions(
507                             isHostInWorkProfile = false,
508                             personalScreenCaptureDisabled = false,
509                             workScreenCaptureDisabled = false,
510                             disallowShareIntoManagedProfile = false
511                         ),
512                     expectedScreenCaptureCompletelyDisabled = false,
513                 ),
514                 IsScreenCaptureCompletelyDisabledTestCase(
515                     given =
516                         Preconditions(
517                             isHostInWorkProfile = false,
518                             personalScreenCaptureDisabled = false,
519                             workScreenCaptureDisabled = false,
520                             disallowShareIntoManagedProfile = true
521                         ),
522                     expectedScreenCaptureCompletelyDisabled = false,
523                 ),
524                 IsScreenCaptureCompletelyDisabledTestCase(
525                     given =
526                         Preconditions(
527                             isHostInWorkProfile = false,
528                             personalScreenCaptureDisabled = false,
529                             workScreenCaptureDisabled = true,
530                             disallowShareIntoManagedProfile = false
531                         ),
532                     expectedScreenCaptureCompletelyDisabled = false,
533                 ),
534                 IsScreenCaptureCompletelyDisabledTestCase(
535                     given =
536                         Preconditions(
537                             isHostInWorkProfile = false,
538                             personalScreenCaptureDisabled = false,
539                             workScreenCaptureDisabled = true,
540                             disallowShareIntoManagedProfile = true
541                         ),
542                     expectedScreenCaptureCompletelyDisabled = false,
543                 ),
544                 IsScreenCaptureCompletelyDisabledTestCase(
545                     given =
546                         Preconditions(
547                             isHostInWorkProfile = false,
548                             personalScreenCaptureDisabled = true,
549                             workScreenCaptureDisabled = false,
550                             disallowShareIntoManagedProfile = false
551                         ),
552                     expectedScreenCaptureCompletelyDisabled = true,
553                 ),
554                 IsScreenCaptureCompletelyDisabledTestCase(
555                     given =
556                         Preconditions(
557                             isHostInWorkProfile = false,
558                             personalScreenCaptureDisabled = true,
559                             workScreenCaptureDisabled = false,
560                             disallowShareIntoManagedProfile = true
561                         ),
562                     expectedScreenCaptureCompletelyDisabled = true,
563                 ),
564                 IsScreenCaptureCompletelyDisabledTestCase(
565                     given =
566                         Preconditions(
567                             isHostInWorkProfile = false,
568                             personalScreenCaptureDisabled = true,
569                             workScreenCaptureDisabled = true,
570                             disallowShareIntoManagedProfile = false
571                         ),
572                     expectedScreenCaptureCompletelyDisabled = true,
573                 ),
574                 IsScreenCaptureCompletelyDisabledTestCase(
575                     given =
576                         Preconditions(
577                             isHostInWorkProfile = false,
578                             personalScreenCaptureDisabled = true,
579                             workScreenCaptureDisabled = true,
580                             disallowShareIntoManagedProfile = true
581                         ),
582                     expectedScreenCaptureCompletelyDisabled = true,
583                 ),
584                 IsScreenCaptureCompletelyDisabledTestCase(
585                     given =
586                         Preconditions(
587                             isHostInWorkProfile = true,
588                             personalScreenCaptureDisabled = false,
589                             workScreenCaptureDisabled = false,
590                             disallowShareIntoManagedProfile = false
591                         ),
592                     expectedScreenCaptureCompletelyDisabled = false,
593                 ),
594                 IsScreenCaptureCompletelyDisabledTestCase(
595                     given =
596                         Preconditions(
597                             isHostInWorkProfile = true,
598                             personalScreenCaptureDisabled = false,
599                             workScreenCaptureDisabled = false,
600                             disallowShareIntoManagedProfile = true
601                         ),
602                     expectedScreenCaptureCompletelyDisabled = false,
603                 ),
604                 IsScreenCaptureCompletelyDisabledTestCase(
605                     given =
606                         Preconditions(
607                             isHostInWorkProfile = true,
608                             personalScreenCaptureDisabled = false,
609                             workScreenCaptureDisabled = true,
610                             disallowShareIntoManagedProfile = false
611                         ),
612                     expectedScreenCaptureCompletelyDisabled = true,
613                 ),
614                 IsScreenCaptureCompletelyDisabledTestCase(
615                     given =
616                         Preconditions(
617                             isHostInWorkProfile = true,
618                             personalScreenCaptureDisabled = false,
619                             workScreenCaptureDisabled = true,
620                             disallowShareIntoManagedProfile = true
621                         ),
622                     expectedScreenCaptureCompletelyDisabled = true,
623                 ),
624                 IsScreenCaptureCompletelyDisabledTestCase(
625                     given =
626                         Preconditions(
627                             isHostInWorkProfile = true,
628                             personalScreenCaptureDisabled = true,
629                             workScreenCaptureDisabled = false,
630                             disallowShareIntoManagedProfile = false
631                         ),
632                     expectedScreenCaptureCompletelyDisabled = false,
633                 ),
634                 IsScreenCaptureCompletelyDisabledTestCase(
635                     given =
636                         Preconditions(
637                             isHostInWorkProfile = true,
638                             personalScreenCaptureDisabled = true,
639                             workScreenCaptureDisabled = false,
640                             disallowShareIntoManagedProfile = true
641                         ),
642                     expectedScreenCaptureCompletelyDisabled = false,
643                 ),
644                 IsScreenCaptureCompletelyDisabledTestCase(
645                     given =
646                         Preconditions(
647                             isHostInWorkProfile = true,
648                             personalScreenCaptureDisabled = true,
649                             workScreenCaptureDisabled = true,
650                             disallowShareIntoManagedProfile = false
651                         ),
652                     expectedScreenCaptureCompletelyDisabled = true,
653                 ),
654                 IsScreenCaptureCompletelyDisabledTestCase(
655                     given =
656                         Preconditions(
657                             isHostInWorkProfile = true,
658                             personalScreenCaptureDisabled = true,
659                             workScreenCaptureDisabled = true,
660                             disallowShareIntoManagedProfile = true
661                         ),
662                     expectedScreenCaptureCompletelyDisabled = true,
663                 )
664             )
665     }
666 
667     class Preconditions(
668         personalScreenCaptureDisabled: Boolean,
669         workScreenCaptureDisabled: Boolean,
670         disallowShareIntoManagedProfile: Boolean,
671         val isHostInWorkProfile: Boolean,
672     ) :
673         BaseScreenCaptureDevicePolicyResolverTest.Preconditions(
674             personalScreenCaptureDisabled,
675             workScreenCaptureDisabled,
676             disallowShareIntoManagedProfile
677         )
678 
679     data class IsScreenCaptureCompletelyDisabledTestCase(
680         val given: Preconditions,
681         val expectedScreenCaptureCompletelyDisabled: Boolean
682     ) {
683         override fun toString(): String =
684             "isScreenCaptureCompletelyDisabled: " +
685                 "host[${if (given.isHostInWorkProfile) "work" else "personal"} profile], " +
686                 "personal screen capture disabled = ${given.personalScreenCaptureDisabled}, " +
687                 "work screen capture disabled = ${given.workScreenCaptureDisabled}, " +
688                 "disallow share into managed profile = ${given.disallowShareIntoManagedProfile}, " +
689                 "expected screen capture completely disabled = $expectedScreenCaptureCompletelyDisabled"
690     }
691 
692     @Test
testnull693     fun test() {
694         val hostAppUserHandle =
695             if (test.given.isHostInWorkProfile) workUserHandle else personalUserHandle
696 
697         val completelyDisabled = policyResolver.isScreenCaptureCompletelyDisabled(hostAppUserHandle)
698 
699         assertWithMessage("Screen capture policy resolved incorrectly")
700             .that(completelyDisabled)
701             .isEqualTo(test.expectedScreenCaptureCompletelyDisabled)
702     }
703 }
704