|  | // Copyright 2015 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 "sky/shell/android/platform_service_provider_android.h" | 
|  |  | 
|  | #include "base/android/jni_android.h" | 
|  | #include "base/bind.h" | 
|  | #include "base/trace_event/trace_event.h" | 
|  | #include "jni/PlatformServiceProvider_jni.h" | 
|  | #include "mojo/public/cpp/bindings/interface_request.h" | 
|  | #include "sky/shell/service_provider.h" | 
|  |  | 
|  | namespace sky { | 
|  | namespace shell { | 
|  | namespace { | 
|  |  | 
|  | void CreatePlatformServiceProvider( | 
|  | mojo::InterfaceRequest<mojo::ServiceProvider> request) { | 
|  | Java_PlatformServiceProvider_create( | 
|  | base::android::AttachCurrentThread(), | 
|  | base::android::GetApplicationContext(), | 
|  | request.PassMessagePipe().release().value()); | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  | bool RegisterPlatformServiceProvider(JNIEnv* env) { | 
|  | return RegisterNativesImpl(env); | 
|  | } | 
|  |  | 
|  | mojo::ServiceProviderPtr CreateServiceProvider( | 
|  | ServiceProviderContext* context) { | 
|  | mojo::MessagePipe pipe; | 
|  | context->platform_task_runner->PostTask( | 
|  | FROM_HERE, | 
|  | base::Bind(CreatePlatformServiceProvider, | 
|  | base::Passed(mojo::MakeRequest<mojo::ServiceProvider>( | 
|  | pipe.handle1.Pass())))); | 
|  | return mojo::MakeProxy( | 
|  | mojo::InterfacePtrInfo<mojo::ServiceProvider>(pipe.handle0.Pass(), 0u)); | 
|  | } | 
|  |  | 
|  | }  // namespace shell | 
|  | }  // namespace sky |