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

Side by Side Diff: android_webview/native/callback_jni_bridge_unittest.cc

Issue 12313042: [android_webview] Add a generic callback JNI bridge. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 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 "android_webview/native/callback_jni_bridge.h"
6 #include "base/android/jni_android.h"
7 #include "base/android/jni_string.h"
8 #include "base/android/scoped_java_ref.h"
9 #include "base/bind.h"
10 #include "base/callback.h"
11 #include "jni/CallbackJNIBridgeUnittest_jni.h"
12
13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 using android_webview::CallbackJNIBridge;
17 using base::Callback;
18 using base::android::AttachCurrentThread;
19 using base::android::ScopedJavaLocalRef;
20 using testing::NotNull;
21 using testing::Test;
22 using testing::_;
23
24 class CallbackJNIBridgeTest : public Test {
25 public:
26 CallbackJNIBridgeTest() {
27 }
28 protected:
29 virtual void SetUp() {
30 env_ = AttachCurrentThread();
31 ASSERT_THAT(env_, NotNull());
32 ASSERT_TRUE(android_webview::RegisterCallbackJNIBridge(env_));
33 ASSERT_TRUE(RegisterNativesImpl(env_));
34 }
35
36 JNIEnv* env_;
37 };
38
39 TEST_F(CallbackJNIBridgeTest, FromJavaCallbackInt) {
40 const int expected_value = 42;
41 ScopedJavaLocalRef<jobject> jfixture =
42 Java_FromJavaCallbackIntFixture_create(env_);
43 ScopedJavaLocalRef<jobject> jvalue_callback =
44 Java_FromJavaCallbackIntFixture_createCallback(env_, jfixture.obj());
45
46 Callback<void(int)> callback =
47 CallbackJNIBridge::FromJavaCallbackInt(env_, jvalue_callback);
48 callback.Run(expected_value);
49
50 EXPECT_EQ(expected_value,
51 Java_FromJavaCallbackIntFixture_getCallbackValue(
52 env_, jfixture.obj()));
53 }
54
55 template<typename T>
56 class TestValueCallbackImpl {
57 public:
58 T getValue() const { return value_; }
59 void setValue(T value) { value_ = value; }
60 private:
61 T value_;
62 };
63
64 TEST_F(CallbackJNIBridgeTest, ToJavaCallbackInt) {
65 const int expected_value = 142;
66 TestValueCallbackImpl<int> callback_target;
67 callback_target.setValue(0);
68
69 Callback<void(int)> test_callback =
70 base::Bind(&TestValueCallbackImpl<int>::setValue,
71 base::Unretained(&callback_target));
72
73 ScopedJavaLocalRef<jobject> jvalue_callback =
74 CallbackJNIBridge::ToJavaCallbackInt(env_, test_callback);
75
76 Java_CallbackJNIBridgeUnittest_invokeValueCallbackInt(
77 env_, jvalue_callback.obj(), expected_value);
78
79 EXPECT_EQ(expected_value, callback_target.getValue());
80 }
81
82 ScopedJavaLocalRef<jobject> UTF8ToJavaStringConverter(
83 const std::string& value) {
84 JNIEnv* env = AttachCurrentThread();
85 return ScopedJavaLocalRef<jobject>(
86 env, base::android::ConvertUTF8ToJavaString(env, value).obj());
87 }
88
89 TEST_F(CallbackJNIBridgeTest, FromJavaCallbackString) {
90 ScopedJavaLocalRef<jobject> jfixture =
91 Java_FromJavaCallbackStringFixture_create(env_);
92 ScopedJavaLocalRef<jobject> jvalue_callback =
93 Java_FromJavaCallbackStringFixture_createCallback(env_, jfixture.obj());
94
95 Callback<void(const std::string&)> callback =
96 CallbackJNIBridge::FromJavaCallback(
97 env_, jvalue_callback, base::Bind(&UTF8ToJavaStringConverter));
98 callback.Run("test string");
99
100 EXPECT_TRUE(Java_FromJavaCallbackStringFixture_checkCallbackValue(
101 env_, jfixture.obj()));
102 }
103
104 /*
105 std::string JavaStringToUTF8Converter(
106 const ScopedJavaLocalRef<jobject>& value) {
107 JNIEnv* env = AttachCurrentThread();
108 return base::android::ConvertJavaString(
109 env, reinterpret_cast<jstring>(value.obj()));
110 }
111
112 TEST_F(CallbackJNIBridgeTest, ToJavaCallbackString) {
113 const int expected_value = 142;
114 TestValueCallbackImpl<int> callback_target;
115 callback_target.setValue(0);
116
117 Callback<void(int)> test_callback =
118 base::Bind(&TestValueCallbackImpl<int>::setValue,
119 base::Unretained(&callback_target));
120
121 ScopedJavaLocalRef<jobject> jvalue_callback =
122 CallbackJNIBridge::ToJavaCallbackInt(env_, test_callback);
123
124 Java_CallbackJNIBridgeUnittest_invokeValueCallbackInt(
125 env_, jvalue_callback.obj(), expected_value);
126
127 EXPECT_EQ(expected_value, callback_target.getValue());
128 } */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698