| Index: services/shape_detection/shape_detection_service.cc
|
| diff --git a/services/shape_detection/shape_detection_service.cc b/services/shape_detection/shape_detection_service.cc
|
| index 7f9f83f07762905c4338715c52bf4b2225f4096d..57a48207f2eabc6060fa60196daae973836dc6a5 100644
|
| --- a/services/shape_detection/shape_detection_service.cc
|
| +++ b/services/shape_detection/shape_detection_service.cc
|
| @@ -10,6 +10,12 @@
|
| #include "services/shape_detection/face_detection_provider_impl.h"
|
| #include "services/shape_detection/text_detection_impl.h"
|
|
|
| +#if defined(OS_ANDROID)
|
| +#include "base/android/context_utils.h"
|
| +#include "base/android/jni_android.h"
|
| +#include "jni/InterfaceRegistrar_jni.h"
|
| +#endif
|
| +
|
| namespace shape_detection {
|
|
|
| std::unique_ptr<service_manager::Service> ShapeDetectionService::Create() {
|
| @@ -24,9 +30,18 @@ void ShapeDetectionService::OnStart() {
|
| ref_factory_.reset(new service_manager::ServiceContextRefFactory(
|
| base::Bind(&service_manager::ServiceContext::RequestQuit,
|
| base::Unretained(context()))));
|
| +
|
| +#if defined(OS_ANDROID)
|
| + registry_.AddInterface(
|
| + GetJavaInterfaces()->CreateInterfaceFactory<mojom::BarcodeDetection>());
|
| + registry_.AddInterface(
|
| + GetJavaInterfaces()->CreateInterfaceFactory<mojom::TextDetection>());
|
| +#else
|
| registry_.AddInterface(base::Bind(&BarcodeDetectionImpl::Create));
|
| - registry_.AddInterface(base::Bind(&FaceDetectionProviderImpl::Create));
|
| registry_.AddInterface(base::Bind(&TextDetectionImpl::Create));
|
| +#endif
|
| +
|
| + registry_.AddInterface(base::Bind(&FaceDetectionProviderImpl::Create));
|
| }
|
|
|
| void ShapeDetectionService::OnBindInterface(
|
| @@ -37,4 +52,21 @@ void ShapeDetectionService::OnBindInterface(
|
| std::move(interface_pipe));
|
| }
|
|
|
| +#if defined(OS_ANDROID)
|
| +service_manager::InterfaceProvider* ShapeDetectionService::GetJavaInterfaces() {
|
| + if (!java_interface_provider_initialized_) {
|
| + service_manager::mojom::InterfaceProviderPtr provider;
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + Java_InterfaceRegistrar_createInterfaceRegistryForContext(
|
| + env, mojo::MakeRequest(&provider).PassMessagePipe().release().value(),
|
| + base::android::GetApplicationContext());
|
| + java_interface_provider_.Bind(std::move(provider));
|
| +
|
| + java_interface_provider_initialized_ = true;
|
| + }
|
| +
|
| + return &java_interface_provider_;
|
| +}
|
| +#endif
|
| +
|
| } // namespace shape_detection
|
|
|