OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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.app; | 5 package org.chromium.content.app; |
6 | 6 |
7 import android.app.Service; | 7 import android.app.Service; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.content.Intent; | 9 import android.content.Intent; |
10 import android.graphics.SurfaceTexture; | 10 import android.graphics.SurfaceTexture; |
11 import android.os.Bundle; | 11 import android.os.Bundle; |
12 import android.os.IBinder; | 12 import android.os.IBinder; |
13 import android.os.ParcelFileDescriptor; | 13 import android.os.ParcelFileDescriptor; |
14 import android.os.Process; | 14 import android.os.Process; |
15 import android.os.RemoteException; | 15 import android.os.RemoteException; |
16 import android.util.Log; | 16 import android.util.Log; |
17 import android.view.Surface; | 17 import android.view.Surface; |
18 | 18 |
19 import java.util.ArrayList; | 19 import java.util.ArrayList; |
20 | 20 |
21 import org.chromium.base.CalledByNative; | 21 import org.chromium.base.CalledByNative; |
22 import org.chromium.base.JNINamespace; | 22 import org.chromium.base.JNINamespace; |
23 import org.chromium.content.app.ContentMain; | 23 import org.chromium.content.app.ContentMain; |
24 import org.chromium.content.browser.SandboxedProcessConnection; | 24 import org.chromium.content.browser.SandboxedProcessConnection; |
25 import org.chromium.content.common.ISandboxedProcessCallback; | 25 import org.chromium.content.common.ISandboxedProcessCallback; |
26 import org.chromium.content.common.ISandboxedProcessService; | 26 import org.chromium.content.common.ISandboxedProcessService; |
| 27 import org.chromium.content.common.ProcessInitException; |
27 import org.chromium.content.common.SurfaceCallback; | 28 import org.chromium.content.common.SurfaceCallback; |
28 | 29 |
29 /** | 30 /** |
30 * This is the base class for sandboxed services; the SandboxedProcessService0,
1.. etc | 31 * This is the base class for sandboxed services; the SandboxedProcessService0,
1.. etc |
31 * subclasses provide the concrete service entry points, to enable the browser t
o connect | 32 * subclasses provide the concrete service entry points, to enable the browser t
o connect |
32 * to more than one distinct process (i.e. one process per service number, up to
limit of N). | 33 * to more than one distinct process (i.e. one process per service number, up to
limit of N). |
33 * The embedding application must declare these service instances in the applica
tion section | 34 * The embedding application must declare these service instances in the applica
tion section |
34 * of its AndroidManifest.xml, for example with N entries of the form:- | 35 * of its AndroidManifest.xml, for example with N entries of the form:- |
35 * <service android:name="org.chromium.content.app.SandboxedProcessServiceX" | 36 * <service android:name="org.chromium.content.app.SandboxedProcessServiceX" |
36 * android:process=":sandboxed_processX" /> | 37 * android:process=":sandboxed_processX" /> |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 fileFds[i] = mFileFds.get(i).detachFd(); | 147 fileFds[i] = mFileFds.get(i).detachFd(); |
147 } | 148 } |
148 ContentMain.initApplicationContext(sContext.getApplicationCo
ntext()); | 149 ContentMain.initApplicationContext(sContext.getApplicationCo
ntext()); |
149 nativeInitSandboxedProcess(sContext.getApplicationContext(), | 150 nativeInitSandboxedProcess(sContext.getApplicationContext(), |
150 SandboxedProcessService.this, fileIds, fileFds, | 151 SandboxedProcessService.this, fileIds, fileFds, |
151 mCpuCount, mCpuFeatures); | 152 mCpuCount, mCpuFeatures); |
152 ContentMain.start(); | 153 ContentMain.start(); |
153 nativeExitSandboxedProcess(); | 154 nativeExitSandboxedProcess(); |
154 } catch (InterruptedException e) { | 155 } catch (InterruptedException e) { |
155 Log.w(TAG, MAIN_THREAD_NAME + " startup failed: " + e); | 156 Log.w(TAG, MAIN_THREAD_NAME + " startup failed: " + e); |
| 157 } catch (ProcessInitException e) { |
| 158 Log.w(TAG, MAIN_THREAD_NAME + " startup failed: " + e); |
156 } | 159 } |
157 } | 160 } |
158 }, MAIN_THREAD_NAME); | 161 }, MAIN_THREAD_NAME); |
159 mSandboxMainThread.start(); | 162 mSandboxMainThread.start(); |
160 } | 163 } |
161 | 164 |
162 @Override | 165 @Override |
163 public void onDestroy() { | 166 public void onDestroy() { |
164 Log.i(TAG, "Destroying SandboxedProcessService pid=" + Process.myPid()); | 167 Log.i(TAG, "Destroying SandboxedProcessService pid=" + Process.myPid()); |
165 super.onDestroy(); | 168 super.onDestroy(); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 SandboxedProcessService service, int[] extraFileIds, int[] extraFile
Fds, | 261 SandboxedProcessService service, int[] extraFileIds, int[] extraFile
Fds, |
259 int cpuCount, long cpuFeatures); | 262 int cpuCount, long cpuFeatures); |
260 | 263 |
261 /** | 264 /** |
262 * Force the sandboxed process to exit. | 265 * Force the sandboxed process to exit. |
263 */ | 266 */ |
264 private static native void nativeExitSandboxedProcess(); | 267 private static native void nativeExitSandboxedProcess(); |
265 | 268 |
266 private native void nativeShutdownSandboxMainThread(); | 269 private native void nativeShutdownSandboxMainThread(); |
267 } | 270 } |
OLD | NEW |