Refactor and test Android service termination.
commitd3ad5eb99e0b7a7c02b757a28bfc1d558035b051
authorppi@chromium.org <ppi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Thu, 24 Apr 2014 17:50:05 +0000 (24 17:50 +0000)
committerppi@chromium.org <ppi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Thu, 24 Apr 2014 17:50:05 +0000 (24 17:50 +0000)
treebe6fb3e0b16815accfbca5b67227348b3d4a1ac1
parentf8a182bca719c63169a0c6a66312512a3ce3a5e4
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
content/public/android/java/src/org/chromium/content/app/ChildProcessService.java
content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java
content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
content/public/android/java/src/org/chromium/content/common/IChildProcessService.aidl
content/public/android/javatests/src/org/chromium/content/browser/ChildProcessLauncherTest.java [new file with mode: 0644]