Introduce startIsolatedProcess private API in ActivityManager

The new API spawns a isolated process, using a custom uid, entrypoint and
abi. Such API is used by the WebViewFactory to spawn its unpriviledged
but trusted process (hence the fixed uid) which rewrites the rerlo file
on boot / when an update occurs.
Since both the ActivityManager service and the WebViewUpdate service
live in the SystemServer their calls be dispatched locally and no
binder interface needs to be exposed for the new startIsolatedProcess API.

BUG:16403706
Change-Id: I327b59735c12698595e0dbcc4da5d759c9103b0a
This commit is contained in:
Primiano Tucci
2014-07-25 18:03:16 +01:00
parent 4b111442d7
commit f080c3a529
7 changed files with 145 additions and 61 deletions

View File

@@ -424,9 +424,6 @@ public final class SystemServer {
Slog.i(TAG, "WebView Update Service");
ServiceManager.addService("webviewupdate", new WebViewUpdateService(context));
Slog.i(TAG, "WebViewFactory preparation");
WebViewFactory.prepareWebViewInSystemServer();
Slog.i(TAG, "Scheduling Policy");
ServiceManager.addService("scheduling_policy", new SchedulingPolicyService());
@@ -1073,6 +1070,10 @@ public final class SystemServer {
} catch (Throwable e) {
reportWtf("observing native crashes", e);
}
Slog.i(TAG, "WebViewFactory preparation");
WebViewFactory.prepareWebViewInSystemServer();
try {
startSystemUi(context);
} catch (Throwable e) {