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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnection.java

Issue 23717023: Android: Add chrome-specific dynamic linker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update content_tests.gypi Created 7 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/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 1401866a9327af33e8acf65a3bfcab3ad17f21e9..89d356d2f2cad5cfb81c809eed84d4aa7218de9c 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
@@ -24,6 +24,8 @@ import org.chromium.base.CpuFeatures;
import org.chromium.base.SysUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.content.app.ChildProcessService;
+import org.chromium.content.app.Linker;
+import org.chromium.content.app.LinkerParams;
import org.chromium.content.common.CommandLine;
import org.chromium.content.common.IChildProcessCallback;
import org.chromium.content.common.IChildProcessService;
@@ -103,18 +105,23 @@ public class ChildProcessConnection {
// Incremented on attachAsActive(), decremented on detachAsActive().
private int mAttachAsActiveCount = 0;
+ // Linker-related parameters.
+ private LinkerParams mLinkerParams = null;
+
private static final String TAG = "ChildProcessConnection";
private static class ConnectionParams {
final String[] mCommandLine;
final FileDescriptorInfo[] mFilesToBeMapped;
final IChildProcessCallback mCallback;
+ final Bundle mSharedRelros;
ConnectionParams(String[] commandLine, FileDescriptorInfo[] filesToBeMapped,
- IChildProcessCallback callback) {
+ IChildProcessCallback callback, Bundle sharedRelros) {
mCommandLine = commandLine;
mFilesToBeMapped = filesToBeMapped;
mCallback = callback;
+ mSharedRelros = sharedRelros;
}
}
@@ -142,6 +149,8 @@ public class ChildProcessConnection {
if (commandLine != null) {
intent.putExtra(EXTRA_COMMAND_LINE, commandLine);
}
+ if (mLinkerParams != null)
+ mLinkerParams.addIntentExtras(intent);
mBound = mContext.bindService(intent, this, mBindFlags);
}
return mBound;
@@ -204,12 +213,14 @@ public class ChildProcessConnection {
ChildProcessConnection(Context context, int number, boolean inSandbox,
ChildProcessConnection.DeathCallback deathCallback,
- Class<? extends ChildProcessService> serviceClass) {
+ Class<? extends ChildProcessService> serviceClass,
+ LinkerParams linkerParams) {
mContext = context;
mServiceNumber = number;
mInSandbox = inSandbox;
mDeathCallback = deathCallback;
mServiceClass = serviceClass;
+ mLinkerParams = linkerParams;
mInitialBinding = new ChildServiceConnection(Context.BIND_AUTO_CREATE);
mStrongBinding = new ChildServiceConnection(
Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT);
@@ -273,12 +284,14 @@ public class ChildProcessConnection {
String[] commandLine,
FileDescriptorInfo[] filesToBeMapped,
IChildProcessCallback processCallback,
- ConnectionCallback connectionCallbacks) {
+ ConnectionCallback connectionCallbacks,
+ Bundle sharedRelros) {
synchronized(mLock) {
TraceEvent.begin();
assert mConnectionParams == null;
mConnectionCallback = connectionCallbacks;
- mConnectionParams = new ConnectionParams(commandLine, filesToBeMapped, processCallback);
+ mConnectionParams = new ConnectionParams(
+ commandLine, filesToBeMapped, processCallback, sharedRelros);
// Make sure that the service is already connected. If not, doConnectionSetup() will be
// called from onServiceConnected().
if (mServiceConnectComplete) {
@@ -361,6 +374,9 @@ public class ChildProcessConnection {
bundle.putInt(EXTRA_CPU_COUNT, CpuFeatures.getCount());
bundle.putLong(EXTRA_CPU_FEATURES, CpuFeatures.getMask());
+ bundle.putBundle(Linker.EXTRA_LINKER_SHARED_RELROS,
+ mConnectionParams.mSharedRelros);
+
try {
mPID = mService.setupConnection(bundle, mConnectionParams.mCallback);
} catch (android.os.RemoteException re) {

Powered by Google App Engine
This is Rietveld 408576698