[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
rjw
rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:16:22 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 5761adc0aa43cd47df80695a9dcc635ce6076b68
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Dec 5 01:05:49 2003 +0000
JavaScriptCore:
LiveConnect: Moved defaultValue into concrete implementation because
more intelligent conversion can be perform with knowledge
of the class of the original instance.
Reviewed by Chris.
* bindings/jni/jni_class.cpp:
(JavaClass::isNumberClass):
(JavaClass::isBooleanClass):
(JavaClass::isStringClass):
* bindings/jni/jni_class.h:
* bindings/jni/jni_instance.cpp:
(JavaInstance::defaultValue):
(JavaInstance::valueOf):
* bindings/jni/jni_instance.h:
(Bindings::JavaInstance::javaInstance):
* bindings/runtime.h:
* bindings/runtime_object.cpp:
(RuntimeObjectImp::defaultValue):
Tests:
Fixed incorrect log of boolean type.
Reviewed by Chris.
* LiveConnect/Blink/test.html:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@5701 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 756f731..67b6c9d 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,5 +1,27 @@
2003-12-04 Richard Williamson <rjw at apple.com>
+ LiveConnect: Moved defaultValue into concrete implementation because
+ more intelligent conversion can be perform with knowledge
+ of the class of the original instance.
+
+ Reviewed by Chris.
+
+ * bindings/jni/jni_class.cpp:
+ (JavaClass::isNumberClass):
+ (JavaClass::isBooleanClass):
+ (JavaClass::isStringClass):
+ * bindings/jni/jni_class.h:
+ * bindings/jni/jni_instance.cpp:
+ (JavaInstance::defaultValue):
+ (JavaInstance::valueOf):
+ * bindings/jni/jni_instance.h:
+ (Bindings::JavaInstance::javaInstance):
+ * bindings/runtime.h:
+ * bindings/runtime_object.cpp:
+ (RuntimeObjectImp::defaultValue):
+
+2003-12-04 Richard Williamson <rjw at apple.com>
+
LiveConnect: Added support for setting the value of Java
fields.
diff --git a/JavaScriptCore/bindings/jni/jni_class.cpp b/JavaScriptCore/bindings/jni/jni_class.cpp
index e0a9f17..34446c2 100644
--- a/JavaScriptCore/bindings/jni/jni_class.cpp
+++ b/JavaScriptCore/bindings/jni/jni_class.cpp
@@ -159,3 +159,22 @@ Field *JavaClass::fieldNamed(const char *name) const
return aField;
};
+bool JavaClass::isNumberClass() const
+{
+ return ((strcmp(_name, "java.lang.Byte") == 0 ||
+ strcmp(_name, "java.lang.Short") == 0 ||
+ strcmp(_name, "java.lang.Integer") == 0 ||
+ strcmp(_name, "java.lang.Long") == 0 ||
+ strcmp(_name, "java.lang.Float") == 0 ||
+ strcmp(_name, "java.lang.Double") == 0) );
+}
+
+bool JavaClass::isBooleanClass() const
+{
+ return strcmp(_name, "java.lang.Boolean") == 0;
+}
+
+bool JavaClass::isStringClass() const
+{
+ return strcmp(_name, "java.lang.String") == 0;
+}
diff --git a/JavaScriptCore/bindings/jni/jni_class.h b/JavaScriptCore/bindings/jni/jni_class.h
index 1932ad5..1c5147f 100644
--- a/JavaScriptCore/bindings/jni/jni_class.h
+++ b/JavaScriptCore/bindings/jni/jni_class.h
@@ -110,6 +110,9 @@ public:
virtual long numConstructors() const { return _numConstructors; };
void setClassName(const char *n);
+ bool isNumberClass() const;
+ bool isBooleanClass() const;
+ bool isStringClass() const;
private:
const char *_name;
diff --git a/JavaScriptCore/bindings/jni/jni_instance.cpp b/JavaScriptCore/bindings/jni/jni_instance.cpp
index 1b20f39..8d9d12c 100644
--- a/JavaScriptCore/bindings/jni/jni_instance.cpp
+++ b/JavaScriptCore/bindings/jni/jni_instance.cpp
@@ -172,6 +172,38 @@ Value JavaInstance::invokeMethod (KJS::ExecState *exec, const Method *method, co
}
+KJS::Value JavaInstance::defaultValue (KJS::Type hint) const
+{
+ if (hint == StringType) {
+ return stringValue();
+ }
+ else if (hint == NumberType) {
+ return numberValue();
+ }
+ else if (hint == BooleanType) {
+ return booleanValue();
+ }
+ else if (hint == UnspecifiedType) {
+ JavaClass *aClass = static_cast<JavaClass*>(getClass());
+ if (aClass->isStringClass()) {
+ return stringValue();
+ }
+ else if (aClass->isNumberClass()) {
+ return numberValue();
+ }
+ else if (aClass->isBooleanClass()) {
+ return booleanValue();
+ }
+ }
+
+ return valueOf();
+}
+
+KJS::Value JavaInstance::valueOf() const
+{
+ return stringValue();
+};
+
JObjectWrapper::JObjectWrapper(jobject instance)
{
_ref = 1;
diff --git a/JavaScriptCore/bindings/jni/jni_instance.h b/JavaScriptCore/bindings/jni/jni_instance.h
index b63659e..408c08e 100644
--- a/JavaScriptCore/bindings/jni/jni_instance.h
+++ b/JavaScriptCore/bindings/jni/jni_instance.h
@@ -83,13 +83,16 @@ public:
return *this;
};
- virtual KJS::Value booleanValue() const;
- virtual KJS::Value numberValue() const;
- virtual KJS::Value stringValue() const;
-
- jobject javaInstance() const { return _instance->_instance; }
+ virtual KJS::Value valueOf() const;
+ virtual KJS::Value defaultValue (KJS::Type hint) const;
virtual KJS::Value invokeMethod (KJS::ExecState *exec, const Method *method, const KJS::List &args);
+
+ jobject javaInstance() const { return _instance->_instance; }
+
+ KJS::Value stringValue() const;
+ KJS::Value numberValue() const;
+ KJS::Value booleanValue() const;
private:
JObjectWrapper *_instance;
diff --git a/JavaScriptCore/bindings/runtime.h b/JavaScriptCore/bindings/runtime.h
index b6ef95c..a063d86 100644
--- a/JavaScriptCore/bindings/runtime.h
+++ b/JavaScriptCore/bindings/runtime.h
@@ -111,9 +111,8 @@ public:
virtual KJS::Value invokeMethod (KJS::ExecState *exec, const Method *method, const KJS::List &args) = 0;
- virtual KJS::Value booleanValue() const = 0;
- virtual KJS::Value numberValue() const = 0;
- virtual KJS::Value stringValue() const = 0;
+ virtual KJS::Value defaultValue (KJS::Type hint) const = 0;
+
virtual KJS::Value valueOf() const { return KJS::String(getClass()->name()); };
virtual ~Instance() {};
diff --git a/JavaScriptCore/bindings/runtime_object.cpp b/JavaScriptCore/bindings/runtime_object.cpp
index c880648..708f0ee 100644
--- a/JavaScriptCore/bindings/runtime_object.cpp
+++ b/JavaScriptCore/bindings/runtime_object.cpp
@@ -115,21 +115,7 @@ bool RuntimeObjectImp::deleteProperty(ExecState *exec,
Value RuntimeObjectImp::defaultValue(ExecState *exec, Type hint) const
{
- // FIXME: Convert to appropriate type based on hint.
- // If UnspecifiedType should only convert to string if
- // native class is a string.
- // FIXME defaultValue should move to Instance.
- if (hint == StringType || hint == UnspecifiedType) {
- return getInternalInstance()->stringValue();
- }
- else if (hint == NumberType) {
- return getInternalInstance()->numberValue();
- }
- else if (hint == BooleanType) {
- return getInternalInstance()->booleanValue();
- }
-
- return getInternalInstance()->valueOf();
+ return getInternalInstance()->defaultValue(hint);
}
void RuntimeObjectImp::_initializeClassInfoFromInstance()
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list