Index: content/app/android/child_process_service.cc |
diff --git a/content/app/android/child_process_service.cc b/content/app/android/child_process_service.cc |
deleted file mode 100644 |
index 861b6d9a2e8136cf0e812e8d29a7ef8d2e4b5297..0000000000000000000000000000000000000000 |
--- a/content/app/android/child_process_service.cc |
+++ /dev/null |
@@ -1,189 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "content/app/android/child_process_service.h" |
- |
-#include <android/native_window_jni.h> |
-#include <cpu-features.h> |
- |
-#include "base/android/jni_array.h" |
-#include "base/android/library_loader/library_loader_hooks.h" |
-#include "base/android/memory_pressure_listener_android.h" |
-#include "base/logging.h" |
-#include "base/macros.h" |
-#include "base/posix/global_descriptors.h" |
-#include "content/child/child_thread_impl.h" |
-#include "content/public/common/content_descriptors.h" |
-#include "gpu/ipc/common/android/surface_texture_manager.h" |
-#include "gpu/ipc/common/android/surface_texture_peer.h" |
-#include "gpu/ipc/common/gpu_surface_lookup.h" |
-#include "ipc/ipc_descriptors.h" |
-#include "jni/ChildProcessService_jni.h" |
-#include "ui/gl/android/scoped_java_surface.h" |
- |
-using base::android::AttachCurrentThread; |
-using base::android::CheckException; |
-using base::android::JavaIntArrayToIntVector; |
- |
-namespace content { |
- |
-namespace { |
- |
-// TODO(sievers): Use two different implementations of this depending on if |
-// we're in a renderer or gpu process. |
-class SurfaceTextureManagerImpl : public gpu::SurfaceTextureManager, |
- public gpu::SurfaceTexturePeer, |
- public gpu::GpuSurfaceLookup { |
- public: |
- // |service| is the instance of |
- // org.chromium.content.app.ChildProcessService. |
- explicit SurfaceTextureManagerImpl( |
- const base::android::JavaRef<jobject>& service) |
- : service_(service) { |
- SurfaceTexturePeer::InitInstance(this); |
- gpu::GpuSurfaceLookup::InitInstance(this); |
- } |
- ~SurfaceTextureManagerImpl() override { |
- SurfaceTexturePeer::InitInstance(NULL); |
- gpu::GpuSurfaceLookup::InitInstance(NULL); |
- } |
- |
- // Overridden from SurfaceTextureManager: |
- void RegisterSurfaceTexture(int surface_texture_id, |
- int client_id, |
- gl::SurfaceTexture* surface_texture) override { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- Java_ChildProcessService_createSurfaceTextureSurface( |
- env, |
- service_.obj(), |
- surface_texture_id, |
- client_id, |
- surface_texture->j_surface_texture().obj()); |
- } |
- void UnregisterSurfaceTexture(int surface_texture_id, |
- int client_id) override { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- Java_ChildProcessService_destroySurfaceTextureSurface( |
- env, service_.obj(), surface_texture_id, client_id); |
- } |
- gfx::AcceleratedWidget AcquireNativeWidgetForSurfaceTexture( |
- int surface_texture_id) override { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- gl::ScopedJavaSurface surface( |
- Java_ChildProcessService_getSurfaceTextureSurface(env, service_.obj(), |
- surface_texture_id)); |
- |
- if (surface.j_surface().is_null()) |
- return NULL; |
- |
- // Note: This ensures that any local references used by |
- // ANativeWindow_fromSurface are released immediately. This is needed as a |
- // workaround for https://code.google.com/p/android/issues/detail?id=68174 |
- base::android::ScopedJavaLocalFrame scoped_local_reference_frame(env); |
- ANativeWindow* native_window = |
- ANativeWindow_fromSurface(env, surface.j_surface().obj()); |
- |
- return native_window; |
- } |
- |
- // Overridden from SurfaceTexturePeer: |
- void EstablishSurfaceTexturePeer( |
- base::ProcessHandle pid, |
- scoped_refptr<gl::SurfaceTexture> surface_texture, |
- int primary_id, |
- int secondary_id) override { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- content::Java_ChildProcessService_establishSurfaceTexturePeer( |
- env, |
- service_.obj(), |
- pid, |
- surface_texture->j_surface_texture().obj(), |
- primary_id, |
- secondary_id); |
- } |
- |
- // Overridden from GpuSurfaceLookup: |
- gfx::AcceleratedWidget AcquireNativeWidget(int surface_id) override { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- gl::ScopedJavaSurface surface( |
- content::Java_ChildProcessService_getViewSurface(env, service_.obj(), |
- surface_id)); |
- |
- if (surface.j_surface().is_null()) |
- return NULL; |
- |
- // Note: This ensures that any local references used by |
- // ANativeWindow_fromSurface are released immediately. This is needed as a |
- // workaround for https://code.google.com/p/android/issues/detail?id=68174 |
- base::android::ScopedJavaLocalFrame scoped_local_reference_frame(env); |
- ANativeWindow* native_window = |
- ANativeWindow_fromSurface(env, surface.j_surface().obj()); |
- |
- return native_window; |
- } |
- |
- // Overridden from GpuSurfaceLookup: |
- gl::ScopedJavaSurface AcquireJavaSurface(int surface_id) override { |
- JNIEnv* env = base::android::AttachCurrentThread(); |
- return gl::ScopedJavaSurface( |
- content::Java_ChildProcessService_getViewSurface(env, service_.obj(), |
- surface_id)); |
- } |
- |
- private: |
- // The instance of org.chromium.content.app.ChildProcessService. |
- base::android::ScopedJavaGlobalRef<jobject> service_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SurfaceTextureManagerImpl); |
-}; |
- |
-// Chrome actually uses the renderer code path for all of its child |
-// processes such as renderers, plugins, etc. |
-void InternalInitChildProcess(JNIEnv* env, |
- const JavaParamRef<jobject>& service, |
- jint cpu_count, |
- jlong cpu_features) { |
- // Set the CPU properties. |
- android_setCpu(cpu_count, cpu_features); |
- gpu::SurfaceTextureManager::SetInstance( |
- new SurfaceTextureManagerImpl(service)); |
- |
- base::android::MemoryPressureListenerAndroid::RegisterSystemCallback(env); |
-} |
- |
-} // namespace <anonymous> |
- |
-void RegisterGlobalFileDescriptor(JNIEnv* env, |
- const JavaParamRef<jclass>& clazz, |
- jint id, |
- jint fd, |
- jlong offset, |
- jlong size) { |
- base::MemoryMappedFile::Region region = {offset, size}; |
- base::GlobalDescriptors::GetInstance()->Set(id, fd, region); |
-} |
- |
-void InitChildProcess(JNIEnv* env, |
- const JavaParamRef<jclass>& clazz, |
- const JavaParamRef<jobject>& service, |
- jint cpu_count, |
- jlong cpu_features) { |
- InternalInitChildProcess(env, service, cpu_count, cpu_features); |
-} |
- |
-void ExitChildProcess(JNIEnv* env, const JavaParamRef<jclass>& clazz) { |
- VLOG(0) << "ChildProcessService: Exiting child process."; |
- base::android::LibraryLoaderExitHook(); |
- _exit(0); |
-} |
- |
-bool RegisterChildProcessService(JNIEnv* env) { |
- return RegisterNativesImpl(env); |
-} |
- |
-void ShutdownMainThread(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
- ChildThreadImpl::ShutdownThread(); |
-} |
- |
-} // namespace content |