Refactor and test Android service termination.
This patch cleans up Android child service termination logic and covers
it with tests.
ChildProcessConnection:
- the contract of calling the ConnectionCallback in
ChildProcessConnection exactly once after setupConnection() is now
explicitly enforced
- the pid of the process connection remains valid after the connection
terminates. This will also make logs more readable.
ChildProcessLauncher:
- cleanup logic is now always handled by DeathCallback, both for
connections that terminate before and after setup completion
- getChildService() is removed as dead code
ChildProcessService + AIDL:
- crashIntentionallyForTesting() is added to allow to synchronously kill
a child service
Tests:
- tests create child processes from Java and verify correct cleanup for
services terminating before setup is initiated and after setup
completes; as well as for connections that fail the initial bind
BUG=363121
R=clamy@chromium.org, palmer@chromium.org, yfriedman@chromium.org
Review URL: https://codereview.chromium.org/
243103002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265956 0039d316-1c4b-4281-b951-d872f2087c98