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

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

Issue 2795913003: [Merge m58] android: Limit bindToCaller check to webview (Closed)
Patch Set: remove final from chrome Created 3 years, 8 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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.pm.ApplicationInfo; 9 import android.content.pm.ApplicationInfo;
10 import android.content.pm.PackageManager; 10 import android.content.pm.PackageManager;
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 return new ChromiumLinkerParams(sLinkerLoadAddress, 398 return new ChromiumLinkerParams(sLinkerLoadAddress,
399 waitForSharedRelros, 399 waitForSharedRelros,
400 linker.getTestRunnerClassNameForTest ing(), 400 linker.getTestRunnerClassNameForTest ing(),
401 linker.getImplementationForTesting() ); 401 linker.getImplementationForTesting() );
402 } else { 402 } else {
403 return new ChromiumLinkerParams(sLinkerLoadAddress, 403 return new ChromiumLinkerParams(sLinkerLoadAddress,
404 waitForSharedRelros); 404 waitForSharedRelros);
405 } 405 }
406 } 406 }
407 407
408 private static Bundle createCommonParamsBundle(ChildProcessCreationParams pa rams) {
409 Bundle commonParams = new Bundle();
410 commonParams.putParcelable(
411 ChildProcessConstants.EXTRA_LINKER_PARAMS, getLinkerParamsForNew Connection());
412 final boolean bindToCallerCheck = params == null ? false : params.getBin dToCallerCheck();
413 commonParams.putBoolean(ChildProcessConstants.EXTRA_BIND_TO_CALLER, bind ToCallerCheck);
414 return commonParams;
415 }
416
408 private static ChildProcessConnection allocateBoundConnection(SpawnData spaw nData, 417 private static ChildProcessConnection allocateBoundConnection(SpawnData spaw nData,
409 boolean alwaysInForeground, ChildProcessConnection.StartCallback sta rtCallback) { 418 boolean alwaysInForeground, ChildProcessConnection.StartCallback sta rtCallback) {
410 final Context context = spawnData.context(); 419 final Context context = spawnData.context();
411 final boolean inSandbox = spawnData.inSandbox(); 420 final boolean inSandbox = spawnData.inSandbox();
412 final ChildProcessCreationParams creationParams = spawnData.getCreationP arams(); 421 final ChildProcessCreationParams creationParams = spawnData.getCreationP arams();
413 Bundle commonParams = new Bundle(); 422 ChildProcessConnection connection = allocateConnection(spawnData,
414 commonParams.putParcelable( 423 createCommonParamsBundle(spawnData.getCreationParams()), alwaysI nForeground);
415 ChildProcessConstants.EXTRA_LINKER_PARAMS, getLinkerParamsForNew Connection());
416 ChildProcessConnection connection =
417 allocateConnection(spawnData, commonParams, alwaysInForeground);
418 if (connection != null) { 424 if (connection != null) {
419 connection.start(startCallback); 425 connection.start(startCallback);
420 426
421 String packageName = creationParams != null ? creationParams.getPack ageName() 427 String packageName = creationParams != null ? creationParams.getPack ageName()
422 : context.getPackageName (); 428 : context.getPackageName ();
423 if (inSandbox 429 if (inSandbox
424 && !getConnectionAllocator(packageName, inSandbox) 430 && !getConnectionAllocator(packageName, inSandbox)
425 .isFreeConnectionAvailable()) { 431 .isFreeConnectionAvailable()) {
426 // Proactively releases all the moderate bindings once all the s andboxed services 432 // Proactively releases all the moderate bindings once all the s andboxed services
427 // are allocated, which will be very likely to have some of them killed by OOM 433 // are allocated, which will be very likely to have some of them killed by OOM
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 // When launching these renderer processes, {@link ChildProcessC onnectionImpl} 663 // When launching these renderer processes, {@link ChildProcessC onnectionImpl}
658 // requires the package name of the application which holds the renderer process. 664 // requires the package name of the application which holds the renderer process.
659 // Therefore, the package name in ChildProcessCreationParams cou ld be the package 665 // Therefore, the package name in ChildProcessCreationParams cou ld be the package
660 // name of WebViews, WebAPKs, or Chrome, depending on the host a pplication. 666 // name of WebViews, WebAPKs, or Chrome, depending on the host a pplication.
661 // Except renderer process, all other child processes should use Chrome's package 667 // Except renderer process, all other child processes should use Chrome's package
662 // name. In WebAPK, ChildProcessCreationParams are initialized w ith WebAPK's 668 // name. In WebAPK, ChildProcessCreationParams are initialized w ith WebAPK's
663 // package name. Make a copy of the WebAPK's params, but replace the package with 669 // package name. Make a copy of the WebAPK's params, but replace the package with
664 // Chrome's package to use when initializing a non-renderer proc esses. 670 // Chrome's package to use when initializing a non-renderer proc esses.
665 // TODO(boliu): Should fold into |paramId|. Investigate why this is needed. 671 // TODO(boliu): Should fold into |paramId|. Investigate why this is needed.
666 params = new ChildProcessCreationParams(context.getPackageName() , 672 params = new ChildProcessCreationParams(context.getPackageName() ,
667 params.getIsExternalService(), params.getLibraryProcessT ype()); 673 params.getIsExternalService(), params.getLibraryProcessT ype(),
674 params.getBindToCallerCheck());
668 } 675 }
669 if (ContentSwitches.SWITCH_GPU_PROCESS.equals(processType)) { 676 if (ContentSwitches.SWITCH_GPU_PROCESS.equals(processType)) {
670 callbackType = CALLBACK_FOR_GPU_PROCESS; 677 callbackType = CALLBACK_FOR_GPU_PROCESS;
671 inSandbox = false; 678 inSandbox = false;
672 } else if (ContentSwitches.SWITCH_UTILITY_PROCESS.equals(processType )) { 679 } else if (ContentSwitches.SWITCH_UTILITY_PROCESS.equals(processType )) {
673 // We only support sandboxed right now. 680 // We only support sandboxed right now.
674 callbackType = CALLBACK_FOR_UTILITY_PROCESS; 681 callbackType = CALLBACK_FOR_UTILITY_PROCESS;
675 } else { 682 } else {
676 assert false; 683 assert false;
677 } 684 }
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 static ChildProcessConnection allocateBoundConnectionForTesting(Context cont ext, 889 static ChildProcessConnection allocateBoundConnectionForTesting(Context cont ext,
883 ChildProcessCreationParams creationParams) { 890 ChildProcessCreationParams creationParams) {
884 return allocateBoundConnection( 891 return allocateBoundConnection(
885 new SpawnData(false /* forWarmUp */, context, null /* commandLin e */, 892 new SpawnData(false /* forWarmUp */, context, null /* commandLin e */,
886 0 /* childProcessId */, null /* filesToBeMapped */, 0 /* clientContext */, 893 0 /* childProcessId */, null /* filesToBeMapped */, 0 /* clientContext */,
887 CALLBACK_FOR_RENDERER_PROCESS, true /* inSandbox */, cre ationParams), 894 CALLBACK_FOR_RENDERER_PROCESS, true /* inSandbox */, cre ationParams),
888 false /* alwaysInForeground */, null); 895 false /* alwaysInForeground */, null);
889 } 896 }
890 897
891 @VisibleForTesting 898 @VisibleForTesting
892 static ChildProcessConnection allocateConnectionForTesting(Context context, 899 static ChildProcessConnection allocateConnectionForTesting(
893 ChildProcessCreationParams creationParams) { 900 Context context, ChildProcessCreationParams creationParams) {
894 Bundle commonParams = new Bundle();
895 commonParams.putParcelable(
896 ChildProcessConstants.EXTRA_LINKER_PARAMS, getLinkerParamsForNew Connection());
897 return allocateConnection( 901 return allocateConnection(
898 new SpawnData(false /* forWarmUp */, context, null /* commandLin e */, 902 new SpawnData(false /* forWarmUp */, context, null /* commandLin e */,
899 0 /* childProcessId */, null /* filesToBeMapped */, 0 /* clientContext */, 903 0 /* childProcessId */, null /* filesToBeMapped */, 0 /* clientContext */,
900 CALLBACK_FOR_RENDERER_PROCESS, true /* inSandbox */, cre ationParams), 904 CALLBACK_FOR_RENDERER_PROCESS, true /* inSandbox */, cre ationParams),
901 commonParams, false); 905 createCommonParamsBundle(creationParams), false);
902 } 906 }
903 907
904 /** 908 /**
905 * Queue up a spawn requests for testing. 909 * Queue up a spawn requests for testing.
906 */ 910 */
907 @VisibleForTesting 911 @VisibleForTesting
908 static void enqueuePendingSpawnForTesting(Context context, String[] commandL ine, 912 static void enqueuePendingSpawnForTesting(Context context, String[] commandL ine,
909 ChildProcessCreationParams creationParams, boolean inSandbox) { 913 ChildProcessCreationParams creationParams, boolean inSandbox) {
910 String packageName = creationParams != null ? creationParams.getPackageN ame() 914 String packageName = creationParams != null ? creationParams.getPackageN ame()
911 : context.getPackageName(); 915 : context.getPackageName();
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 975
972 return true; 976 return true;
973 } 977 }
974 978
975 private static native void nativeOnChildProcessStarted(long clientContext, i nt pid); 979 private static native void nativeOnChildProcessStarted(long clientContext, i nt pid);
976 private static native void nativeCompleteScopedSurfaceRequest( 980 private static native void nativeCompleteScopedSurfaceRequest(
977 UnguessableToken requestToken, Surface surface); 981 UnguessableToken requestToken, Surface surface);
978 private static native boolean nativeIsSingleProcess(); 982 private static native boolean nativeIsSingleProcess();
979 private static native Surface nativeGetViewSurface(int surfaceId); 983 private static native Surface nativeGetViewSurface(int surfaceId);
980 } 984 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698