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

Side by Side Diff: content/browser/mojo/service_registry_android.cc

Issue 1831173002: Scaffolding for Android implementation of PaymentRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mojo
Patch Set: thestig@ & esprehn@ comments 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
« no previous file with comments | « content/browser/mojo/service_registry_android.h ('k') | content/content_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "content/browser/mojo/service_registry_android.h"
6
7 #include <utility>
8
9 #include "base/android/jni_android.h"
10 #include "base/android/jni_string.h"
11 #include "base/callback.h"
12 #include "content/common/mojo/service_registry_impl.h"
13 #include "jni/ServiceRegistry_jni.h"
14
15 using base::android::AttachCurrentThread;
16 using base::android::ConvertJavaStringToUTF8;
17 using base::android::ScopedJavaGlobalRef;
18
19 namespace content {
20
21 namespace {
22
23 // Callback passed to the wrapped ServiceRegistry upon AddService(). The
24 // ServiceRegistry will call it to create a registered Java service
25 void CreateImplAndAttach(
26 const ScopedJavaGlobalRef<jobject>& j_scoped_service_registry,
27 const ScopedJavaGlobalRef<jobject>& j_scoped_manager,
28 const ScopedJavaGlobalRef<jobject>& j_scoped_factory,
29 mojo::ScopedMessagePipeHandle handle) {
30 JNIEnv* env = AttachCurrentThread();
31 Java_ServiceRegistry_createImplAndAttach(env,
32 j_scoped_service_registry.obj(),
33 handle.release().value(),
34 j_scoped_manager.obj(),
35 j_scoped_factory.obj());
36 }
37
38 } // namespace
39
40 // static
41 bool ServiceRegistryAndroid::Register(JNIEnv* env) {
42 return RegisterNativesImpl(env);
43 }
44
45 // Constructor and destructor call into Java.
46 ServiceRegistryAndroid::ServiceRegistryAndroid(
47 ServiceRegistryImpl* service_registry)
48 : service_registry_(service_registry) {
49 JNIEnv* env = AttachCurrentThread();
50 obj_.Reset(
51 env,
52 Java_ServiceRegistry_create(env, reinterpret_cast<intptr_t>(this)).obj());
53 }
54
55 ServiceRegistryAndroid::~ServiceRegistryAndroid() {
56 Java_ServiceRegistry_destroy(AttachCurrentThread(), obj_.obj());
57 }
58
59 // Methods called from Java.
60 void ServiceRegistryAndroid::AddService(
61 JNIEnv* env,
62 const JavaParamRef<jobject>& j_service_registry,
63 const JavaParamRef<jobject>& j_manager,
64 const JavaParamRef<jobject>& j_factory,
65 const JavaParamRef<jstring>& j_name) {
66 std::string name(ConvertJavaStringToUTF8(env, j_name));
67
68 ScopedJavaGlobalRef<jobject> j_scoped_service_registry;
69 j_scoped_service_registry.Reset(env, j_service_registry);
70
71 ScopedJavaGlobalRef<jobject> j_scoped_manager;
72 j_scoped_manager.Reset(env, j_manager);
73
74 ScopedJavaGlobalRef<jobject> j_scoped_factory;
75 j_scoped_factory.Reset(env, j_factory);
76
77 service_registry_->AddService(name,
78 base::Bind(&CreateImplAndAttach,
79 j_scoped_service_registry,
80 j_scoped_manager,
81 j_scoped_factory));
82 }
83
84 void ServiceRegistryAndroid::RemoveService(
85 JNIEnv* env,
86 const JavaParamRef<jobject>& j_service_registry,
87 const JavaParamRef<jstring>& j_name) {
88 std::string name(ConvertJavaStringToUTF8(env, j_name));
89 service_registry_->RemoveService(name);
90 }
91
92 void ServiceRegistryAndroid::ConnectToRemoteService(
93 JNIEnv* env,
94 const JavaParamRef<jobject>& j_service_registry,
95 const JavaParamRef<jstring>& j_name,
96 jint j_handle) {
97 std::string name(ConvertJavaStringToUTF8(env, j_name));
98 mojo::ScopedMessagePipeHandle handle((mojo::MessagePipeHandle(j_handle)));
99 service_registry_->ConnectToRemoteService(name, std::move(handle));
100 }
101
102 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/mojo/service_registry_android.h ('k') | content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698