* @param invokeWith null-ok the command to invoke with.
* @param packageName null-ok the name of the package this process belongs to.
* @param packagesForUid null-ok all the packages with the same uid as this process.
- * @param zygoteArgs Additional arguments to supply to the zygote process.
* @param useSystemGraphicsDriver whether the process uses system graphics driver.
- *
+ *
+ * @param zygoteArgs Additional arguments to supply to the zygote process.
* @return An object that describes the result of the attempt to start the process.
* @throws RuntimeException on fatal start failure
*
* {@hide}
*/
- public static final ProcessStartResult start(@NonNull final String processClass,
- @Nullable final String niceName,
- int uid, int gid, @Nullable int[] gids,
- int runtimeFlags, int mountExternal,
- int targetSdkVersion,
- @Nullable String seInfo,
- @NonNull String abi,
- @Nullable String instructionSet,
- @Nullable String appDataDir,
- @Nullable String invokeWith,
- @Nullable String packageName,
- @Nullable String[] packagesForUid,
- @Nullable String sandboxId,
- @Nullable String[] zygoteArgs,
- boolean useSystemGraphicsDriver) {
+ public static ProcessStartResult start(@NonNull final String processClass,
+ @Nullable final String niceName,
+ int uid, int gid, @Nullable int[] gids,
+ int runtimeFlags,
+ int mountExternal,
+ int targetSdkVersion,
+ @Nullable String seInfo,
+ @NonNull String abi,
+ @Nullable String instructionSet,
+ @Nullable String appDataDir,
+ @Nullable String invokeWith,
+ @Nullable String packageName,
+ @Nullable String[] packagesForUid,
+ @Nullable String sandboxId,
+ boolean useSystemGraphicsDriver,
+ @Nullable String[] zygoteArgs) {
return ZYGOTE_PROCESS.start(processClass, niceName, uid, gid, gids,
runtimeFlags, mountExternal, targetSdkVersion, seInfo,
abi, instructionSet, appDataDir, invokeWith, packageName,
- packagesForUid, sandboxId, /*useUnspecializedAppProcessPool=*/ true,
- zygoteArgs, useSystemGraphicsDriver);
+ packagesForUid, sandboxId, /*useUsapPool=*/ true,
+ useSystemGraphicsDriver, zygoteArgs);
}
/** @hide */
- public static final ProcessStartResult startWebView(@NonNull final String processClass,
- @Nullable final String niceName,
- int uid, int gid, @Nullable int[] gids,
- int runtimeFlags, int mountExternal,
- int targetSdkVersion,
- @Nullable String seInfo,
- @NonNull String abi,
- @Nullable String instructionSet,
- @Nullable String appDataDir,
- @Nullable String invokeWith,
- @Nullable String packageName,
- @Nullable String[] packagesForUid,
- @Nullable String sandboxId,
- @Nullable String[] zygoteArgs,
- boolean useSystemGraphicsDriver) {
+ public static ProcessStartResult startWebView(@NonNull final String processClass,
+ @Nullable final String niceName,
+ int uid, int gid, @Nullable int[] gids,
+ int runtimeFlags,
+ int mountExternal,
+ int targetSdkVersion,
+ @Nullable String seInfo,
+ @NonNull String abi,
+ @Nullable String instructionSet,
+ @Nullable String appDataDir,
+ @Nullable String invokeWith,
+ @Nullable String packageName,
+ @Nullable String[] packagesForUid,
+ @Nullable String sandboxId,
+ boolean useSystemGraphicsDriver,
+ @Nullable String[] zygoteArgs) {
return WebViewZygote.getProcess().start(processClass, niceName, uid, gid, gids,
runtimeFlags, mountExternal, targetSdkVersion, seInfo,
abi, instructionSet, appDataDir, invokeWith, packageName,
- packagesForUid, sandboxId, /*useUnspecializedAppProcessPool=*/ false,
- zygoteArgs, useSystemGraphicsDriver);
+ packagesForUid, sandboxId, /*useUsapPool=*/ false,
+ useSystemGraphicsDriver, zygoteArgs);
}
/**
@Nullable String[] packagesForUid,
@Nullable String sandboxId,
boolean useUsapPool,
- @Nullable String[] zygoteArgs,
- boolean useSystemGraphicsDriver) {
+ boolean useSystemGraphicsDriver,
+ @Nullable String[] zygoteArgs) {
// TODO (chriswailes): Is there a better place to check this value?
if (fetchUsapPoolEnabledPropWithMinInterval()) {
informZygotesOfUsapPoolStatus();
runtimeFlags, mountExternal, targetSdkVersion, seInfo,
abi, instructionSet, appDataDir, invokeWith, /*startChildZygote=*/ false,
packageName, packagesForUid, sandboxId,
- useUsapPool, zygoteArgs);
+ useUsapPool, useSystemGraphicsDriver, zygoteArgs);
} catch (ZygoteStartFailedEx ex) {
Log.e(LOG_TAG,
"Starting VM process through Zygote failed");
@Nullable String packageName,
@Nullable String[] packagesForUid,
@Nullable String sandboxId,
- boolean useUnspecializedAppProcessPool,
+ boolean useUsapPool,
+ boolean useSystemGraphicsDriver,
@Nullable String[] extraArgs)
throws ZygoteStartFailedEx {
ArrayList<String> argsForZygote = new ArrayList<>();
}
synchronized(mLock) {
+ // The USAP pool can not be used if the application will not use the systems graphics
+ // driver. If that driver is requested use the Zygote application start path.
return zygoteSendArgsAndGetResult(openZygoteSocketIfNeeded(abi),
- useUnspecializedAppProcessPool,
+ useUsapPool && useSystemGraphicsDriver,
argsForZygote);
}
}
abi, instructionSet, null /* appDataDir */, null /* invokeWith */,
true /* startChildZygote */, null /* packageName */,
null /* packagesForUid */, null /* sandboxId */,
- false /* useUsapPool */, extraArgs);
+ false /* useUsapPool */, false /*useSystemGraphicsDriver*/,
+ extraArgs);
} catch (ZygoteStartFailedEx ex) {
throw new RuntimeException("Starting child-zygote through Zygote failed", ex);
}
app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet,
app.info.dataDir, null, app.info.packageName,
packageNames, sandboxId,
- new String[] {PROC_START_SEQ_IDENT + app.startSeq},
- useSystemGraphicsDriver);
+ useSystemGraphicsDriver,
+ new String[] {PROC_START_SEQ_IDENT + app.startSeq});
} else if (hostingRecord.usesAppZygote()) {
final AppZygote appZygote = createAppZygoteForProcessIfNeeded(app);
app.processName, uid, uid, gids, runtimeFlags, mountExternal,
app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet,
app.info.dataDir, null, app.info.packageName,
- packageNames, sandboxId, /*useUnspecializedAppProcessPool=*/ false,
- new String[] {PROC_START_SEQ_IDENT + app.startSeq},
- useSystemGraphicsDriver);
+ packageNames, sandboxId, /*useUsapPool=*/ false,
+ useSystemGraphicsDriver,
+ new String[] {PROC_START_SEQ_IDENT + app.startSeq});
} else {
startResult = Process.start(entryPoint,
app.processName, uid, uid, gids, runtimeFlags, mountExternal,
app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet,
app.info.dataDir, invokeWith, app.info.packageName,
packageNames, sandboxId,
- new String[] {PROC_START_SEQ_IDENT + app.startSeq},
- useSystemGraphicsDriver);
+ useSystemGraphicsDriver,
+ new String[] {PROC_START_SEQ_IDENT + app.startSeq});
}
checkSlow(startTime, "startProcess: returned from zygote!");
return startResult;