Chromium Code Reviews| Index: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java |
| diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java |
| index 9715f6368742f364525ceefd0af6e26262dc1dd6..78519f1c1e9b5c94adc4e9b0884c9dcaeab402cf 100644 |
| --- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java |
| +++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java |
| @@ -21,9 +21,11 @@ import java.util.concurrent.atomic.AtomicBoolean; |
| import org.chromium.base.CalledByNative; |
| import org.chromium.base.CpuFeatures; |
| +import org.chromium.base.Linker; |
| import org.chromium.base.SysUtils; |
| import org.chromium.base.ThreadUtils; |
| import org.chromium.content.app.ChildProcessService; |
| +import org.chromium.content.app.LibraryLoader; |
| import org.chromium.content.common.CommandLine; |
| import org.chromium.content.common.IChildProcessCallback; |
| import org.chromium.content.common.IChildProcessService; |
| @@ -87,6 +89,9 @@ public class ChildProcessConnection { |
| public static final String EXTRA_CPU_FEATURES = |
| "com.google.android.apps.chrome.extra.cpu_features"; |
| + public static final String EXTRA_CHROME_LINKER_ADDRESS = |
| + "com.google.android.apps.chrome.extra.crazy_linker_address"; |
| + |
| private final Context mContext; |
| private final int mServiceNumber; |
| private final boolean mInSandbox; |
| @@ -160,6 +165,9 @@ public class ChildProcessConnection { |
| if (commandLine != null) { |
| intent.putExtra(EXTRA_COMMAND_LINE, commandLine); |
| } |
| + if (LibraryLoader.useCrazyLinker()) { |
| + intent.putExtra(EXTRA_CHROME_LINKER_ADDRESS, Linker.getBaseLoadAddress()); |
| + } |
| mBound = mContext.bindService(intent, this, mBindFlags); |
| if (mBound && mProtectsFromOom && mConnectionCallbacks != null) { |
| mConnectionCallbacks.onOomBindingAdded(getPid()); |
| @@ -413,6 +421,14 @@ public class ChildProcessConnection { |
| TraceEvent.end(); |
| } |
| + public void applyRelro(Bundle relroBundle) { |
| + if (mService != null && relroBundle != null) |
| + try { |
| + mService.applyRelro(relroBundle); |
| + } catch (Exception e) { |
|
bulach
2013/09/09 16:14:15
is there a more specific Exception to catch?
perha
digit1
2013/09/10 09:23:30
Yes, it's RemoteException (any Binder service func
|
| + } |
| + } |
| + |
| private static final long REMOVE_INITIAL_BINDING_DELAY_MILLIS = 1 * 1000; // One second. |
| /** |