Chromium Code Reviews| 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 #include "content/app/android/child_process_service.h" | 5 #include "content/app/android/child_process_service.h" |
| 6 | 6 |
| 7 #include <android/native_window_jni.h> | 7 #include <android/native_window_jni.h> |
| 8 #include <cpu-features.h> | 8 #include <cpu-features.h> |
| 9 | 9 |
| 10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 113 | 113 |
| 114 // Chrome actually uses the renderer code path for all of its child | 114 // Chrome actually uses the renderer code path for all of its child |
| 115 // processes such as renderers, plugins, etc. | 115 // processes such as renderers, plugins, etc. |
| 116 void InternalInitChildProcess(const std::vector<int>& file_ids, | 116 void InternalInitChildProcess(const std::vector<int>& file_ids, |
| 117 const std::vector<int>& file_fds, | 117 const std::vector<int>& file_fds, |
| 118 JNIEnv* env, | 118 JNIEnv* env, |
| 119 jclass clazz, | 119 jclass clazz, |
| 120 jobject context, | 120 jobject context, |
| 121 jobject service_in, | 121 jobject service_in, |
| 122 jint cpu_count, | 122 jint cpu_count, |
| 123 jlong cpu_features) { | 123 jlong cpu_features, |
| 124 jboolean use_linker, | |
| 125 jboolean load_at_fixed_address_failed) { | |
| 124 base::android::ScopedJavaLocalRef<jobject> service(env, service_in); | 126 base::android::ScopedJavaLocalRef<jobject> service(env, service_in); |
| 125 | 127 |
| 126 // Set the CPU properties. | 128 // Set the CPU properties. |
| 127 android_setCpu(cpu_count, cpu_features); | 129 android_setCpu(cpu_count, cpu_features); |
| 128 // Register the file descriptors. | 130 // Register the file descriptors. |
| 129 // This includes the IPC channel, the crash dump signals and resource related | 131 // This includes the IPC channel, the crash dump signals and resource related |
| 130 // files. | 132 // files. |
| 131 DCHECK(file_fds.size() == file_ids.size()); | 133 DCHECK(file_fds.size() == file_ids.size()); |
| 132 for (size_t i = 0; i < file_ids.size(); ++i) | 134 for (size_t i = 0; i < file_ids.size(); ++i) |
| 133 base::GlobalDescriptors::GetInstance()->Set(file_ids[i], file_fds[i]); | 135 base::GlobalDescriptors::GetInstance()->Set(file_ids[i], file_fds[i]); |
| 134 | 136 |
| 135 // SurfaceTexturePeerChildImpl implements the SurfaceTextureLookup interface, | 137 // SurfaceTexturePeerChildImpl implements the SurfaceTextureLookup interface, |
| 136 // which need to be set before we create a compositor thread that could be | 138 // which need to be set before we create a compositor thread that could be |
| 137 // using it to initialize resources. | 139 // using it to initialize resources. |
| 138 content::SurfaceTexturePeer::InitInstance( | 140 content::SurfaceTexturePeer::InitInstance( |
| 139 new SurfaceTexturePeerChildImpl(service)); | 141 new SurfaceTexturePeerChildImpl(service)); |
| 140 | 142 |
| 141 base::android::MemoryPressureListenerAndroid::RegisterSystemCallback(env); | 143 base::android::MemoryPressureListenerAndroid::RegisterSystemCallback(env); |
| 144 | |
| 145 // Save any chromium linker histogram value for later recording. | |
| 146 if (use_linker) { | |
| 147 base::android::RegisterChromiumAndroidLinkerRendererHistogram( | |
| 148 load_at_fixed_address_failed); | |
| 149 } | |
| 142 } | 150 } |
| 143 | 151 |
| 144 } // namespace <anonymous> | 152 } // namespace <anonymous> |
| 145 | 153 |
| 146 void InitChildProcess(JNIEnv* env, | 154 void InitChildProcess(JNIEnv* env, |
| 147 jclass clazz, | 155 jclass clazz, |
| 148 jobject context, | 156 jobject context, |
| 149 jobject service, | 157 jobject service, |
| 150 jintArray j_file_ids, | 158 jintArray j_file_ids, |
| 151 jintArray j_file_fds, | 159 jintArray j_file_fds, |
| 152 jint cpu_count, | 160 jint cpu_count, |
| 153 jlong cpu_features) { | 161 jlong cpu_features, |
| 162 jboolean use_linker, | |
|
rmcilroy
2014/10/01 12:14:42
nit - used_chromium_linker (and in the Java file)
simonb (inactive)
2014/10/02 15:15:30
Changes to this file reverted entirely as part of
| |
| 163 jboolean load_at_fixed_address_failed) { | |
| 154 std::vector<int> file_ids; | 164 std::vector<int> file_ids; |
| 155 std::vector<int> file_fds; | 165 std::vector<int> file_fds; |
| 156 JavaIntArrayToIntVector(env, j_file_ids, &file_ids); | 166 JavaIntArrayToIntVector(env, j_file_ids, &file_ids); |
| 157 JavaIntArrayToIntVector(env, j_file_fds, &file_fds); | 167 JavaIntArrayToIntVector(env, j_file_fds, &file_fds); |
| 158 | 168 |
| 159 InternalInitChildProcess( | 169 InternalInitChildProcess( |
| 160 file_ids, file_fds, env, clazz, context, service, | 170 file_ids, file_fds, env, clazz, context, service, |
| 161 cpu_count, cpu_features); | 171 cpu_count, cpu_features, |
| 172 use_linker, load_at_fixed_address_failed); | |
| 162 } | 173 } |
| 163 | 174 |
| 164 void ExitChildProcess(JNIEnv* env, jclass clazz) { | 175 void ExitChildProcess(JNIEnv* env, jclass clazz) { |
| 165 VLOG(0) << "ChildProcessService: Exiting child process."; | 176 VLOG(0) << "ChildProcessService: Exiting child process."; |
| 166 base::android::LibraryLoaderExitHook(); | 177 base::android::LibraryLoaderExitHook(); |
| 167 _exit(0); | 178 _exit(0); |
| 168 } | 179 } |
| 169 | 180 |
| 170 bool RegisterChildProcessService(JNIEnv* env) { | 181 bool RegisterChildProcessService(JNIEnv* env) { |
| 171 return RegisterNativesImpl(env); | 182 return RegisterNativesImpl(env); |
| 172 } | 183 } |
| 173 | 184 |
| 174 void ShutdownMainThread(JNIEnv* env, jobject obj) { | 185 void ShutdownMainThread(JNIEnv* env, jobject obj) { |
| 175 ChildThread::ShutdownThread(); | 186 ChildThread::ShutdownThread(); |
| 176 } | 187 } |
| 177 | 188 |
| 178 } // namespace content | 189 } // namespace content |
| OLD | NEW |