Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(848)

Unified Diff: content/browser/android/service_registry_android_impl.cc

Issue 2079943002: Change RenderFrame to use InterfaceRegistry et al. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@a2
Patch Set: . Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/android/service_registry_android_impl.cc
diff --git a/content/browser/android/service_registry_android_impl.cc b/content/browser/android/service_registry_android_impl.cc
index fbda8ae3ae74b95da2337770ae61838f0d25f83a..27ae25bdfc99ef7cf85a27e63b11701988491897 100644
--- a/content/browser/android/service_registry_android_impl.cc
+++ b/content/browser/android/service_registry_android_impl.cc
@@ -13,6 +13,8 @@
#include "content/public/common/service_registry.h"
#include "jni/ServiceRegistry_jni.h"
#include "mojo/public/cpp/system/message_pipe.h"
+#include "services/shell/public/cpp/interface_provider.h"
+#include "services/shell/public/cpp/interface_registry.h"
using base::android::AttachCurrentThread;
using base::android::ConvertJavaStringToUTF8;
@@ -39,8 +41,16 @@ void CreateImplAndAttach(
// static
std::unique_ptr<ServiceRegistryAndroid> ServiceRegistryAndroid::Create(
- ServiceRegistry* registry) {
- return base::WrapUnique(new ServiceRegistryAndroidImpl(registry));
+ shell::InterfaceRegistry* interface_registry,
+ shell::InterfaceProvider* remote_interfaces) {
+ return base::WrapUnique(new ServiceRegistryAndroidImpl(
+ interface_registry, remote_interfaces));
+}
+
+// static
+std::unique_ptr<ServiceRegistryAndroid> ServiceRegistryAndroid::Create(
+ ServiceRegistry* service_registry) {
+ return base::WrapUnique(new ServiceRegistryAndroidImpl(service_registry));
}
// static
@@ -54,6 +64,17 @@ ServiceRegistryAndroidImpl::~ServiceRegistryAndroidImpl() {
// Constructor and destructor call into Java.
ServiceRegistryAndroidImpl::ServiceRegistryAndroidImpl(
+ shell::InterfaceRegistry* interface_registry,
+ shell::InterfaceProvider* remote_interfaces)
+ : interface_registry_(interface_registry),
+ remote_interfaces_(remote_interfaces) {
+ JNIEnv* env = AttachCurrentThread();
+ obj_.Reset(
+ env,
+ Java_ServiceRegistry_create(env, reinterpret_cast<intptr_t>(this)).obj());
+}
+
+ServiceRegistryAndroidImpl::ServiceRegistryAndroidImpl(
ServiceRegistry* service_registry)
: service_registry_(service_registry) {
JNIEnv* env = AttachCurrentThread();
@@ -62,6 +83,7 @@ ServiceRegistryAndroidImpl::ServiceRegistryAndroidImpl(
Java_ServiceRegistry_create(env, reinterpret_cast<intptr_t>(this)).obj());
}
+
const base::android::ScopedJavaGlobalRef<jobject>&
ServiceRegistryAndroidImpl::GetObj() {
return obj_;
@@ -85,10 +107,19 @@ void ServiceRegistryAndroidImpl::AddService(
ScopedJavaGlobalRef<jobject> j_scoped_factory;
j_scoped_factory.Reset(env, j_factory);
- service_registry_->AddService(
- name, base::Bind(&CreateImplAndAttach, j_scoped_service_registry,
- j_scoped_manager, j_scoped_factory),
- nullptr);
+ if (interface_registry_) {
+ interface_registry_->AddInterface(
+ name, base::Bind(&CreateImplAndAttach, j_scoped_service_registry,
+ j_scoped_manager, j_scoped_factory),
+ nullptr);
+ } else if (service_registry_) {
+ service_registry_->AddService(
+ name, base::Bind(&CreateImplAndAttach, j_scoped_service_registry,
+ j_scoped_manager, j_scoped_factory),
+ nullptr);
+ } else {
+ NOTREACHED();
+ }
}
void ServiceRegistryAndroidImpl::RemoveService(
@@ -96,7 +127,12 @@ void ServiceRegistryAndroidImpl::RemoveService(
const JavaParamRef<jobject>& j_service_registry,
const JavaParamRef<jstring>& j_name) {
std::string name(ConvertJavaStringToUTF8(env, j_name));
- service_registry_->RemoveService(name);
+ if (interface_registry_)
+ interface_registry_->RemoveInterface(name);
+ else if (service_registry_)
+ service_registry_->RemoveService(name);
+ else
+ NOTREACHED();
}
void ServiceRegistryAndroidImpl::ConnectToRemoteService(
@@ -106,7 +142,12 @@ void ServiceRegistryAndroidImpl::ConnectToRemoteService(
jint j_handle) {
std::string name(ConvertJavaStringToUTF8(env, j_name));
mojo::ScopedMessagePipeHandle handle((mojo::MessagePipeHandle(j_handle)));
- service_registry_->ConnectToRemoteService(name, std::move(handle));
+ if (remote_interfaces_)
+ remote_interfaces_->GetInterface(name, std::move(handle));
+ else if (service_registry_)
+ service_registry_->ConnectToRemoteService(name, std::move(handle));
+ else
+ NOTREACHED();
}
} // namespace content
« no previous file with comments | « content/browser/android/service_registry_android_impl.h ('k') | content/browser/frame_host/frame_mojo_shell.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698