Index: shell/android/main.cc |
diff --git a/shell/android/main.cc b/shell/android/main.cc |
index 6502015c0b28692fdc5dbc9b8be0dbaf10592d93..76cd4a56e5a4bc3407e8ecbf5f6d763970e87e1a 100644 |
--- a/shell/android/main.cc |
+++ b/shell/android/main.cc |
@@ -23,6 +23,7 @@ |
#include "base/threading/simple_thread.h" |
#include "jni/ShellService_jni.h" |
#include "mojo/common/message_pump_mojo.h" |
+#include "mojo/services/native_viewport/public/interfaces/native_viewport.mojom.h" |
#include "mojo/services/network/public/interfaces/network_service.mojom.h" |
#include "mojo/services/window_manager/public/interfaces/window_manager.mojom.h" |
#include "shell/android/android_handler_loader.h" |
@@ -92,6 +93,7 @@ struct InternalShellData { |
// Proxy to a Window Manager, initialized on the shell thread. |
mojo::WindowManagerPtr window_manager; |
+ mojo::NativeViewportShellServicePtr native_viewport; |
// TaskRunner used to execute tasks on the shell thread. |
scoped_refptr<base::SingleThreadTaskRunner> shell_task_runner; |
@@ -196,6 +198,16 @@ void ConnectToApplicationImpl( |
url, GURL(), services.Pass(), exposed_services.Pass(), base::Closure()); |
} |
+void SendSurfaceAvailable() { |
+ if (!g_internal_data.Get().native_viewport.get()) { |
+ Context* context = g_internal_data.Get().context.get(); |
+ context->application_manager()->ConnectToService( |
+ GURL("mojo:native_viewport_service"), |
+ &g_internal_data.Get().native_viewport); |
+ } |
+ g_internal_data.Get().native_viewport->NewNativeSurfaceAvailable(); |
+} |
+ |
void EmbedApplicationByURL(std::string url) { |
DCHECK(g_internal_data.Get().shell_task_runner->RunsTasksOnCurrentThread()); |
if (!g_internal_data.Get().window_manager.get()) { |
@@ -335,6 +347,11 @@ static void ConnectToApplication(JNIEnv* env, |
mojo::MessagePipeHandle(exposed_services_handle))))); |
} |
+static void SurfaceAvailable(JNIEnv* env, jclass clazz) { |
+ g_internal_data.Get().shell_task_runner->PostTask( |
+ FROM_HERE, base::Bind(&SendSurfaceAvailable)); |
+} |
+ |
bool RegisterShellService(JNIEnv* env) { |
return RegisterNativesImpl(env); |
} |