Commit Graph

9 Commits

Author SHA1 Message Date
Thomas Stuart
bc7b8b4b13 Revert "Allow for replaceable clock within Looper"
This reverts commit f861619bb0.

Reason for revert: causes multiple test breakages

Change-Id: I7a46e7a0d55ea726abb1150dff5c9fdda6539637
2022-08-30 16:50:18 +00:00
Michael Wright
f861619bb0 Allow for replaceable clock within Looper
Handler, Looper, and MessageQueue are all difficult to test since their
internal implementations implicitly rely on the system clock. By making
their clock replaceable in tests, we can make their behavior more
deterministic, allowing for less flaky tests overall.

Also, update TestLooper to take advantage of the replaceable clock.

Bug: 184781936
Test: atest LooperTest MessageQueueTest HandlerTest
Change-Id: I215d2eab99888a162175c37157d7be2be911b96d
2022-08-26 21:37:00 +01:00
Tiger Huang
6ef3b6e137 Remove the legacy insets mode
This CL also refines the color view logic which checks the system bar
appearance instead of system UI flags.

Bug: 149813814
Test: atest InsetsAnimationControlImplTest InsetsControllerTest
            InsetsStateTest InsetsPolicyTest InsetsStateControllerTest
Change-Id: I26d93b3508c84e436133085bd316ade54d00d76a
2020-09-18 15:13:12 +08:00
Robert Horvath
e75cf0ac16 Deterministic PowerManagerServiceTest
To make PowerManagerServiceTest deterministic,
remove dependency on real time clock by mocking it out.
Use TestLooper, which allows making Handler behaviour deterministic as
well.

Test: atest PowerManagerServiceTest
Bug: 152193749
Change-Id: I4d9cd686ac672261bbb038249c0358e451b58710
2020-03-23 16:37:13 +01:00
Roshan Pius
f145e1732e TestLooper: Some changes to test looper behavior
a) Add a new stopAutoDispatchAndIgnoreExceptions method
This method ignores exceptions raised when there are no messages
dispatched in the looper. Helps write negative unit tests for methods where
the runnables are not posted when some preconditions are not met.
Not starting the looper in these tests would make it
unclear whether the test failed because the looper was not running or
because the preconditions (like permission checks) where not satisfied.
b) Auto dispatch will only stop running when stopAutoDispatch is
invoked. Previously it stops running when it runs a single message. This
causes failures in unit tests for methods which posts multiple runnables
in the same method.

Bug: 138403307
Bug: 117601161
Test: atest com.android.server.wifi
Change-Id: Iab27d92d443c6d7364c52b86d51dd2cb7902358a
2019-09-19 20:41:32 -07:00
Jorim Jaggi
2862047fd7 Window Manager Flag Migration (2/n)
Adds policy to decide when focused window can control bars. And also
generalizes control target for:
a) Normal case: The focused window is the control target.
b) Transient bar case: The control target is a special object in WM
   that controls the transient animation.

Bug: 118118435
Test: atest InsetsPolicyTest InsetsStateControllerTest WindowStateTests
Change-Id: I4819d85eec745d56abe23dbca0905979da854e5e
2019-09-05 18:20:06 +08:00
Tarandeep Singh
a6f3561667 Reparent IME window and handle non-fullscreen windows correctly
IME window is attached to the IME target if possible. This ensures
a smooth enter/exit animation when the activity is coming in/going
away.

Furthermore, if the controlling window doesn't span the entire
display, we can't offer controlling it in a frame-by-frame
manner, and we need to do the inset calculations relative to the
display frame.

Test:
adb shell setprop persist.wm.new_insets 1
adb shell setprop persist.pre_render_ime_views 0

Test: Open IME, go home, reopen app
Test: Show dialog with EditText
Bug: 111084606
Change-Id: Id40470f6f8284b48acfa4719049afd14fde332d6
2019-02-07 15:56:21 +01:00
Etan Cohen
cff2fe4f76 Add Executor to the TestLooper
Add a method to obtain an Executor from a TestLooper: the executor
executes on a new Handler on the test looper.

Bug: 73088768
Test: new unit test for executor
Change-Id: Ib0aa10011116a4d998f8d3a7434939338d9b516d
2018-02-16 10:13:26 -08:00
Christopher Wiley
07630f6bd3 Create frameworks-base-testutils lib
This permits sharing of test components used in connectivity tests.
Rename the MockLooper to TestLooper, reflecting that it is not a
true mock, but a manually controlled Looper for use in tests.

Bug: 28848133
Test: Tests consuming this library pass.

Change-Id: I57e11f9544c7bffdb02739ab2a921512b1b11874
2016-05-19 13:12:09 -07:00