diff options
author | Selim Gurun <sgurun@google.com> | 2012-09-04 16:31:02 -0700 |
---|---|---|
committer | Selim Gurun <sgurun@google.com> | 2012-09-10 16:39:35 -0700 |
commit | f2d8c5bed31609d7d6e3ae77f33e90ea7f888eb3 (patch) | |
tree | f0eaf8dc0c087e6961ef36fc9250bdda15ee17f5 /Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp | |
parent | 61df0147f508e20bd22fab568b7c8b3c405cfad5 (diff) | |
download | external_webkit-f2d8c5bed31609d7d6e3ae77f33e90ea7f888eb3.zip external_webkit-f2d8c5bed31609d7d6e3ae77f33e90ea7f888eb3.tar.gz external_webkit-f2d8c5bed31609d7d6e3ae77f33e90ea7f888eb3.tar.bz2 |
Control access to inherited methods of jsinterface objects
Bug: 7073422
Use a flag and annotation for allowing access to inherited methods of
jsinterface objects. When flag is false, no annotation is needed. When
flag is true, annotation is needed for allowing access to inherited methods.
Change-Id: I610119dc5410d8df1962fa9dbea09866f81d374c
Diffstat (limited to 'Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp')
-rw-r--r-- | Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp b/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp index e7b854d..c97a67f 100644 --- a/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp +++ b/Source/WebCore/bridge/jni/v8/JavaInstanceJobjectV8.cpp @@ -41,8 +41,15 @@ using namespace JSC::Bindings; +#if PLATFORM(ANDROID) +JavaInstanceJobject::JavaInstanceJobject(jobject instance, bool requireAnnotation) +#else JavaInstanceJobject::JavaInstanceJobject(jobject instance) +#endif : m_instance(new JobjectWrapper(instance)) +#if PLATFORM(ANDROID) + , m_requireAnnotation(requireAnnotation) +#endif { } @@ -61,7 +68,11 @@ void JavaInstanceJobject::end() JavaClass* JavaInstanceJobject::getClass() const { if (!m_class) +#if PLATFORM(ANDROID) + m_class = adoptPtr(new JavaClassJobject(javaInstance(), m_requireAnnotation)); +#else m_class = adoptPtr(new JavaClassJobject(javaInstance())); +#endif return m_class.get(); } @@ -86,7 +97,7 @@ JavaValue JavaInstanceJobject::invokeMethod(const JavaMethod* method, JavaValue* return JavaValue(); } - return jvalueToJavaValue(result, method->returnType()); + return jvalueToJavaValue(result, method->returnType(), m_requireAnnotation); // END ANDROID } @@ -113,7 +124,11 @@ JavaValue JavaInstanceJobject::getField(const JavaField* field) appendClassName(signature, field->typeClassName()); signature.append(';'); } +#if PLATFORM(ANDROID) + return jvalueToJavaValue(getJNIField(javaInstance(), field->type(), field->name().utf8().data(), signature.toString().utf8().data()), field->type(), m_requireAnnotation); +#else return jvalueToJavaValue(getJNIField(javaInstance(), field->type(), field->name().utf8().data(), signature.toString().utf8().data()), field->type()); +#endif } #endif // ENABLE(JAVA_BRIDGE) |