| OLD | NEW | 
|    1 // Copyright 2016 The Chromium Authors. All rights reserved. |    1 // Copyright 2016 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #include "content/browser/android/service_registry_android_impl.h" |    5 #include "content/browser/android/service_registry_android_impl.h" | 
|    6  |    6  | 
|    7 #include <utility> |    7 #include <utility> | 
|    8  |    8  | 
|    9 #include "base/android/jni_android.h" |    9 #include "base/android/jni_android.h" | 
|   10 #include "base/android/jni_string.h" |   10 #include "base/android/jni_string.h" | 
|   11 #include "base/callback.h" |   11 #include "base/callback.h" | 
|   12 #include "base/memory/ptr_util.h" |   12 #include "base/memory/ptr_util.h" | 
|   13 #include "content/public/common/service_registry.h" |  | 
|   14 #include "jni/ServiceRegistry_jni.h" |   13 #include "jni/ServiceRegistry_jni.h" | 
|   15 #include "mojo/public/cpp/system/message_pipe.h" |   14 #include "mojo/public/cpp/system/message_pipe.h" | 
|   16 #include "services/shell/public/cpp/interface_provider.h" |   15 #include "services/shell/public/cpp/interface_provider.h" | 
|   17 #include "services/shell/public/cpp/interface_registry.h" |   16 #include "services/shell/public/cpp/interface_registry.h" | 
|   18  |   17  | 
|   19 using base::android::AttachCurrentThread; |   18 using base::android::AttachCurrentThread; | 
|   20 using base::android::ConvertJavaStringToUTF8; |   19 using base::android::ConvertJavaStringToUTF8; | 
|   21 using base::android::ScopedJavaGlobalRef; |   20 using base::android::ScopedJavaGlobalRef; | 
|   22  |   21  | 
|   23 namespace content { |   22 namespace content { | 
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   84  |   83  | 
|   85   ScopedJavaGlobalRef<jobject> j_scoped_service_registry; |   84   ScopedJavaGlobalRef<jobject> j_scoped_service_registry; | 
|   86   j_scoped_service_registry.Reset(env, j_service_registry); |   85   j_scoped_service_registry.Reset(env, j_service_registry); | 
|   87  |   86  | 
|   88   ScopedJavaGlobalRef<jobject> j_scoped_manager; |   87   ScopedJavaGlobalRef<jobject> j_scoped_manager; | 
|   89   j_scoped_manager.Reset(env, j_manager); |   88   j_scoped_manager.Reset(env, j_manager); | 
|   90  |   89  | 
|   91   ScopedJavaGlobalRef<jobject> j_scoped_factory; |   90   ScopedJavaGlobalRef<jobject> j_scoped_factory; | 
|   92   j_scoped_factory.Reset(env, j_factory); |   91   j_scoped_factory.Reset(env, j_factory); | 
|   93  |   92  | 
|   94   if (interface_registry_) { |   93   interface_registry_->AddInterface( | 
|   95     interface_registry_->AddInterface( |   94       name, base::Bind(&CreateImplAndAttach, j_scoped_service_registry, | 
|   96         name, base::Bind(&CreateImplAndAttach, j_scoped_service_registry, |   95                         j_scoped_manager, j_scoped_factory), | 
|   97                          j_scoped_manager, j_scoped_factory), |   96       nullptr); | 
|   98         nullptr); |  | 
|   99   } else if (service_registry_) { |  | 
|  100     service_registry_->AddService( |  | 
|  101         name, base::Bind(&CreateImplAndAttach, j_scoped_service_registry, |  | 
|  102                          j_scoped_manager, j_scoped_factory), |  | 
|  103         nullptr); |  | 
|  104   } else { |  | 
|  105     NOTREACHED(); |  | 
|  106   } |  | 
|  107 } |   97 } | 
|  108  |   98  | 
|  109 void ServiceRegistryAndroidImpl::RemoveService( |   99 void ServiceRegistryAndroidImpl::RemoveService( | 
|  110     JNIEnv* env, |  100     JNIEnv* env, | 
|  111     const JavaParamRef<jobject>& j_service_registry, |  101     const JavaParamRef<jobject>& j_service_registry, | 
|  112     const JavaParamRef<jstring>& j_name) { |  102     const JavaParamRef<jstring>& j_name) { | 
|  113   std::string name(ConvertJavaStringToUTF8(env, j_name)); |  103   std::string name(ConvertJavaStringToUTF8(env, j_name)); | 
|  114   if (interface_registry_) |  104   interface_registry_->RemoveInterface(name); | 
|  115     interface_registry_->RemoveInterface(name); |  | 
|  116   else if (service_registry_) |  | 
|  117     service_registry_->RemoveService(name); |  | 
|  118   else |  | 
|  119     NOTREACHED(); |  | 
|  120 } |  105 } | 
|  121  |  106  | 
|  122 void ServiceRegistryAndroidImpl::ConnectToRemoteService( |  107 void ServiceRegistryAndroidImpl::ConnectToRemoteService( | 
|  123     JNIEnv* env, |  108     JNIEnv* env, | 
|  124     const JavaParamRef<jobject>& j_service_registry, |  109     const JavaParamRef<jobject>& j_service_registry, | 
|  125     const JavaParamRef<jstring>& j_name, |  110     const JavaParamRef<jstring>& j_name, | 
|  126     jint j_handle) { |  111     jint j_handle) { | 
|  127   std::string name(ConvertJavaStringToUTF8(env, j_name)); |  112   std::string name(ConvertJavaStringToUTF8(env, j_name)); | 
|  128   mojo::ScopedMessagePipeHandle handle((mojo::MessagePipeHandle(j_handle))); |  113   mojo::ScopedMessagePipeHandle handle((mojo::MessagePipeHandle(j_handle))); | 
|  129   if (remote_interfaces_) |  114   remote_interfaces_->GetInterface(name, std::move(handle)); | 
|  130     remote_interfaces_->GetInterface(name, std::move(handle)); |  | 
|  131   else if (service_registry_) |  | 
|  132     service_registry_->ConnectToRemoteService(name, std::move(handle)); |  | 
|  133   else |  | 
|  134     NOTREACHED(); |  | 
|  135 } |  115 } | 
|  136  |  116  | 
|  137 }  // namespace content |  117 }  // namespace content | 
| OLD | NEW |