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

Unified Diff: content/browser/renderer_host/java/gin_java_method_invocation_helper_unittest.cc

Issue 345753003: [Android] Java Bridge with Gin: implement Java Bridge dispatcher (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use an enum for passing error codes Created 6 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/renderer_host/java/gin_java_method_invocation_helper_unittest.cc
diff --git a/content/browser/renderer_host/java/gin_java_method_invocation_helper_unittest.cc b/content/browser/renderer_host/java/gin_java_method_invocation_helper_unittest.cc
index d7634410deec5524f7d2bf6a41df8d87224c8294..067a5e1901d5c2fb24a960eb1f6cc95909a7e1b3 100644
--- a/content/browser/renderer_host/java/gin_java_method_invocation_helper_unittest.cc
+++ b/content/browser/renderer_host/java/gin_java_method_invocation_helper_unittest.cc
@@ -5,6 +5,7 @@
#include "content/browser/renderer_host/java/gin_java_method_invocation_helper.h"
#include "base/android/jni_android.h"
+#include "content/browser/renderer_host/java/jni_helper.h"
#include "content/common/android/gin_java_bridge_value.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -154,21 +155,73 @@ TEST_F(GinJavaMethodInvocationHelperTest, RetrievalOfObjectsHaveObjects) {
counter.AssertInvocationsCount(1, 6);
}
+namespace {
+
+class ObjectIsGoneObjectDelegate : public NullObjectDelegate {
+ public:
+ ObjectIsGoneObjectDelegate() :
+ get_local_ref_called_(false) {
+ // We need a Java Method object to create a valid JavaMethod instance.
+ JNIEnv* env = base::android::AttachCurrentThread();
+ jmethodID method_id =
+ GetMethodIDFromClassName(env, "java/lang/Object", "hashCode", "()I");
+ EXPECT_TRUE(method_id);
+ base::android::ScopedJavaLocalRef<jobject> method_obj(
+ env,
+ env->ToReflectedMethod(
+ base::android::GetClass(env, "java/lang/Object").obj(),
+ method_id,
+ false));
+ EXPECT_TRUE(method_obj.obj());
+ method_.reset(new JavaMethod(method_obj));
+ }
+
+ virtual ~ObjectIsGoneObjectDelegate() {}
+
+ virtual base::android::ScopedJavaLocalRef<jobject> GetLocalRef(
+ JNIEnv* env) OVERRIDE {
+ get_local_ref_called_ = true;
+ return NullObjectDelegate::GetLocalRef(env);
+ }
+
+ virtual const JavaMethod* FindMethod(const std::string& method_name,
+ size_t num_parameters) OVERRIDE {
+ return method_.get();
+ }
+
+ bool get_local_ref_called() { return get_local_ref_called_; }
+
+ const std::string& get_method_name() { return method_->name(); }
+
+ protected:
+ scoped_ptr<JavaMethod> method_;
+ bool get_local_ref_called_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ObjectIsGoneObjectDelegate);
+};
+
+} // namespace
+
TEST_F(GinJavaMethodInvocationHelperTest, HandleObjectIsGone) {
base::ListValue no_objects;
+ ObjectIsGoneObjectDelegate* object_delegate =
+ new ObjectIsGoneObjectDelegate();
scoped_refptr<GinJavaMethodInvocationHelper> helper =
new GinJavaMethodInvocationHelper(
scoped_ptr<GinJavaMethodInvocationHelper::ObjectDelegate>(
- new NullObjectDelegate()),
- "foo",
+ object_delegate),
+ object_delegate->get_method_name(),
no_objects);
NullDispatcherDelegate dispatcher;
helper->Init(&dispatcher);
- EXPECT_TRUE(helper->GetErrorMessage().empty());
+ EXPECT_FALSE(object_delegate->get_local_ref_called());
+ EXPECT_EQ(kGinJavaBridgeNoError, helper->GetInvocationError());
helper->Invoke();
+ EXPECT_TRUE(object_delegate->get_local_ref_called());
EXPECT_TRUE(helper->HoldsPrimitiveResult());
EXPECT_TRUE(helper->GetPrimitiveResult().empty());
- EXPECT_FALSE(helper->GetErrorMessage().empty());
+ EXPECT_EQ(kGinJavaBridgeObjectIsGone, helper->GetInvocationError());
}
namespace {
@@ -215,12 +268,12 @@ TEST_F(GinJavaMethodInvocationHelperTest, HandleMethodNotFound) {
NullDispatcherDelegate dispatcher;
helper->Init(&dispatcher);
EXPECT_FALSE(object_delegate->find_method_called());
- EXPECT_TRUE(helper->GetErrorMessage().empty());
+ EXPECT_EQ(kGinJavaBridgeNoError, helper->GetInvocationError());
helper->Invoke();
EXPECT_TRUE(object_delegate->find_method_called());
EXPECT_TRUE(helper->HoldsPrimitiveResult());
EXPECT_TRUE(helper->GetPrimitiveResult().empty());
- EXPECT_FALSE(helper->GetErrorMessage().empty());
+ EXPECT_EQ(kGinJavaBridgeMethodNotFound, helper->GetInvocationError());
}
namespace {
@@ -273,13 +326,14 @@ TEST_F(GinJavaMethodInvocationHelperTest, HandleGetClassInvocation) {
helper->Init(&dispatcher);
EXPECT_FALSE(object_delegate->find_method_called());
EXPECT_FALSE(object_delegate->get_class_called());
- EXPECT_TRUE(helper->GetErrorMessage().empty());
+ EXPECT_EQ(kGinJavaBridgeNoError, helper->GetInvocationError());
helper->Invoke();
EXPECT_TRUE(object_delegate->find_method_called());
EXPECT_TRUE(object_delegate->get_class_called());
EXPECT_TRUE(helper->HoldsPrimitiveResult());
EXPECT_TRUE(helper->GetPrimitiveResult().empty());
- EXPECT_FALSE(helper->GetErrorMessage().empty());
+ EXPECT_EQ(kGinJavaBridgeAccessToObjectGetClassIsBlocked,
+ helper->GetInvocationError());
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698