| Index: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
|
| index 2f783f27f0f90c9cadbaa35963ee752df9ac81cf..e134d3625d3ab16879dfe1c59ed732eb93b97a4f 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java
|
| @@ -11,7 +11,6 @@ import android.content.ServiceConnection;
|
| import android.os.Bundle;
|
| import android.os.DeadObjectException;
|
| import android.os.IBinder;
|
| -import android.os.ParcelFileDescriptor;
|
| import android.os.RemoteException;
|
| import android.util.Log;
|
|
|
| @@ -319,42 +318,12 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection {
|
|
|
| Bundle bundle = new Bundle();
|
| bundle.putStringArray(EXTRA_COMMAND_LINE, mConnectionParams.mCommandLine);
|
| -
|
| - FileDescriptorInfo[] fileInfos = mConnectionParams.mFilesToBeMapped;
|
| - ParcelFileDescriptor[] parcelFiles = new ParcelFileDescriptor[fileInfos.length];
|
| - for (int i = 0; i < fileInfos.length; i++) {
|
| - if (fileInfos[i].mFd == -1) {
|
| - // If someone provided an invalid FD, they are doing something wrong.
|
| - Log.e(TAG, "Invalid FD (id=" + fileInfos[i].mId + ") for process connection, "
|
| - + "aborting connection.");
|
| - return;
|
| - }
|
| - String idName = EXTRA_FILES_PREFIX + i + EXTRA_FILES_ID_SUFFIX;
|
| - String fdName = EXTRA_FILES_PREFIX + i + EXTRA_FILES_FD_SUFFIX;
|
| - if (fileInfos[i].mAutoClose) {
|
| - // Adopt the FD, it will be closed when we close the ParcelFileDescriptor.
|
| - parcelFiles[i] = ParcelFileDescriptor.adoptFd(fileInfos[i].mFd);
|
| - } else {
|
| - try {
|
| - parcelFiles[i] = ParcelFileDescriptor.fromFd(fileInfos[i].mFd);
|
| - } catch (IOException e) {
|
| - Log.e(TAG,
|
| - "Invalid FD provided for process connection, aborting connection.",
|
| - e);
|
| - return;
|
| - }
|
| -
|
| - }
|
| - bundle.putParcelable(fdName, parcelFiles[i]);
|
| - bundle.putInt(idName, fileInfos[i].mId);
|
| - }
|
| + bundle.putParcelableArray(EXTRA_FILES, mConnectionParams.mFilesToBeMapped);
|
| // Add the CPU properties now.
|
| 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);
|
| assert mPid != 0 : "Child service claims to be run by a process of pid=0.";
|
| @@ -363,8 +332,8 @@ public class ChildProcessConnectionImpl implements ChildProcessConnection {
|
| }
|
| // We proactively close the FDs rather than wait for GC & finalizer.
|
| try {
|
| - for (ParcelFileDescriptor parcelFile : parcelFiles) {
|
| - if (parcelFile != null) parcelFile.close();
|
| + for (FileDescriptorInfo fileInfo : mConnectionParams.mFilesToBeMapped) {
|
| + fileInfo.mFd.close();
|
| }
|
| } catch (IOException ioe) {
|
| Log.w(TAG, "Failed to close FD.", ioe);
|
|
|