support of latest w3c dom spec changes

fixed a bug with unicode strings
This commit is contained in:
sdv%sparc.spb.su 2000-06-13 21:22:35 +00:00
parent 60fd966f38
commit a8564a2fae
13 changed files with 181 additions and 291 deletions

View File

@ -427,6 +427,9 @@ void JavaDOMGlobals::Destroy(JNIEnv *env)
jobject JavaDOMGlobals::CreateNodeSubtype(JNIEnv *env,
nsIDOMNode *node)
{
if (!node)
return NULL;
PRUint16 nodeType = 0;
(void) node->GetNodeType(&nodeType);
@ -597,3 +600,18 @@ void JavaDOMGlobals::ThrowException(JNIEnv *env,
// an exception is thrown in any case
}
nsString* JavaDOMGlobals::GetUnicode(JNIEnv *env,
jstring jstr)
{
jboolean iscopy = JNI_FALSE;
const jchar* name = env->GetStringChars(jstr, &iscopy);
if (!name) {
ThrowException(env, "GetStringChars failed");
return NULL;
}
nsString* ustr = new nsString((PRUnichar*)name,
env->GetStringLength(jstr));
env->ReleaseStringChars(jstr, name);
return ustr;
}

View File

@ -25,6 +25,7 @@
#include "jni.h"
#include "prclist.h"
#include "nsError.h"
#include "nsString2.h"
class nsISupports;
class nsIDOMNode;
@ -96,6 +97,9 @@ class JavaDOMGlobals {
const char * message = NULL,
nsresult rv = NS_OK,
ExceptionType exceptionType = EXCEPTION_RUNTIME);
static nsString* GetUnicode(JNIEnv *env,
jstring str);
};
#endif /* __JavaDOMGlobals_h__ */

View File

@ -133,17 +133,13 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_AttrImpl_setValue
return;
}
jboolean iscopy;
const jchar* cstr = env->GetStringChars(jval, &iscopy);
if (!cstr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Attr.setValue: GetStringChars failed\n"));
env->ReleaseStringChars(jval, cstr);
nsString* cstr = JavaDOMGlobals::GetUnicode(env, jval);
if (!cstr)
return;
}
nsresult rv = attr->SetValue((PRUnichar*)cstr);
env->ReleaseStringChars(jval, cstr);
nsresult rv = attr->SetValue(*cstr);
nsString::Recycle(cstr);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,

View File

@ -41,17 +41,13 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_appendData
return;
}
jboolean iscopy;
const jchar* value = env->GetStringChars(jvalue, &iscopy);
if (!value) {
JavaDOMGlobals::ThrowException(env,
"CharacterData.appendData: GetStringChars failed");
env->ReleaseStringChars(jvalue, value);
nsString* value = JavaDOMGlobals::GetUnicode(env, jvalue);
if (!value)
return;
}
nsresult rv = data->AppendData((PRUnichar*)value);
env->ReleaseStringChars(jvalue, value);
nsresult rv = data->AppendData(*value);
nsString::Recycle(value);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (rv == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) {
@ -181,17 +177,12 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_insertData
return;
}
jboolean iscopy;
const jchar* value = env->GetStringChars(jvalue, &iscopy);
if (!value) {
JavaDOMGlobals::ThrowException(env,
"CharacterData.insertData: GetStringChars failed");
env->ReleaseStringChars(jvalue, value);
nsString* value = JavaDOMGlobals::GetUnicode(env, jvalue);
if (!value)
return;
}
nsresult rv = data->InsertData((PRUint32) offset, (PRUnichar*)value);
env->ReleaseStringChars(jvalue, value);
nsresult rv = data->InsertData((PRUint32) offset, *value);
nsString::Recycle(value);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
@ -230,17 +221,12 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_replaceData
return;
}
jboolean iscopy;
const jchar* value = env->GetStringChars(jvalue, &iscopy);
if (!value) {
JavaDOMGlobals::ThrowException(env,
"CharacterData.replaceData: GetStringChars failed");
env->ReleaseStringChars(jvalue, value);
nsString* value = JavaDOMGlobals::GetUnicode(env, jvalue);
if (!value)
return;
}
nsresult rv = data->ReplaceData((PRUint32) offset, (PRUint32) count, (PRUnichar*)value);
env->ReleaseStringChars(jvalue, value);
nsresult rv = data->ReplaceData((PRUint32) offset, (PRUint32) count, *value);
nsString::Recycle(value);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
@ -271,17 +257,12 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_setData
return;
}
jboolean iscopy;
const jchar* value = env->GetStringChars(jvalue, &iscopy);
if (!value) {
JavaDOMGlobals::ThrowException(env,
"CharacterData.setData: GetStringChars failed");
env->ReleaseStringChars(jvalue, value);
nsString* value = JavaDOMGlobals::GetUnicode(env, jvalue);
if (!value)
return;
}
nsresult rv = data->SetData((PRUnichar*)value);
env->ReleaseStringChars(jvalue, value);
nsresult rv = data->SetData(*value);
nsString::Recycle(value);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;

View File

@ -148,32 +148,23 @@ JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_DOMImplementationImpl_hasFeature
return JNI_FALSE;
}
jboolean iscopy;
const jchar* feature = env->GetStringChars(jfeature, &iscopy);
if (!feature) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DOMImplementation.hasFeature: GetStringChars feature failed\n"));
env->ReleaseStringChars(jfeature, feature);
nsString* feature = JavaDOMGlobals::GetUnicode(env, jfeature);
if (!feature)
return JNI_FALSE;
}
jboolean iscopy2;
const jchar* version = NULL;
nsString* version = new nsString();
if (jversion) {
version = env->GetStringChars(jversion, &iscopy2);
version = JavaDOMGlobals::GetUnicode(env, jversion);
if (!version) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("DOMImplementation.hasFeature: GetStringChars version failed\n"));
env->ReleaseStringChars(jversion, version);
env->ReleaseStringChars(jfeature, feature);
nsString::Recycle(feature);
return JNI_FALSE;
}
}
PRBool ret = PR_FALSE;
nsresult rv = dom->HasFeature((PRUnichar*)feature, (PRUnichar*)version, &ret);
env->ReleaseStringChars(jversion, version);
env->ReleaseStringChars(jfeature, feature);
nsresult rv = dom->HasFeature(*feature, *version, &ret);
nsString::Recycle(feature);
nsString::Recycle(version);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,

View File

@ -52,17 +52,12 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createAttribute
}
nsIDOMAttr* ret = nsnull;
jboolean iscopy = JNI_FALSE;
const jchar* name = env->GetStringChars(jname, &iscopy);
if (!name) {
JavaDOMGlobals::ThrowException(env,
"Document.createAttribute: GetStringChars failed");
env->ReleaseStringChars(jname, name);
nsString* name = JavaDOMGlobals::GetUnicode(env, jname);
if (!name)
return NULL;
}
nsresult rv = doc->CreateAttribute((PRUnichar*)name, &ret);
env->ReleaseStringChars(jname, name);
nsresult rv = doc->CreateAttribute(*name, &ret);
nsString::Recycle(name);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
@ -110,17 +105,12 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createCDATASection
}
nsIDOMCDATASection* ret = nsnull;
jboolean iscopy;
const jchar* data = env->GetStringChars(jdata, &iscopy);
if (!data) {
JavaDOMGlobals::ThrowException(env,
"Document.createCDATASection: GetStringChars failed");
env->ReleaseStringChars(jdata, data);
nsString* data = JavaDOMGlobals::GetUnicode(env, jdata);
if (!data)
return NULL;
}
nsresult rv = doc->CreateCDATASection((PRUnichar*)data, &ret);
env->ReleaseStringChars(jdata, data);
nsresult rv = doc->CreateCDATASection(*data, &ret);
nsString::Recycle(data);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
@ -167,17 +157,12 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createComment
}
nsIDOMComment* ret = nsnull;
jboolean iscopy;
const jchar* data = env->GetStringChars(jdata, &iscopy);
if (!data) {
JavaDOMGlobals::ThrowException(env,
"Document.createComment: GetStringChars failed");
env->ReleaseStringChars(jdata, data);
nsString* data = JavaDOMGlobals::GetUnicode(env, jdata);
if (!data)
return NULL;
}
nsresult rv = doc->CreateComment((PRUnichar*)data, &ret);
env->ReleaseStringChars(jdata, data);
nsresult rv = doc->CreateComment(*data, &ret);
nsString::Recycle(data);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,
@ -262,17 +247,11 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createElement
}
nsIDOMElement* ret = nsnull;
jboolean iscopy;
const jchar* tagName = env->GetStringChars(jtagName, &iscopy);
if (!tagName) {
JavaDOMGlobals::ThrowException(env,
"Document.createElement: GetStringChars failed");
env->ReleaseStringChars(jtagName, tagName);
return NULL;
}
nsresult rv = doc->CreateElement((PRUnichar*)tagName, &ret);
env->ReleaseStringChars(jtagName, tagName);
nsString* tagName = JavaDOMGlobals::GetUnicode(env, jtagName);
if (!tagName)
return NULL;
nsresult rv = doc->CreateElement(*tagName, &ret);
nsString::Recycle(tagName);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
@ -320,17 +299,12 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createEntityReferenc
}
nsIDOMEntityReference* ret = nsnull;
jboolean iscopy;
const jchar* name = env->GetStringChars(jname, &iscopy);
if (!name) {
JavaDOMGlobals::ThrowException(env,
"Document.createEntityReference: GetStringChars failed");
env->ReleaseStringChars(jname, name);
nsString* name = JavaDOMGlobals::GetUnicode(env, jname);
if (!name)
return NULL;
}
nsresult rv = doc->CreateEntityReference((PRUnichar*)name, &ret);
env->ReleaseStringChars(jname, name);
nsresult rv = doc->CreateEntityReference(*name, &ret);
nsString::Recycle(name);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
@ -379,27 +353,20 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createProcessingInst
}
nsIDOMProcessingInstruction* ret = nsnull;
jboolean iscopy;
jboolean iscopy2;
const jchar* target = env->GetStringChars(jtarget, &iscopy);
if (!target) {
JavaDOMGlobals::ThrowException(env,
"Document.createProcessingInstruction: GetStringChars target failed");
nsString* target = JavaDOMGlobals::GetUnicode(env, jtarget);
if (!target)
return NULL;
}
const jchar* data = env->GetStringChars(jdata, &iscopy2);
nsString* data = JavaDOMGlobals::GetUnicode(env, jdata);
if (!data) {
JavaDOMGlobals::ThrowException(env,
"Document.createProcessingInstruction: GetStringChars data failed");
env->ReleaseStringChars(jdata, data);
env->ReleaseStringChars(jtarget, target);
nsString::Recycle(target);
return NULL;
}
nsresult rv = doc->CreateProcessingInstruction((PRUnichar*)target, (PRUnichar*)data, &ret);
env->ReleaseStringChars(jdata, data);
env->ReleaseStringChars(jtarget, target);
nsresult rv = doc->CreateProcessingInstruction(*target, *data, &ret);
nsString::Recycle(target);
nsString::Recycle(data);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
@ -448,17 +415,12 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createTextNode
}
nsIDOMText* ret = nsnull;
jboolean iscopy;
const jchar* data = env->GetStringChars(jdata, &iscopy);
if (!data) {
JavaDOMGlobals::ThrowException(env,
"Document.createTextNode: GetStringChars failed");
env->ReleaseStringChars(jdata, data);
nsString* data = JavaDOMGlobals::GetUnicode(env, jdata);
if (!data)
return NULL;
}
nsresult rv = doc->CreateTextNode((PRUnichar*)data, &ret);
env->ReleaseStringChars(jdata, data);
nsresult rv = doc->CreateTextNode(*data, &ret);
nsString::Recycle(data);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,
@ -584,17 +546,12 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getElementsByTagName
}
nsIDOMNodeList* elements = nsnull;
jboolean iscopy;
const jchar* tagName = env->GetStringChars(jtagName, &iscopy);
if (!tagName) {
JavaDOMGlobals::ThrowException(env,
"Document.getElementsByTagName: GetStringChars failed");
env->ReleaseStringChars(jtagName, tagName);
nsString* tagName = JavaDOMGlobals::GetUnicode(env, jtagName);
if (!tagName)
return NULL;
}
nsresult rv = doc->GetElementsByTagName((PRUnichar*)tagName, &elements);
env->ReleaseStringChars(jtagName, tagName);
nsresult rv = doc->GetElementsByTagName(*tagName, &elements);
nsString::Recycle(tagName);
if (NS_FAILED(rv) || !elements) {
JavaDOMGlobals::ThrowException(env,

View File

@ -44,18 +44,13 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ElementImpl_getAttribute
return NULL;
}
jboolean iscopy;
const jchar* cname = env->GetStringChars(jname, &iscopy);
if (!cname) {
JavaDOMGlobals::ThrowException(env,
"Element.getAttribute: GetStringChars failed");
env->ReleaseStringChars(jname, cname);
nsString* cname = JavaDOMGlobals::GetUnicode(env, jname);
if (!cname)
return NULL;
}
nsString attr;
nsresult rv = element->GetAttribute((PRUnichar*)cname, attr);
env->ReleaseStringChars(jname, cname);
nsresult rv = element->GetAttribute(*cname, attr);
nsString::Recycle(cname);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,
@ -89,18 +84,13 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getAttributeNode
return NULL;
}
jboolean iscopy;
const jchar* cname = env->GetStringChars(jname, &iscopy);
if (!cname) {
JavaDOMGlobals::ThrowException(env,
"Element.getAttributeNode: GetStringChars failed");
env->ReleaseStringChars(jname, cname);
nsString* cname = JavaDOMGlobals::GetUnicode(env, jname);
if (!cname)
return NULL;
}
nsIDOMAttr* attr = nsnull;
nsresult rv = element->GetAttributeNode((PRUnichar*)cname, &attr);
env->ReleaseStringChars(jname, cname);
nsresult rv = element->GetAttributeNode(*cname, &attr);
nsString::Recycle(cname);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,
@ -144,18 +134,13 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getElementsByTagName
return NULL;
}
jboolean iscopy;
const jchar* cname = env->GetStringChars(jname, &iscopy);
if (!cname) {
JavaDOMGlobals::ThrowException(env,
"Element.getElementsByTagName: GetStringChars failed");
env->ReleaseStringChars(jname, cname);
nsString* cname = JavaDOMGlobals::GetUnicode(env, jname);
if (!cname)
return NULL;
}
nsIDOMNodeList* nodes = nsnull;
nsresult rv = element->GetElementsByTagName((PRUnichar*)cname, &nodes);
env->ReleaseStringChars(jname, cname);
nsresult rv = element->GetElementsByTagName(*cname, &nodes);
nsString::Recycle(cname);
if (NS_FAILED(rv) || !nodes) {
JavaDOMGlobals::ThrowException(env,
@ -255,17 +240,12 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_removeAttribute
return;
}
jboolean iscopy;
const jchar* name = env->GetStringChars(jname, &iscopy);
if (!name) {
JavaDOMGlobals::ThrowException(env,
"Element.removeAttribute: GetStringChars failed");
env->ReleaseStringChars(jname, name);
nsString* name = JavaDOMGlobals::GetUnicode(env, jname);
if (!name)
return;
}
nsresult rv = element->RemoveAttribute((PRUnichar*)name);
env->ReleaseStringChars(jname, name);
nsresult rv = element->RemoveAttribute(*name);
nsString::Recycle(name);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
@ -350,28 +330,19 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_setAttribute
return;
}
jboolean iscopy;
const jchar* name = env->GetStringChars(jname, &iscopy);
if (!name) {
JavaDOMGlobals::ThrowException(env,
"Element.setAttribute: GetStringChars name failed");
env->ReleaseStringChars(jname, name);
nsString* name = JavaDOMGlobals::GetUnicode(env, jname);
if (!name)
return;
}
jboolean iscopy2;
const jchar* value = env->GetStringChars(jvalue, &iscopy2);
nsString* value = JavaDOMGlobals::GetUnicode(env, jvalue);
if (!value) {
JavaDOMGlobals::ThrowException(env,
"Element.setAttribute: GetStringChars name failed");
env->ReleaseStringChars(jvalue, value);
env->ReleaseStringChars(jname, name);
nsString::Recycle(name);
return;
}
nsresult rv = element->SetAttribute((PRUnichar*)name, (PRUnichar*)value);
env->ReleaseStringChars(jvalue, value);
env->ReleaseStringChars(jname, name);
nsresult rv = element->SetAttribute(*name, *value);
nsString::Recycle(value);
nsString::Recycle(name);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;

View File

@ -71,17 +71,12 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getNamedItem
}
nsIDOMNode* node = nsnull;
jboolean iscopy;
const jchar* name = env->GetStringChars(jname, &iscopy);
if (!name) {
JavaDOMGlobals::ThrowException(env,
"NodeMap.getNamedItem: GetStringChars failed");
env->ReleaseStringChars(jname, name);
nsString* name = JavaDOMGlobals::GetUnicode(env, jname);
if (!name)
return NULL;
}
nsresult rv = map->GetNamedItem((PRUnichar*)name, &node);
env->ReleaseStringChars(jname, name);
nsresult rv = map->GetNamedItem(*name, &node);
nsString::Recycle(name);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,
@ -146,17 +141,12 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_removeNamedItem
}
nsIDOMNode* node = nsnull;
jboolean iscopy;
const jchar* name = env->GetStringChars(jname, &iscopy);
if (!name) {
JavaDOMGlobals::ThrowException(env,
"NamedNodeMap.removeNamedItem: GetStringChars failed");
env->ReleaseStringChars(jname, name);
nsString* name = JavaDOMGlobals::GetUnicode(env, jname);
if (!name)
return NULL;
}
nsresult rv = map->RemoveNamedItem((PRUnichar*)name, &node);
env->ReleaseStringChars(jname, name);
nsresult rv = map->RemoveNamedItem(*name, &node);
nsString::Recycle(name);
if (NS_FAILED(rv) || !node) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;

View File

@ -822,17 +822,12 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_setNodeValue
return;
}
jboolean iscopy;
const jchar* value = env->GetStringChars(jvalue, &iscopy);
if (!value) {
JavaDOMGlobals::ThrowException(env,
"Node.setNodeValue: GetStringChars failed");
env->ReleaseStringChars(jvalue, value);
nsString* value = JavaDOMGlobals::GetUnicode(env, jvalue);
if (!value)
return;
}
nsresult rv = node->SetNodeValue((PRUnichar*)value);
env->ReleaseStringChars(jvalue, value);
nsresult rv = node->SetNodeValue(*value);
nsString::Recycle(value);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
@ -873,22 +868,17 @@ JNIEXPORT jlong JNICALL Java_org_mozilla_dom_NodeImpl_addNativeEventListener
return 0;
}
jboolean iscopy;
const jchar* type = env->GetStringChars(jtype, &iscopy);
if (!type) {
JavaDOMGlobals::ThrowException(env,
"EventTarget.addEventListener: GetStringChars failed\n");
env->ReleaseStringChars(jtype, type);
nsString* type = JavaDOMGlobals::GetUnicode(env, jtype);
if (!type)
return 0;
}
useCapture = juseCapture == JNI_TRUE ? PR_TRUE : PR_FALSE;
listener = new NativeDOMProxyListener(env, jlistener);
nsresult rv = target->AddEventListener((PRUnichar*)type, listener, useCapture);
nsresult rv = target->AddEventListener(*type, listener, useCapture);
target->Release();
env->ReleaseStringChars(jtype, type);
nsString::Recycle(type);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,
@ -925,21 +915,17 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_removeNativeEventListener
return;
}
jboolean iscopy;
const jchar* type = env->GetStringChars(jtype, &iscopy);
if (!type) {
JavaDOMGlobals::ThrowException(env,
"NodeImpl.removeEventListener: GetStringChars failed\n");
env->ReleaseStringChars(jtype, type);
nsString* type = JavaDOMGlobals::GetUnicode(env, jtype);
if (!type)
return;
}
useCapture = juseCapture == JNI_TRUE ? PR_TRUE : PR_FALSE;
nsresult rv = target->RemoveEventListener((PRUnichar*)type,
(nsIDOMEventListener*) jlistener, useCapture);
nsresult rv = target->RemoveEventListener(*type,
(nsIDOMEventListener*) jlistener, useCapture);
target->Release();
env->ReleaseStringChars(jtype, type);
nsString::Recycle(type);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,

View File

@ -110,17 +110,12 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_setData
return;
}
jboolean iscopy;
const jchar* data = env->GetStringChars(jdata, &iscopy);
if (!data) {
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.setData: GetStringChars failed");
env->ReleaseStringChars(jdata, data);
nsString* data = JavaDOMGlobals::GetUnicode(env, jdata);
if (!data)
return;
}
nsresult rv = pi->SetData((PRUnichar*)data);
env->ReleaseStringChars(jdata, data);
nsresult rv = pi->SetData(*data);
nsString::Recycle(data);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;

View File

@ -20,16 +20,20 @@
*/
#include "prlog.h"
#include "nsIDOMNode.h"
#include"nsIDOMEvent.h"
#include"nsIDOMEventTarget.h"
#include"javaDOMEventsGlobals.h"
#include "org_mozilla_dom_events_EventImpl.h"
// static NS_DEFINE_IID(kIDOMNodeIID, NS_IDOMNODE_IID);
/*
* Class: org_mozilla_dom_events_EventImpl
* Method: getCurrentNode
* Signature: ()Lorg/w3c/dom/Node;
* Method: getCurrentTarget
* Signature: ()Lorg/w3c/dom/events/EventTarget;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_events_EventImpl_getCurrentNode
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_events_EventImpl_getCurrentTarget
(JNIEnv *env, jobject jthis)
{
nsIDOMEvent* event = (nsIDOMEvent*)
@ -40,15 +44,19 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_events_EventImpl_getCurrentNode
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = event->GetCurrentNode(&ret);
nsIDOMEventTarget* ret = nsnull;
nsresult rv = event->GetCurrentTarget(&ret);
if (NS_FAILED(rv) || !ret) {
JavaDOMGlobals::ThrowException(env,
"Event.getCurrentNode: failed", rv);
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
nsIDOMNode* node = nsnull;
rv = ret->QueryInterface(NS_GET_IID(nsIDOMNode), (void**)&node);
printf("========== rv:%x node:%x", rv, node);
// return JavaDOMGlobals::CreateNodeSubtype(env, ret);
return JavaDOMGlobals::CreateNodeSubtype(env, node);
}
/*
@ -175,15 +183,18 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_events_EventImpl_getTarget
return NULL;
}
nsIDOMNode* ret = nsnull;
nsIDOMEventTarget* ret = nsnull;
nsresult rv = event->GetTarget(&ret);
if (NS_FAILED(rv) || !ret) {
JavaDOMGlobals::ThrowException(env,
"Event.getTarget: failed", rv);
return NULL;
}
return JavaDOMGlobals::CreateNodeSubtype(env, ret);
nsIDOMNode* node = nsnull;
rv = ret->QueryInterface(NS_GET_IID(nsIDOMNode), (void**)&node);
printf("========== rv:%x node:%x", rv, node);
// return JavaDOMGlobals::CreateNodeSubtype(env, ret);
return JavaDOMGlobals::CreateNodeSubtype(env, node);
}
/*
@ -305,20 +316,15 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_EventImpl_initEvent
return;
}
jboolean iscopy;
const jchar* cvalue = env->GetStringChars(jeventTypeArg, &iscopy);
if (!cvalue) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Event.initEvent: GetStringChars failed\n"));
env->ReleaseStringChars(jeventTypeArg, cvalue);
nsString* cvalue = JavaDOMGlobals::GetUnicode(env, jeventTypeArg);
if (!cvalue)
return;
}
PRBool canBubble = jcanBubbleArg == JNI_TRUE ? PR_TRUE : PR_FALSE;
PRBool cancelable = jcancelableArg == JNI_TRUE ? PR_TRUE : PR_FALSE;
nsresult rv = event->InitEvent((PRUnichar*)cvalue, canBubble, cancelable);
env->ReleaseStringChars(jeventTypeArg, cvalue);
nsresult rv = event->InitEvent(*cvalue, canBubble, cancelable);
nsString::Recycle(cvalue);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,

View File

@ -22,6 +22,7 @@
#include "prlog.h"
#include "nsIDOMNode.h"
#include "nsIDOMMouseEvent.h"
#include "nsIDOMEventTarget.h"
#include "javaDOMEventsGlobals.h"
#include "org_mozilla_dom_events_MouseEventImpl.h"
@ -276,10 +277,10 @@ JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_events_MouseEventImpl_getShiftKe
/*
* Class: org_mozilla_dom_events_MouseEventImpl
* Method: getRelatedNode
* Signature: ()Lorg/w3c/dom/Node;
* Method: getRelatedTarget
* Signature: ()Lorg/w3c/dom/events/EventTarget;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_events_MouseEventImpl_getRelatedNode
JNIEXPORT jobject JNICALL Java_org_mozilla_dom_events_MouseEventImpl_getRelatedTarget
(JNIEnv *env, jobject jthis)
{
nsIDOMMouseEvent* event = (nsIDOMMouseEvent*)
@ -290,16 +291,20 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_events_MouseEventImpl_getRelatedN
return NULL;
}
nsIDOMNode* node = nsnull;
nsresult rv = event->GetRelatedNode(&node);
nsIDOMEventTarget* ret = nsnull;
nsresult rv = event->GetRelatedTarget(&ret);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,
"MouseEvent.getRelatedNode: failed", rv);
return NULL;
}
if (!node)
if (!ret)
return NULL;
nsIDOMNode* node = nsnull;
rv = ret->QueryInterface(NS_GET_IID(nsIDOMNode), (void**)&node);
printf("========== rv:%x node:%x", rv, node);
// return JavaDOMGlobals::CreateNodeSubtype(env, ret);
return JavaDOMGlobals::CreateNodeSubtype(env, node);
}
@ -334,14 +339,9 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_MouseEventImpl_initMouseEvent
return;
}
jboolean iscopy;
const jchar* cvalue = env->GetStringChars(jtypeArg, &iscopy);
if (!cvalue) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("UIEvent.initUIEvent: GetStringChars failed"));
env->ReleaseStringChars(jtypeArg, cvalue);
nsString* cvalue = JavaDOMGlobals::GetUnicode(env, jtypeArg);
if (!cvalue)
return;
}
PRBool canBubble = jcanBubbleArg == JNI_TRUE ? PR_TRUE : PR_FALSE;
PRBool cancelable = jcancelableArg == JNI_TRUE ? PR_TRUE : PR_FALSE;
@ -350,7 +350,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_MouseEventImpl_initMouseEvent
PRBool shiftKeyArg = jshiftKeyArg == JNI_TRUE ? PR_TRUE : PR_FALSE;
PRBool metaKeyArg = jmetaKeyArg == JNI_TRUE ? PR_TRUE : PR_FALSE;
nsresult rv = event->InitMouseEvent((PRUnichar*)cvalue,
nsresult rv = event->InitMouseEvent(*cvalue,
ctrlKeyArg,
altKeyArg,
shiftKeyArg,
@ -362,7 +362,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_MouseEventImpl_initMouseEvent
(PRUint16)jbuttonArg,
(PRUint16)jdetailArg);
env->ReleaseStringChars(jtypeArg, cvalue);
nsString::Recycle(cvalue);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,

View File

@ -101,14 +101,9 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_UIEventImpl_initUIEvent
return;
}
jboolean iscopy;
const jchar* cvalue = env->GetStringChars(jtypeArg, &iscopy);
if (!cvalue) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("UIEvent.initUIEvent: GetStringChars failed\n"));
env->ReleaseStringChars(jtypeArg, cvalue);
nsString* cvalue = JavaDOMGlobals::GetUnicode(env, jtypeArg);
if (!cvalue)
return;
}
PRBool canBubble = jcanBubbleArg == JNI_TRUE ? PR_TRUE : PR_FALSE;
PRBool cancelable = jcancelableArg == JNI_TRUE ? PR_TRUE : PR_FALSE;
@ -116,8 +111,8 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_UIEventImpl_initUIEvent
// REMIND: need to deal with AbstractView
// NS_IMETHOD InitUIEvent(const nsString& aTypeArg, PRBool aCanBubbleArg, PRBool aCancelableArg, nsIDOMAbstractView* aViewArg, PRInt32 aDetailArg)=0;
nsresult rv = event->InitUIEvent((PRUnichar*)cvalue, canBubble, cancelable, NULL, (PRUint32)jdetailArg);
env->ReleaseStringChars(jtypeArg, cvalue);
nsresult rv = event->InitUIEvent(*cvalue, canBubble, cancelable, NULL, (PRUint32)jdetailArg);
nsString::Recycle(cvalue);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ThrowException(env,