diff --git a/java/dom/jni/javaDOMGlobals.cpp b/java/dom/jni/javaDOMGlobals.cpp index a72908f6c0d5..008bec9db4ef 100644 --- a/java/dom/jni/javaDOMGlobals.cpp +++ b/java/dom/jni/javaDOMGlobals.cpp @@ -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; +} diff --git a/java/dom/jni/javaDOMGlobals.h b/java/dom/jni/javaDOMGlobals.h index 2c4462cc275a..13bb8c9e74db 100644 --- a/java/dom/jni/javaDOMGlobals.h +++ b/java/dom/jni/javaDOMGlobals.h @@ -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__ */ diff --git a/java/dom/jni/org_mozilla_dom_AttrImpl.cpp b/java/dom/jni/org_mozilla_dom_AttrImpl.cpp index 26c6e59d8f22..ab57259e3eb5 100644 --- a/java/dom/jni/org_mozilla_dom_AttrImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_AttrImpl.cpp @@ -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, diff --git a/java/dom/jni/org_mozilla_dom_CharacterDataImpl.cpp b/java/dom/jni/org_mozilla_dom_CharacterDataImpl.cpp index dd4df5a9ba67..799a75698ea6 100644 --- a/java/dom/jni/org_mozilla_dom_CharacterDataImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_CharacterDataImpl.cpp @@ -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; diff --git a/java/dom/jni/org_mozilla_dom_DOMImplementationImpl.cpp b/java/dom/jni/org_mozilla_dom_DOMImplementationImpl.cpp index 237bc6f9ad08..d32a49fd7fce 100644 --- a/java/dom/jni/org_mozilla_dom_DOMImplementationImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_DOMImplementationImpl.cpp @@ -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, diff --git a/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp b/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp index 53f56ac3fa58..00003dca6548 100644 --- a/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp @@ -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, diff --git a/java/dom/jni/org_mozilla_dom_ElementImpl.cpp b/java/dom/jni/org_mozilla_dom_ElementImpl.cpp index 0bd41099233a..118f9dada8ff 100644 --- a/java/dom/jni/org_mozilla_dom_ElementImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_ElementImpl.cpp @@ -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; diff --git a/java/dom/jni/org_mozilla_dom_NamedNodeMapImpl.cpp b/java/dom/jni/org_mozilla_dom_NamedNodeMapImpl.cpp index 9b475f33fe20..badb1cb2e8a4 100644 --- a/java/dom/jni/org_mozilla_dom_NamedNodeMapImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_NamedNodeMapImpl.cpp @@ -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; diff --git a/java/dom/jni/org_mozilla_dom_NodeImpl.cpp b/java/dom/jni/org_mozilla_dom_NodeImpl.cpp index 9ef9b8c32e5e..021e1824dbd4 100644 --- a/java/dom/jni/org_mozilla_dom_NodeImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_NodeImpl.cpp @@ -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, diff --git a/java/dom/jni/org_mozilla_dom_ProcessingInstructionImpl.cpp b/java/dom/jni/org_mozilla_dom_ProcessingInstructionImpl.cpp index 0bcbc3e34e16..6a40b76b3686 100644 --- a/java/dom/jni/org_mozilla_dom_ProcessingInstructionImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_ProcessingInstructionImpl.cpp @@ -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; diff --git a/java/dom/jni/org_mozilla_dom_events_EventImpl.cpp b/java/dom/jni/org_mozilla_dom_events_EventImpl.cpp index eec8d2ba9152..8a72a51bbb2c 100644 --- a/java/dom/jni/org_mozilla_dom_events_EventImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_events_EventImpl.cpp @@ -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, diff --git a/java/dom/jni/org_mozilla_dom_events_MouseEventImpl.cpp b/java/dom/jni/org_mozilla_dom_events_MouseEventImpl.cpp index 857fdb3ebf96..0dc3283b36d4 100644 --- a/java/dom/jni/org_mozilla_dom_events_MouseEventImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_events_MouseEventImpl.cpp @@ -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, diff --git a/java/dom/jni/org_mozilla_dom_events_UIEventImpl.cpp b/java/dom/jni/org_mozilla_dom_events_UIEventImpl.cpp index 6c912dc5d728..f71143e0c72a 100644 --- a/java/dom/jni/org_mozilla_dom_events_UIEventImpl.cpp +++ b/java/dom/jni/org_mozilla_dom_events_UIEventImpl.cpp @@ -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,