Don't start dreams immediately if keyguard is occluded when docked.

The keyguard must be showing and unoccluded, or the device is not
interactive (eg screen off) in order for dreams to be started
immediately when docked. This prevents dreams from starting if there is
an activity currently showing over the lockscreen.

Also includes some refactoring to be able to unit test this change,
since dock state changes were not previously tested.

Fixes: 233412496
Test: atest UiModeManagerServiceTest
Test: manually on device with keyguard occluded, unoccluded, and screen
off while docked

Change-Id: I12f1a4cf3ae4784e391e3c5a3fd1d50b4d4f7ecd
diff --git a/services/tests/uiservicestests/Android.bp b/services/tests/uiservicestests/Android.bp
index 2128a08..3d6736e 100644
--- a/services/tests/uiservicestests/Android.bp
+++ b/services/tests/uiservicestests/Android.bp
@@ -20,6 +20,7 @@
     ],
 
     static_libs: [
+        "frameworks-base-testutils",
         "services.accessibility",
         "services.core",
         "services.devicepolicy",
@@ -32,6 +33,7 @@
         "platformprotosnano",
         "statsdprotolite",
         "hamcrest-library",
+        "servicestests-utils",
         "testables",
         "truth-prebuilt",
         // TODO: remove once Android migrates to JUnit 4.12,