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

Unified Diff: content/app/android/child_process_service.cc

Issue 2049843004: Upstream: Renderers are running in WebAPKs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698