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

Side by Side Diff: content/browser/android/service_registry_android_impl.cc

Issue 1831173002: Scaffolding for Android implementation of PaymentRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo
Patch Set: Fix shell_mojo_test_utils_android.cc Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/mojo/service_registry_android.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 "content/common/mojo/service_registry_impl.h" 12 #include "base/memory/ptr_util.h"
13 #include "content/public/common/service_registry.h"
13 #include "jni/ServiceRegistry_jni.h" 14 #include "jni/ServiceRegistry_jni.h"
15 #include "mojo/public/cpp/system/message_pipe.h"
14 16
15 using base::android::AttachCurrentThread; 17 using base::android::AttachCurrentThread;
16 using base::android::ConvertJavaStringToUTF8; 18 using base::android::ConvertJavaStringToUTF8;
17 using base::android::ScopedJavaGlobalRef; 19 using base::android::ScopedJavaGlobalRef;
18 20
19 namespace content { 21 namespace content {
20 22
21 namespace { 23 namespace {
22 24
23 // Callback passed to the wrapped ServiceRegistry upon AddService(). The 25 // Callback passed to the wrapped ServiceRegistry upon AddService(). The
24 // ServiceRegistry will call it to create a registered Java service 26 // ServiceRegistry will call it to create a registered Java service
25 void CreateImplAndAttach( 27 void CreateImplAndAttach(
26 const ScopedJavaGlobalRef<jobject>& j_scoped_service_registry, 28 const ScopedJavaGlobalRef<jobject>& j_scoped_service_registry,
27 const ScopedJavaGlobalRef<jobject>& j_scoped_manager, 29 const ScopedJavaGlobalRef<jobject>& j_scoped_manager,
28 const ScopedJavaGlobalRef<jobject>& j_scoped_factory, 30 const ScopedJavaGlobalRef<jobject>& j_scoped_factory,
29 mojo::ScopedMessagePipeHandle handle) { 31 mojo::ScopedMessagePipeHandle handle) {
30 JNIEnv* env = AttachCurrentThread(); 32 JNIEnv* env = AttachCurrentThread();
31 Java_ServiceRegistry_createImplAndAttach(env, 33 Java_ServiceRegistry_createImplAndAttach(
32 j_scoped_service_registry.obj(), 34 env, j_scoped_service_registry.obj(), handle.release().value(),
33 handle.release().value(), 35 j_scoped_manager.obj(), j_scoped_factory.obj());
34 j_scoped_manager.obj(),
35 j_scoped_factory.obj());
36 } 36 }
37 37
38 } // namespace 38 } // namespace
39 39
40 // statc
ncarter (slow) 2016/04/06 18:17:37 typo
please use gerrit instead 2016/04/06 18:30:12 Done.
41 std::unique_ptr<ServiceRegistryAndroid> ServiceRegistryAndroid::Create(
42 ServiceRegistry* registry) {
43 return base::WrapUnique(new ServiceRegistryAndroidImpl(registry));
44 }
45
40 // static 46 // static
41 bool ServiceRegistryAndroid::Register(JNIEnv* env) { 47 bool ServiceRegistryAndroidImpl::Register(JNIEnv* env) {
42 return RegisterNativesImpl(env); 48 return RegisterNativesImpl(env);
43 } 49 }
44 50
51 ServiceRegistryAndroidImpl::~ServiceRegistryAndroidImpl() {
52 Java_ServiceRegistry_destroy(AttachCurrentThread(), obj_.obj());
53 }
54
45 // Constructor and destructor call into Java. 55 // Constructor and destructor call into Java.
46 ServiceRegistryAndroid::ServiceRegistryAndroid( 56 ServiceRegistryAndroidImpl::ServiceRegistryAndroidImpl(
47 ServiceRegistryImpl* service_registry) 57 ServiceRegistry* service_registry)
48 : service_registry_(service_registry) { 58 : service_registry_(service_registry) {
49 JNIEnv* env = AttachCurrentThread(); 59 JNIEnv* env = AttachCurrentThread();
50 obj_.Reset( 60 obj_.Reset(
51 env, 61 env,
52 Java_ServiceRegistry_create(env, reinterpret_cast<intptr_t>(this)).obj()); 62 Java_ServiceRegistry_create(env, reinterpret_cast<intptr_t>(this)).obj());
53 } 63 }
54 64
55 ServiceRegistryAndroid::~ServiceRegistryAndroid() { 65 const base::android::ScopedJavaGlobalRef<jobject>&
56 Java_ServiceRegistry_destroy(AttachCurrentThread(), obj_.obj()); 66 ServiceRegistryAndroidImpl::GetObj() {
67 return obj_;
57 } 68 }
58 69
59 // Methods called from Java. 70 // Methods called from Java.
60 void ServiceRegistryAndroid::AddService( 71 void ServiceRegistryAndroidImpl::AddService(
61 JNIEnv* env, 72 JNIEnv* env,
62 const JavaParamRef<jobject>& j_service_registry, 73 const JavaParamRef<jobject>& j_service_registry,
63 const JavaParamRef<jobject>& j_manager, 74 const JavaParamRef<jobject>& j_manager,
64 const JavaParamRef<jobject>& j_factory, 75 const JavaParamRef<jobject>& j_factory,
65 const JavaParamRef<jstring>& j_name) { 76 const JavaParamRef<jstring>& j_name) {
66 std::string name(ConvertJavaStringToUTF8(env, j_name)); 77 std::string name(ConvertJavaStringToUTF8(env, j_name));
67 78
68 ScopedJavaGlobalRef<jobject> j_scoped_service_registry; 79 ScopedJavaGlobalRef<jobject> j_scoped_service_registry;
69 j_scoped_service_registry.Reset(env, j_service_registry); 80 j_scoped_service_registry.Reset(env, j_service_registry);
70 81
71 ScopedJavaGlobalRef<jobject> j_scoped_manager; 82 ScopedJavaGlobalRef<jobject> j_scoped_manager;
72 j_scoped_manager.Reset(env, j_manager); 83 j_scoped_manager.Reset(env, j_manager);
73 84
74 ScopedJavaGlobalRef<jobject> j_scoped_factory; 85 ScopedJavaGlobalRef<jobject> j_scoped_factory;
75 j_scoped_factory.Reset(env, j_factory); 86 j_scoped_factory.Reset(env, j_factory);
76 87
77 service_registry_->AddService(name, 88 service_registry_->AddService(
78 base::Bind(&CreateImplAndAttach, 89 name, base::Bind(&CreateImplAndAttach, j_scoped_service_registry,
79 j_scoped_service_registry, 90 j_scoped_manager, j_scoped_factory));
80 j_scoped_manager,
81 j_scoped_factory));
82 } 91 }
83 92
84 void ServiceRegistryAndroid::RemoveService( 93 void ServiceRegistryAndroidImpl::RemoveService(
85 JNIEnv* env, 94 JNIEnv* env,
86 const JavaParamRef<jobject>& j_service_registry, 95 const JavaParamRef<jobject>& j_service_registry,
87 const JavaParamRef<jstring>& j_name) { 96 const JavaParamRef<jstring>& j_name) {
88 std::string name(ConvertJavaStringToUTF8(env, j_name)); 97 std::string name(ConvertJavaStringToUTF8(env, j_name));
89 service_registry_->RemoveService(name); 98 service_registry_->RemoveService(name);
90 } 99 }
91 100
92 void ServiceRegistryAndroid::ConnectToRemoteService( 101 void ServiceRegistryAndroidImpl::ConnectToRemoteService(
93 JNIEnv* env, 102 JNIEnv* env,
94 const JavaParamRef<jobject>& j_service_registry, 103 const JavaParamRef<jobject>& j_service_registry,
95 const JavaParamRef<jstring>& j_name, 104 const JavaParamRef<jstring>& j_name,
96 jint j_handle) { 105 jint j_handle) {
97 std::string name(ConvertJavaStringToUTF8(env, j_name)); 106 std::string name(ConvertJavaStringToUTF8(env, j_name));
98 mojo::ScopedMessagePipeHandle handle((mojo::MessagePipeHandle(j_handle))); 107 mojo::ScopedMessagePipeHandle handle((mojo::MessagePipeHandle(j_handle)));
99 service_registry_->ConnectToRemoteService(name, std::move(handle)); 108 service_registry_->ConnectToRemoteService(name, std::move(handle));
100 } 109 }
101 110
102 } // namespace content 111 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698