Merge "Add new hostingType for startProcessLocked() that selects using the WebViewZygote."
This commit is contained in:
@@ -53,6 +53,10 @@ public class WebViewZygote {
|
||||
return sPackage.packageName;
|
||||
}
|
||||
|
||||
public static boolean isMultiprocessEnabled() {
|
||||
return sMultiprocessEnabled && sPackage != null;
|
||||
}
|
||||
|
||||
public static void setMultiprocessEnabled(boolean enabled) {
|
||||
sMultiprocessEnabled = enabled;
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@ import android.util.EventLog;
|
||||
import android.util.Slog;
|
||||
import android.util.SparseArray;
|
||||
import android.util.TimeUtils;
|
||||
import android.webkit.WebViewZygote;
|
||||
|
||||
public final class ActiveServices {
|
||||
private static final String TAG = TAG_WITH_CLASS_NAME ? "ActiveServices" : TAG_AM;
|
||||
@@ -1689,6 +1690,7 @@ public final class ActiveServices {
|
||||
|
||||
final boolean isolated = (r.serviceInfo.flags&ServiceInfo.FLAG_ISOLATED_PROCESS) != 0;
|
||||
final String procName = r.processName;
|
||||
String hostingType = "service";
|
||||
ProcessRecord app;
|
||||
|
||||
if (!isolated) {
|
||||
@@ -1717,13 +1719,17 @@ public final class ActiveServices {
|
||||
// in the service any current isolated process it is running in or
|
||||
// waiting to have come up.
|
||||
app = r.isolatedProc;
|
||||
if (WebViewZygote.isMultiprocessEnabled()
|
||||
&& r.serviceInfo.packageName.equals(WebViewZygote.getPackageName())) {
|
||||
hostingType = "webview_service";
|
||||
}
|
||||
}
|
||||
|
||||
// Not running -- get it started, and enqueue this service record
|
||||
// to be executed when the app comes up.
|
||||
if (app == null && !permissionsReviewRequired) {
|
||||
if ((app=mAm.startProcessLocked(procName, r.appInfo, true, intentFlags,
|
||||
"service", r.name, false, isolated, false)) == null) {
|
||||
hostingType, r.name, false, isolated, false)) == null) {
|
||||
String msg = "Unable to launch app "
|
||||
+ r.appInfo.packageName + "/"
|
||||
+ r.appInfo.uid + " for service "
|
||||
|
||||
@@ -3747,10 +3747,18 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "Start proc: " +
|
||||
app.processName);
|
||||
checkTime(startTime, "startProcess: asking zygote to start proc");
|
||||
Process.ProcessStartResult startResult = Process.start(entryPoint,
|
||||
app.processName, uid, uid, gids, debugFlags, mountExternal,
|
||||
app.info.targetSdkVersion, app.info.seinfo, requiredAbi, instructionSet,
|
||||
app.info.dataDir, entryPointArgs);
|
||||
Process.ProcessStartResult startResult;
|
||||
if (hostingType.equals("webview_service")) {
|
||||
startResult = Process.startWebView(entryPoint,
|
||||
app.processName, uid, uid, gids, debugFlags, mountExternal,
|
||||
app.info.targetSdkVersion, app.info.seinfo, requiredAbi, instructionSet,
|
||||
app.info.dataDir, entryPointArgs);
|
||||
} else {
|
||||
startResult = Process.start(entryPoint,
|
||||
app.processName, uid, uid, gids, debugFlags, mountExternal,
|
||||
app.info.targetSdkVersion, app.info.seinfo, requiredAbi, instructionSet,
|
||||
app.info.dataDir, entryPointArgs);
|
||||
}
|
||||
checkTime(startTime, "startProcess: returned from zygote!");
|
||||
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user