Index: content/app/android/child_process_service_impl.cc |
diff --git a/content/app/android/child_process_service_impl.cc b/content/app/android/child_process_service_impl.cc |
index 99ae3f85c76e469ed2af026ac97c22fef3bfa2ce..083c3209a62c0107afde08c80aaefcb7c9e9889e 100644 |
--- a/content/app/android/child_process_service_impl.cc |
+++ b/content/app/android/child_process_service_impl.cc |
@@ -13,8 +13,10 @@ |
#include "base/logging.h" |
#include "base/macros.h" |
#include "base/posix/global_descriptors.h" |
+#include "base/unguessable_token.h" |
#include "content/child/child_thread_impl.h" |
#include "content/public/common/content_descriptors.h" |
+#include "gpu/ipc/common/android/scoped_surface_request_conduit.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" |
@@ -35,6 +37,7 @@ namespace { |
// we're in a renderer or gpu process. |
class SurfaceTextureManagerImpl : public gpu::SurfaceTextureManager, |
public gpu::SurfaceTexturePeer, |
+ public gpu::ScopedSurfaceRequestConduit, |
public gpu::GpuSurfaceLookup { |
public: |
// |service impl| is the instance of |
@@ -44,10 +47,12 @@ class SurfaceTextureManagerImpl : public gpu::SurfaceTextureManager, |
: service_impl_(service_impl) { |
SurfaceTexturePeer::InitInstance(this); |
gpu::GpuSurfaceLookup::InitInstance(this); |
+ gpu::ScopedSurfaceRequestConduit::SetInstance(this); |
} |
~SurfaceTextureManagerImpl() override { |
SurfaceTexturePeer::InitInstance(NULL); |
gpu::GpuSurfaceLookup::InitInstance(NULL); |
+ gpu::ScopedSurfaceRequestConduit::SetInstance(nullptr); |
} |
// Overridden from SurfaceTextureManager: |
@@ -97,6 +102,19 @@ class SurfaceTextureManagerImpl : public gpu::SurfaceTextureManager, |
primary_id, secondary_id); |
} |
+ // Overriden from ScopedSurfaceRequestConduit: |
+ void ForwardSurfaceTextureForSurfaceRequest( |
+ const base::UnguessableToken& request_token, |
+ const gl::SurfaceTexture* surface_texture) override { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ |
+ content:: |
+ Java_ChildProcessServiceImpl_forwardSurfaceTextureForSurfaceRequest( |
+ env, service_impl_, request_token.GetHighForSerialization(), |
+ request_token.GetLowForSerialization(), |
+ surface_texture->j_surface_texture()); |
+ } |
+ |
// Overridden from GpuSurfaceLookup: |
gfx::AcceleratedWidget AcquireNativeWidget(int surface_id) override { |
JNIEnv* env = base::android::AttachCurrentThread(); |