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

Side by Side Diff: content/public/android/java/src/org/chromium/content/browser/ChildProcessConnectionImpl.java

Issue 2017963003: Upstream: ChildProcessLauncher connects renderer processes of WebAPKs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.content.browser; 5 package org.chromium.content.browser;
6 6
7 import android.content.ComponentName; 7 import android.content.ComponentName;
8 import android.content.Context; 8 import android.content.Context;
9 import android.content.Intent; 9 import android.content.Intent;
10 import android.content.ServiceConnection; 10 import android.content.ServiceConnection;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 // call. 107 // call.
108 private ChildProcessConnection.ConnectionCallback mConnectionCallback; 108 private ChildProcessConnection.ConnectionCallback mConnectionCallback;
109 109
110 private class ChildServiceConnection implements ServiceConnection { 110 private class ChildServiceConnection implements ServiceConnection {
111 private boolean mBound = false; 111 private boolean mBound = false;
112 112
113 private final int mBindFlags; 113 private final int mBindFlags;
114 114
115 private Intent createServiceBindIntent() { 115 private Intent createServiceBindIntent() {
116 Intent intent = new Intent(); 116 Intent intent = new Intent();
117 if (mCreationParams != null) { 117 mCreationParams.addIntentExtras(intent);
118 mCreationParams.addIntentExtras(intent); 118
119 }
120 intent.setComponent(mServiceName); 119 intent.setComponent(mServiceName);
121 return intent; 120 return intent;
122 } 121 }
123 122
124 public ChildServiceConnection(int bindFlags, boolean needsExtraBindFlags ) { 123 public ChildServiceConnection(int bindFlags, boolean needsExtraBindFlags ) {
125 if (needsExtraBindFlags && mCreationParams != null) { 124 if (needsExtraBindFlags) {
126 bindFlags = mCreationParams.addExtraBindFlags(bindFlags); 125 bindFlags = mCreationParams.addExtraBindFlags(bindFlags);
127 } 126 }
128 mBindFlags = bindFlags; 127 mBindFlags = bindFlags;
129 } 128 }
130 129
131 boolean bind(String[] commandLine) { 130 boolean bind(String[] commandLine) {
132 if (!mBound) { 131 if (!mBound) {
133 try { 132 try {
134 TraceEvent.begin("ChildProcessConnectionImpl.ChildServiceCon nection.bind"); 133 TraceEvent.begin("ChildProcessConnectionImpl.ChildServiceCon nection.bind");
135 final Intent intent = createServiceBindIntent(); 134 final Intent intent = createServiceBindIntent();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 ChildProcessConnection.DeathCallback deathCallback, 212 ChildProcessConnection.DeathCallback deathCallback,
214 Class<? extends ChildProcessService> serviceClass, 213 Class<? extends ChildProcessService> serviceClass,
215 ChromiumLinkerParams chromiumLinkerParams, 214 ChromiumLinkerParams chromiumLinkerParams,
216 boolean alwaysInForeground, 215 boolean alwaysInForeground,
217 ChildProcessCreationParams creationParams) { 216 ChildProcessCreationParams creationParams) {
218 mContext = context; 217 mContext = context;
219 mServiceNumber = number; 218 mServiceNumber = number;
220 mInSandbox = inSandbox; 219 mInSandbox = inSandbox;
221 mDeathCallback = deathCallback; 220 mDeathCallback = deathCallback;
222 mServiceClass = serviceClass; 221 mServiceClass = serviceClass;
223 String packageName = 222 mServiceName = new ComponentName(
224 creationParams != null ? creationParams.getPackageName() : conte xt.getPackageName(); 223 creationParams.getPackageName(), mServiceClass.getName() + mServ iceNumber);
225 mServiceName = new ComponentName(packageName, mServiceClass.getName() + mServiceNumber);
226 mLinkerParams = chromiumLinkerParams; 224 mLinkerParams = chromiumLinkerParams;
227 mAlwaysInForeground = alwaysInForeground; 225 mAlwaysInForeground = alwaysInForeground;
228 mCreationParams = creationParams; 226 mCreationParams = creationParams;
229 int initialFlags = Context.BIND_AUTO_CREATE; 227 int initialFlags = Context.BIND_AUTO_CREATE;
230 if (mAlwaysInForeground) initialFlags |= Context.BIND_IMPORTANT; 228 if (mAlwaysInForeground) initialFlags |= Context.BIND_IMPORTANT;
231 // "external service" attribute is approximated by "exported" attribute. 229 // "external service" attribute is approximated by "exported" attribute.
232 // TODO(mnaganov): Update after the release of the next Android SDK. 230 // TODO(mnaganov): Update after the release of the next Android SDK.
233 final boolean needsExtraBindFlags = isExportedService(inSandbox, mContex t, mServiceName); 231 final boolean needsExtraBindFlags = isExportedService(inSandbox, mContex t, mServiceName);
234 mInitialBinding = new ChildServiceConnection(initialFlags, needsExtraBin dFlags); 232 mInitialBinding = new ChildServiceConnection(initialFlags, needsExtraBin dFlags);
235 mStrongBinding = new ChildServiceConnection( 233 mStrongBinding = new ChildServiceConnection(
(...skipping 28 matching lines...) Expand all
264 public int getServiceNumber() { 262 public int getServiceNumber() {
265 return mServiceNumber; 263 return mServiceNumber;
266 } 264 }
267 265
268 @Override 266 @Override
269 public boolean isInSandbox() { 267 public boolean isInSandbox() {
270 return mInSandbox; 268 return mInSandbox;
271 } 269 }
272 270
273 @Override 271 @Override
272 public ChildProcessCreationParams getCreationParams() {
273 return mCreationParams;
274 }
275
276 @Override
274 public IChildProcessService getService() { 277 public IChildProcessService getService() {
275 synchronized (mLock) { 278 synchronized (mLock) {
276 return mService; 279 return mService;
277 } 280 }
278 } 281 }
279 282
280 @Override 283 @Override
281 public int getPid() { 284 public int getPid() {
282 synchronized (mLock) { 285 synchronized (mLock) {
283 return mPid; 286 return mPid;
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 return true; 514 return true;
512 } 515 }
513 return false; 516 return false;
514 } 517 }
515 518
516 @VisibleForTesting 519 @VisibleForTesting
517 public boolean isConnected() { 520 public boolean isConnected() {
518 return mService != null; 521 return mService != null;
519 } 522 }
520 } 523 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698