summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/datamodel/ecmascript
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-10-26 23:34:56 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-10-26 23:34:56 (GMT)
commitcb4356f33044fd42958cdede5dfe93ef4516173a (patch)
treeecd4f0afd4f1b7948bf765650ae5454d5581b4d3 /src/uscxml/plugins/datamodel/ecmascript
parent16f401a90436a0f86af887c5e0fe212820cd5e3c (diff)
downloaduscxml-cb4356f33044fd42958cdede5dfe93ef4516173a.zip
uscxml-cb4356f33044fd42958cdede5dfe93ef4516173a.tar.gz
uscxml-cb4356f33044fd42958cdede5dfe93ef4516173a.tar.bz2
Nested XML Node with event
Diffstat (limited to 'src/uscxml/plugins/datamodel/ecmascript')
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp7
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp5
2 files changed, 11 insertions, 1 deletions
diff --git a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
index 4a4a6e7..c737d16 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/JavaScriptCore/JSCDataModel.cpp
@@ -376,10 +376,15 @@ Data JSCDataModel::getValueAsData(const JSValueRef value) {
if (exception)
handleException(exception);
if (JSValueIsObjectOfClass(_ctx, value, JSCArrayBuffer::getTmpl())) {
- // binary data!
+ // binary data
JSCArrayBuffer::JSCArrayBufferPrivate* privObj = (JSCArrayBuffer::JSCArrayBufferPrivate*)JSObjectGetPrivate(objValue);
data.binary = privObj->nativeObj->_buffer;
return data;
+ } else if (JSValueIsObjectOfClass(_ctx, value, JSCNode::getTmpl())) {
+ // dom node
+ JSCNode::JSCNodePrivate* privObj = (JSCNode::JSCNodePrivate*)JSObjectGetPrivate(objValue);
+ data.node = *privObj->nativeObj;
+ return data;
}
std::set<std::string> propertySet;
JSPropertyNameArrayRef properties = JSObjectCopyPropertyNames(_ctx, objValue);
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
index b0ffcea..a0de760 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
@@ -324,6 +324,11 @@ Data V8DataModel::getValueAsData(const v8::Handle<v8::Value>& value, std::set<v8
data.binary = privObj->nativeObj->_buffer;
return data;
}
+ if (V8Node::hasInstance(value)) {
+ uscxml::V8Node::V8NodePrivate* privObj = V8DOM::toClassPtr<V8Node::V8NodePrivate >(value->ToObject()->GetInternalField(0));
+ data.node = *privObj->nativeObj;
+ return data;
+ }
v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(value);
v8::Local<v8::Array> properties = object->GetPropertyNames();
for (int i = 0; i < properties->Length(); i++) {