Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2055)

Unified Diff: content/public/android/java/src/org/chromium/content/app/ChildProcessService.java

Issue 665273003: [Android] Initialize CommandLine before any usage in Render. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/master
Patch Set: add comments, turn a check into assert in SysUtils.detectLowEndDevice Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/app/ChildProcessService.java
diff --git a/content/public/android/java/src/org/chromium/content/app/ChildProcessService.java b/content/public/android/java/src/org/chromium/content/app/ChildProcessService.java
index 1e175a753a0ec9215f1719b9bf5a899fb44b5b20..46c1bf16edc862bf55a4546028f7ef697555d273 100644
--- a/content/public/android/java/src/org/chromium/content/app/ChildProcessService.java
+++ b/content/public/android/java/src/org/chromium/content/app/ChildProcessService.java
@@ -130,6 +130,14 @@ public class ChildProcessService extends Service {
@Override
public void run() {
try {
+ // CommandLine must be initialized before others, e.g., Linker.isUsed()
+ // may check the command line options.
+ synchronized (mMainThread) {
+ while (mCommandLineParams == null) {
+ mMainThread.wait();
+ }
+ }
+ CommandLine.init(mCommandLineParams);
boolean useLinker = Linker.isUsed();
boolean requestedSharedRelro = false;
if (useLinker) {
@@ -138,23 +146,16 @@ public class ChildProcessService extends Service {
mMainThread.wait();
}
}
- if (mLinkerParams != null) {
- if (mLinkerParams.mWaitForSharedRelro) {
- requestedSharedRelro = true;
- Linker.initServiceProcess(mLinkerParams.mBaseLoadAddress);
- } else {
- Linker.disableSharedRelros();
- }
- Linker.setTestRunnerClassName(mLinkerParams.mTestRunnerClassName);
+ assert mLinkerParams != null;
+ if (mLinkerParams.mWaitForSharedRelro) {
+ requestedSharedRelro = true;
+ Linker.initServiceProcess(mLinkerParams.mBaseLoadAddress);
+ } else {
+ Linker.disableSharedRelros();
}
+ Linker.setTestRunnerClassName(mLinkerParams.mTestRunnerClassName);
}
boolean isLoaded = false;
- synchronized (mMainThread) {
- while (mCommandLineParams == null) {
- mMainThread.wait();
- }
- }
- CommandLine.init(mCommandLineParams);
if (CommandLine.getInstance().hasSwitch(
BaseSwitches.RENDERER_WAIT_FOR_JAVA_DEBUGGER)) {
android.os.Debug.waitForDebugger();
@@ -254,9 +255,9 @@ public class ChildProcessService extends Service {
synchronized (mMainThread) {
mCommandLineParams = intent.getStringArrayExtra(
ChildProcessConnection.EXTRA_COMMAND_LINE);
- mLinkerParams = null;
- if (Linker.isUsed())
- mLinkerParams = new ChromiumLinkerParams(intent);
+ // mLinkerParams is never used if Linker.isUsed() returns false.
+ // See onCreate().
+ mLinkerParams = new ChromiumLinkerParams(intent);
mIsBound = true;
mMainThread.notifyAll();
}

Powered by Google App Engine
This is Rietveld 408576698