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