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

Side by Side Diff: content/public/android/java/src/org/chromium/content/app/ChildProcessServiceImpl.java

Issue 2247143004: Remove app context init from LibraryLoader. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplify native initialization controller. Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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.app; 5 package org.chromium.content.app;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.content.Intent; 8 import android.content.Intent;
9 import android.graphics.SurfaceTexture; 9 import android.graphics.SurfaceTexture;
10 import android.os.Binder; 10 import android.os.Binder;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 private String[] mCommandLineParams; 58 private String[] mCommandLineParams;
59 private int mCpuCount; 59 private int mCpuCount;
60 private long mCpuFeatures; 60 private long mCpuFeatures;
61 // File descriptors that should be registered natively. 61 // File descriptors that should be registered natively.
62 private FileDescriptorInfo[] mFdInfos; 62 private FileDescriptorInfo[] mFdInfos;
63 // Linker-specific parameters for this child process service. 63 // Linker-specific parameters for this child process service.
64 private ChromiumLinkerParams mLinkerParams; 64 private ChromiumLinkerParams mLinkerParams;
65 // Child library process type. 65 // Child library process type.
66 private int mLibraryProcessType; 66 private int mLibraryProcessType;
67 67
68 private static AtomicReference<Context> sContext = new AtomicReference<Conte xt>(null); 68 private static AtomicReference<Context> sContext = new AtomicReference<>(nul l);
69 private boolean mLibraryInitialized = false; 69 private boolean mLibraryInitialized = false;
70 // Becomes true once the service is bound. Access must synchronize around mM ainThread. 70 // Becomes true once the service is bound. Access must synchronize around mM ainThread.
71 private boolean mIsBound = false; 71 private boolean mIsBound = false;
72 72
73 /** 73 /**
74 * If >= 0 enables "validation of caller of {@link mBinder}'s methods". A Re moteException 74 * If >= 0 enables "validation of caller of {@link mBinder}'s methods". A Re moteException
75 * is thrown when an application with a uid other than {@link mAuthorizedCal lerUid} calls 75 * is thrown when an application with a uid other than {@link mAuthorizedCal lerUid} calls
76 * {@link mBinder}'s methods. 76 * {@link mBinder}'s methods.
77 */ 77 */
78 private int mAuthorizedCallerUid; 78 private int mAuthorizedCallerUid;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 // The ClassLoader for the host browser context. 124 // The ClassLoader for the host browser context.
125 private ClassLoader mHostClassLoader; 125 private ClassLoader mHostClassLoader;
126 126
127 /* package */ static Context getContext() { 127 /* package */ static Context getContext() {
128 return sContext.get(); 128 return sContext.get();
129 } 129 }
130 130
131 /** 131 /**
132 * Loads Chrome's native libraries and initializes a ChildProcessServiceImpl . 132 * Loads Chrome's native libraries and initializes a ChildProcessServiceImpl .
133 * @param context The application context. 133 * @param context The application context.
134 * @param hostBrowserContext The context of the host browser (i.e. Chrome). 134 * @param hostContext The context of the host browser (i.e. Chrome).
Ted C 2016/09/28 17:27:46 I would drop browser from the comment as well. I
Peter Wen 2016/09/29 18:41:38 Done.
135 */ 135 */
136 public void create(final Context context, final Context hostBrowserContext) { 136 public void create(final Context context, final Context hostContext) {
137 mHostClassLoader = hostBrowserContext.getClassLoader(); 137 mHostClassLoader = hostContext.getClassLoader();
138 Log.i(TAG, "Creating new ChildProcessService pid=%d", Process.myPid()); 138 Log.i(TAG, "Creating new ChildProcessService pid=%d", Process.myPid());
139 if (sContext.get() != null) { 139 if (sContext.get() != null) {
140 throw new RuntimeException("Illegal child process reuse."); 140 throw new RuntimeException("Illegal child process reuse.");
141 } 141 }
142 sContext.set(context); 142 sContext.set(context);
143 143
144 // Initialize the context for the application that owns this ChildProces sServiceImpl object. 144 // Initialize the context for the application that owns this ChildProces sServiceImpl object.
145 ContextUtils.initApplicationContext(context); 145 ContextUtils.initApplicationContext(context);
146 146
147 mMainThread = new Thread(new Runnable() { 147 mMainThread = new Thread(new Runnable() {
(...skipping 26 matching lines...) Expand all
174 } 174 }
175 } 175 }
176 boolean isLoaded = false; 176 boolean isLoaded = false;
177 if (CommandLine.getInstance().hasSwitch( 177 if (CommandLine.getInstance().hasSwitch(
178 BaseSwitches.RENDERER_WAIT_FOR_JAVA_DEBUGGER)) { 178 BaseSwitches.RENDERER_WAIT_FOR_JAVA_DEBUGGER)) {
179 android.os.Debug.waitForDebugger(); 179 android.os.Debug.waitForDebugger();
180 } 180 }
181 181
182 boolean loadAtFixedAddressFailed = false; 182 boolean loadAtFixedAddressFailed = false;
183 try { 183 try {
184 LibraryLoader.get(mLibraryProcessType).loadNow(hostBrows erContext); 184 LibraryLoader.get(mLibraryProcessType)
185 .loadNowOverrideApplicationContext(hostContext);
185 isLoaded = true; 186 isLoaded = true;
186 } catch (ProcessInitException e) { 187 } catch (ProcessInitException e) {
187 if (requestedSharedRelro) { 188 if (requestedSharedRelro) {
188 Log.w(TAG, "Failed to load native library with share d RELRO, " 189 Log.w(TAG, "Failed to load native library with share d RELRO, "
189 + "retrying without"); 190 + "retrying without");
190 loadAtFixedAddressFailed = true; 191 loadAtFixedAddressFailed = true;
191 } else { 192 } else {
192 Log.e(TAG, "Failed to load native library", e); 193 Log.e(TAG, "Failed to load native library", e);
193 } 194 }
194 } 195 }
195 if (!isLoaded && requestedSharedRelro) { 196 if (!isLoaded && requestedSharedRelro) {
196 linker.disableSharedRelros(); 197 linker.disableSharedRelros();
197 try { 198 try {
198 LibraryLoader.get(mLibraryProcessType).loadNow(hostB rowserContext); 199 LibraryLoader.get(mLibraryProcessType)
200 .loadNowOverrideApplicationContext(hostConte xt);
199 isLoaded = true; 201 isLoaded = true;
200 } catch (ProcessInitException e) { 202 } catch (ProcessInitException e) {
201 Log.e(TAG, "Failed to load native library on retry", e); 203 Log.e(TAG, "Failed to load native library on retry", e);
202 } 204 }
203 } 205 }
204 if (!isLoaded) { 206 if (!isLoaded) {
205 System.exit(-1); 207 System.exit(-1);
206 } 208 }
207 LibraryLoader.get(mLibraryProcessType) 209 LibraryLoader.get(mLibraryProcessType)
208 .registerRendererProcessHistogram(requestedSharedRel ro, 210 .registerRendererProcessHistogram(requestedSharedRel ro,
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 private static native void nativeInitChildProcessImpl( 474 private static native void nativeInitChildProcessImpl(
473 ChildProcessServiceImpl serviceImpl, int cpuCount, long cpuFeatures) ; 475 ChildProcessServiceImpl serviceImpl, int cpuCount, long cpuFeatures) ;
474 476
475 /** 477 /**
476 * Force the child process to exit. 478 * Force the child process to exit.
477 */ 479 */
478 private static native void nativeExitChildProcess(); 480 private static native void nativeExitChildProcess();
479 481
480 private native void nativeShutdownMainThread(); 482 private native void nativeShutdownMainThread();
481 } 483 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698