From c8e55c815cc74343f69c22cb24f0af7eaa0e59ec Mon Sep 17 00:00:00 2001 From: "sdv%sparc.spb.su" Date: Mon, 5 Jun 2000 18:08:39 +0000 Subject: [PATCH] changes to support unicode strings git-svn-id: svn://10.0.0.236/trunk@71527 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/java/dom/jni/javaDOMEventsGlobals.cpp | 29 ++--- .../java/dom/jni/org_mozilla_dom_AttrImpl.cpp | 15 +-- .../jni/org_mozilla_dom_CharacterDataImpl.cpp | 51 ++++---- .../org_mozilla_dom_DOMImplementationImpl.cpp | 26 ++-- .../dom/jni/org_mozilla_dom_DocumentImpl.cpp | 112 ++++++++++-------- .../dom/jni/org_mozilla_dom_ElementImpl.cpp | 76 ++++++------ .../jni/org_mozilla_dom_NamedNodeMapImpl.cpp | 26 ++-- .../java/dom/jni/org_mozilla_dom_NodeImpl.cpp | 41 +++---- ..._mozilla_dom_ProcessingInstructionImpl.cpp | 13 +- .../jni/org_mozilla_dom_events_EventImpl.cpp | 15 +-- .../org_mozilla_dom_events_MouseEventImpl.cpp | 13 +- .../org_mozilla_dom_events_UIEventImpl.cpp | 12 +- 12 files changed, 226 insertions(+), 203 deletions(-) diff --git a/mozilla/java/dom/jni/javaDOMEventsGlobals.cpp b/mozilla/java/dom/jni/javaDOMEventsGlobals.cpp index 8edd16c77be..91a990b7e91 100644 --- a/mozilla/java/dom/jni/javaDOMEventsGlobals.cpp +++ b/mozilla/java/dom/jni/javaDOMEventsGlobals.cpp @@ -160,12 +160,12 @@ void JavaDOMEventsGlobals::Destroy(JNIEnv *env) //returns true if specified event "type" exists in the given list of types // NOTE: it is assumed that "types" list is enden with NULL -static jboolean isEventOfType(const char* const* types, nsString type) +static jboolean isEventOfType(const char* const* types, const char* type) { int i=0; - while (types && types[i]) { - if (type == types[i]) + while (type && types && types[i]) { + if (!strcmp(type,types[i])) return JNI_TRUE; i++; } @@ -220,23 +220,24 @@ jobject JavaDOMEventsGlobals::CreateEventSubtype(JNIEnv *env, return NULL; } - if (isEventOfType(mouseEventTypes, eventType) == JNI_TRUE) { - clazz = mouseEventClass; - } else if (isEventOfType(uiEventTypes, eventType) == JNI_TRUE) { - clazz = uiEventClass; + char* buffer = nsnull; + if (eventType.IsUnicode()) { + buffer = eventType.ToNewUTF8String(); + } else { + buffer = eventType.ToNewCString(); + } + + if (isEventOfType(mouseEventTypes, buffer) == JNI_TRUE) { + clazz = mouseEventClass; + } else if (isEventOfType(uiEventTypes, buffer) == JNI_TRUE) { + clazz = uiEventClass; } else { - char* buffer = nsnull; - if (eventType.IsUnicode()) { - buffer = eventType.ToNewUTF8String(); - } else { - buffer = eventType.ToNewCString(); - } PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING, ("Unknown type of UI event (%s)", buffer)); - nsString::Recycle(&eventType); clazz = uiEventClass; } + nsString::Recycle(&eventType); event->Release(); event = (nsIDOMEvent *) target; diff --git a/mozilla/java/dom/jni/org_mozilla_dom_AttrImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_AttrImpl.cpp index b16edef9ce7..26c6e59d8f2 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_AttrImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_AttrImpl.cpp @@ -133,17 +133,18 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_AttrImpl_setValue return; } - jboolean iscopy = JNI_FALSE; - const char* cvalue = env->GetStringUTFChars(jval, &iscopy); - if (!cvalue) { + jboolean iscopy; + const jchar* cstr = env->GetStringChars(jval, &iscopy); + if (!cstr) { PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, - ("Attr.setValue: GetStringUTFChars failed\n")); + ("Attr.setValue: GetStringChars failed\n")); + env->ReleaseStringChars(jval, cstr); return; } - nsresult rv = attr->SetValue(cvalue); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jval, cvalue); + nsresult rv = attr->SetValue((PRUnichar*)cstr); + env->ReleaseStringChars(jval, cstr); + if (NS_FAILED(rv)) { PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, ("Attr.setValue: failed (%x)\n", rv)); diff --git a/mozilla/java/dom/jni/org_mozilla_dom_CharacterDataImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_CharacterDataImpl.cpp index 4d984735a08..dd4df5a9ba6 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_CharacterDataImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_CharacterDataImpl.cpp @@ -41,17 +41,17 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_appendData return; } - jboolean iscopy = JNI_FALSE; - const char* value = env->GetStringUTFChars(jvalue, &iscopy); + jboolean iscopy; + const jchar* value = env->GetStringChars(jvalue, &iscopy); if (!value) { JavaDOMGlobals::ThrowException(env, - "CharacterData.appendData: GetStringUTFChars failed"); + "CharacterData.appendData: GetStringChars failed"); + env->ReleaseStringChars(jvalue, value); return; } - nsresult rv = data->AppendData(value); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jvalue, value); + nsresult rv = data->AppendData((PRUnichar*)value); + env->ReleaseStringChars(jvalue, value); if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (rv == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) { @@ -181,17 +181,18 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_insertData return; } - jboolean iscopy = JNI_FALSE; - const char* value = env->GetStringUTFChars(jvalue, &iscopy); + jboolean iscopy; + const jchar* value = env->GetStringChars(jvalue, &iscopy); if (!value) { JavaDOMGlobals::ThrowException(env, - "CharacterData.insertData: GetStringUTFChars failed"); + "CharacterData.insertData: GetStringChars failed"); + env->ReleaseStringChars(jvalue, value); return; } - nsresult rv = data->InsertData((PRUint32) offset, value); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jvalue, value); + nsresult rv = data->InsertData((PRUint32) offset, (PRUnichar*)value); + env->ReleaseStringChars(jvalue, value); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM && @@ -229,17 +230,18 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_replaceData return; } - jboolean iscopy = JNI_FALSE; - const char* value = env->GetStringUTFChars(jvalue, &iscopy); + jboolean iscopy; + const jchar* value = env->GetStringChars(jvalue, &iscopy); if (!value) { JavaDOMGlobals::ThrowException(env, - "CharacterData.replaceData: GetStringUTFChars failed"); + "CharacterData.replaceData: GetStringChars failed"); + env->ReleaseStringChars(jvalue, value); return; } - nsresult rv = data->ReplaceData((PRUint32) offset, (PRUint32) count, value); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jvalue, value); + nsresult rv = data->ReplaceData((PRUint32) offset, (PRUint32) count, (PRUnichar*)value); + env->ReleaseStringChars(jvalue, value); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM && @@ -269,17 +271,18 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_setData return; } - jboolean iscopy = JNI_FALSE; - const char* value = env->GetStringUTFChars(jvalue, &iscopy); + jboolean iscopy; + const jchar* value = env->GetStringChars(jvalue, &iscopy); if (!value) { JavaDOMGlobals::ThrowException(env, - "CharacterData.setData: GetStringUTFChars failed"); + "CharacterData.setData: GetStringChars failed"); + env->ReleaseStringChars(jvalue, value); return; } - nsresult rv = data->SetData(value); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jvalue, value); + nsresult rv = data->SetData((PRUnichar*)value); + env->ReleaseStringChars(jvalue, value); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (rv == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) { diff --git a/mozilla/java/dom/jni/org_mozilla_dom_DOMImplementationImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_DOMImplementationImpl.cpp index 71b44a54ad3..237bc6f9ad0 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_DOMImplementationImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_DOMImplementationImpl.cpp @@ -148,31 +148,33 @@ JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_DOMImplementationImpl_hasFeature return JNI_FALSE; } - jboolean iscopy = JNI_FALSE; - const char* feature = env->GetStringUTFChars(jfeature, &iscopy); + jboolean iscopy; + const jchar* feature = env->GetStringChars(jfeature, &iscopy); if (!feature) { PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, - ("DOMImplementation.hasFeature: GetStringUTFChars feature failed\n")); + ("DOMImplementation.hasFeature: GetStringChars feature failed\n")); + env->ReleaseStringChars(jfeature, feature); return JNI_FALSE; } - jboolean iscopy2 = JNI_FALSE; - const char* version = NULL; + jboolean iscopy2; + const jchar* version = NULL; if (jversion) { - version = env->GetStringUTFChars(jversion, &iscopy2); + version = env->GetStringChars(jversion, &iscopy2); if (!version) { PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, - ("DOMImplementation.hasFeature: GetStringUTFChars version failed\n")); + ("DOMImplementation.hasFeature: GetStringChars version failed\n")); + env->ReleaseStringChars(jversion, version); + env->ReleaseStringChars(jfeature, feature); return JNI_FALSE; } } PRBool ret = PR_FALSE; - nsresult rv = dom->HasFeature(feature, version, &ret); - if (iscopy2 == JNI_TRUE) - env->ReleaseStringUTFChars(jversion, version); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jfeature, feature); + nsresult rv = dom->HasFeature((PRUnichar*)feature, (PRUnichar*)version, &ret); + env->ReleaseStringChars(jversion, version); + env->ReleaseStringChars(jfeature, feature); + if (NS_FAILED(rv)) { PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, ("DOMImplementation.hasFeature: failed (%x)\n", rv)); diff --git a/mozilla/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp index 200b7e29da1..53f56ac3fa5 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_DocumentImpl.cpp @@ -53,16 +53,17 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createAttribute nsIDOMAttr* ret = nsnull; jboolean iscopy = JNI_FALSE; - const char* name = env->GetStringUTFChars(jname, &iscopy); + const jchar* name = env->GetStringChars(jname, &iscopy); if (!name) { JavaDOMGlobals::ThrowException(env, - "Document.createAttribute: GetStringUTFChars failed"); + "Document.createAttribute: GetStringChars failed"); + env->ReleaseStringChars(jname, name); return NULL; } - nsresult rv = doc->CreateAttribute(name, &ret); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jname, name); + nsresult rv = doc->CreateAttribute((PRUnichar*)name, &ret); + env->ReleaseStringChars(jname, name); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (rv == NS_ERROR_DOM_INVALID_CHARACTER_ERR) { @@ -109,17 +110,18 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createCDATASection } nsIDOMCDATASection* ret = nsnull; - jboolean iscopy = JNI_FALSE; - const char* data = env->GetStringUTFChars(jdata, &iscopy); + jboolean iscopy; + const jchar* data = env->GetStringChars(jdata, &iscopy); if (!data) { JavaDOMGlobals::ThrowException(env, - "Document.createCDATASection: GetStringUTFChars failed"); + "Document.createCDATASection: GetStringChars failed"); + env->ReleaseStringChars(jdata, data); return NULL; } - nsresult rv = doc->CreateCDATASection(data, &ret); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jdata, data); + nsresult rv = doc->CreateCDATASection((PRUnichar*)data, &ret); + env->ReleaseStringChars(jdata, data); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (rv == NS_ERROR_DOM_NOT_SUPPORTED_ERR) { @@ -165,17 +167,18 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createComment } nsIDOMComment* ret = nsnull; - jboolean iscopy = JNI_FALSE; - const char* data = env->GetStringUTFChars(jdata, &iscopy); + jboolean iscopy; + const jchar* data = env->GetStringChars(jdata, &iscopy); if (!data) { JavaDOMGlobals::ThrowException(env, - "Document.createComment: GetStringUTFChars failed"); + "Document.createComment: GetStringChars failed"); + env->ReleaseStringChars(jdata, data); return NULL; } - nsresult rv = doc->CreateComment(data, &ret); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jdata, data); + nsresult rv = doc->CreateComment((PRUnichar*)data, &ret); + env->ReleaseStringChars(jdata, data); + if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, "Document.createComment: failed", rv); @@ -259,17 +262,18 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createElement } nsIDOMElement* ret = nsnull; - jboolean iscopy = JNI_FALSE; - const char* tagName = env->GetStringUTFChars(jtagName, &iscopy); + jboolean iscopy; + const jchar* tagName = env->GetStringChars(jtagName, &iscopy); if (!tagName) { JavaDOMGlobals::ThrowException(env, - "Document.createElement: GetStringUTFChars failed"); + "Document.createElement: GetStringChars failed"); + env->ReleaseStringChars(jtagName, tagName); return NULL; } - nsresult rv = doc->CreateElement(tagName, &ret); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jtagName, tagName); + nsresult rv = doc->CreateElement((PRUnichar*)tagName, &ret); + env->ReleaseStringChars(jtagName, tagName); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (rv == NS_ERROR_DOM_INVALID_CHARACTER_ERR) { @@ -316,17 +320,18 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createEntityReferenc } nsIDOMEntityReference* ret = nsnull; - jboolean iscopy = JNI_FALSE; - const char* name = env->GetStringUTFChars(jname, &iscopy); + jboolean iscopy; + const jchar* name = env->GetStringChars(jname, &iscopy); if (!name) { JavaDOMGlobals::ThrowException(env, - "Document.createEntityReference: GetStringUTFChars failed"); + "Document.createEntityReference: GetStringChars failed"); + env->ReleaseStringChars(jname, name); return NULL; } - nsresult rv = doc->CreateEntityReference(name, &ret); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jname, name); + nsresult rv = doc->CreateEntityReference((PRUnichar*)name, &ret); + env->ReleaseStringChars(jname, name); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM && @@ -374,27 +379,28 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createProcessingInst } nsIDOMProcessingInstruction* ret = nsnull; - jboolean iscopy = JNI_FALSE; - jboolean iscopy2 = JNI_FALSE; - const char* target = env->GetStringUTFChars(jtarget, &iscopy); + jboolean iscopy; + jboolean iscopy2; + const jchar* target = env->GetStringChars(jtarget, &iscopy); if (!target) { JavaDOMGlobals::ThrowException(env, - "Document.createProcessingInstruction: GetStringUTFChars target failed"); + "Document.createProcessingInstruction: GetStringChars target failed"); return NULL; } - const char* data = env->GetStringUTFChars(jdata, &iscopy2); + const jchar* data = env->GetStringChars(jdata, &iscopy2); if (!data) { JavaDOMGlobals::ThrowException(env, - "Document.createProcessingInstruction: GetStringUTFChars data failed"); + "Document.createProcessingInstruction: GetStringChars data failed"); + env->ReleaseStringChars(jdata, data); + env->ReleaseStringChars(jtarget, target); return NULL; } - nsresult rv = doc->CreateProcessingInstruction(target, data, &ret); - if (iscopy2 == JNI_TRUE) - env->ReleaseStringUTFChars(jdata, data); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jtarget, target); + nsresult rv = doc->CreateProcessingInstruction((PRUnichar*)target, (PRUnichar*)data, &ret); + env->ReleaseStringChars(jdata, data); + env->ReleaseStringChars(jtarget, target); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM && @@ -442,17 +448,18 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createTextNode } nsIDOMText* ret = nsnull; - jboolean iscopy = JNI_FALSE; - const char* data = env->GetStringUTFChars(jdata, &iscopy); + jboolean iscopy; + const jchar* data = env->GetStringChars(jdata, &iscopy); if (!data) { JavaDOMGlobals::ThrowException(env, - "Document.createTextNode: GetStringUTFChars failed"); + "Document.createTextNode: GetStringChars failed"); + env->ReleaseStringChars(jdata, data); return NULL; } - nsresult rv = doc->CreateTextNode(data, &ret); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jdata, data); + nsresult rv = doc->CreateTextNode((PRUnichar*)data, &ret); + env->ReleaseStringChars(jdata, data); + if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, "Document.createTextNode failed", rv); @@ -577,17 +584,18 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getElementsByTagName } nsIDOMNodeList* elements = nsnull; - jboolean iscopy = JNI_FALSE; - const char* tagName = env->GetStringUTFChars(jtagName, &iscopy); + jboolean iscopy; + const jchar* tagName = env->GetStringChars(jtagName, &iscopy); if (!tagName) { JavaDOMGlobals::ThrowException(env, - "Document.getElementsByTagName: GetStringUTFChars failed"); + "Document.getElementsByTagName: GetStringChars failed"); + env->ReleaseStringChars(jtagName, tagName); return NULL; } - nsresult rv = doc->GetElementsByTagName(tagName, &elements); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jtagName, tagName); + nsresult rv = doc->GetElementsByTagName((PRUnichar*)tagName, &elements); + env->ReleaseStringChars(jtagName, tagName); + if (NS_FAILED(rv) || !elements) { JavaDOMGlobals::ThrowException(env, "Document.getElementsByTagName: failed", rv); diff --git a/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp index f5721ee22d3..0bd41099233 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_ElementImpl.cpp @@ -44,18 +44,19 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ElementImpl_getAttribute return NULL; } - jboolean iscopy = JNI_FALSE; - const char* cname = env->GetStringUTFChars(jname, &iscopy); + jboolean iscopy; + const jchar* cname = env->GetStringChars(jname, &iscopy); if (!cname) { JavaDOMGlobals::ThrowException(env, - "Element.getAttribute: GetStringUTFChars failed"); + "Element.getAttribute: GetStringChars failed"); + env->ReleaseStringChars(jname, cname); return NULL; } nsString attr; - nsresult rv = element->GetAttribute(cname, attr); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jname, cname); + nsresult rv = element->GetAttribute((PRUnichar*)cname, attr); + env->ReleaseStringChars(jname, cname); + if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, "Element.getAttribute: failed", rv); @@ -88,18 +89,19 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getAttributeNode return NULL; } - jboolean iscopy = JNI_FALSE; - const char* cname = env->GetStringUTFChars(jname, &iscopy); + jboolean iscopy; + const jchar* cname = env->GetStringChars(jname, &iscopy); if (!cname) { JavaDOMGlobals::ThrowException(env, - "Element.getAttributeNode: GetStringUTFChars failed"); + "Element.getAttributeNode: GetStringChars failed"); + env->ReleaseStringChars(jname, cname); return NULL; } nsIDOMAttr* attr = nsnull; - nsresult rv = element->GetAttributeNode(cname, &attr); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jname, cname); + nsresult rv = element->GetAttributeNode((PRUnichar*)cname, &attr); + env->ReleaseStringChars(jname, cname); + if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, "Element.getAttributeNode: failed", rv); @@ -142,18 +144,19 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getElementsByTagName return NULL; } - jboolean iscopy = JNI_FALSE; - const char* cname = env->GetStringUTFChars(jname, &iscopy); + jboolean iscopy; + const jchar* cname = env->GetStringChars(jname, &iscopy); if (!cname) { JavaDOMGlobals::ThrowException(env, - "Element.getElementsByTagName: GetStringUTFChars failed"); + "Element.getElementsByTagName: GetStringChars failed"); + env->ReleaseStringChars(jname, cname); return NULL; } nsIDOMNodeList* nodes = nsnull; - nsresult rv = element->GetElementsByTagName(cname, &nodes); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jname, cname); + nsresult rv = element->GetElementsByTagName((PRUnichar*)cname, &nodes); + env->ReleaseStringChars(jname, cname); + if (NS_FAILED(rv) || !nodes) { JavaDOMGlobals::ThrowException(env, "Element.getElementsByTagName: failed", rv); @@ -252,17 +255,18 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_removeAttribute return; } - jboolean iscopy = JNI_FALSE; - const char* name = env->GetStringUTFChars(jname, &iscopy); + jboolean iscopy; + const jchar* name = env->GetStringChars(jname, &iscopy); if (!name) { JavaDOMGlobals::ThrowException(env, - "Element.removeAttribute: GetStringUTFChars failed"); + "Element.removeAttribute: GetStringChars failed"); + env->ReleaseStringChars(jname, name); return; } - nsresult rv = element->RemoveAttribute(name); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jname, name); + nsresult rv = element->RemoveAttribute((PRUnichar*)name); + env->ReleaseStringChars(jname, name); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (rv == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) { @@ -346,27 +350,29 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_setAttribute return; } - jboolean iscopy = JNI_FALSE; - const char* name = env->GetStringUTFChars(jname, &iscopy); + jboolean iscopy; + const jchar* name = env->GetStringChars(jname, &iscopy); if (!name) { JavaDOMGlobals::ThrowException(env, - "Element.setAttribute: GetStringUTFChars name failed"); + "Element.setAttribute: GetStringChars name failed"); + env->ReleaseStringChars(jname, name); return; } - jboolean iscopy2 = JNI_FALSE; - const char* value = env->GetStringUTFChars(jvalue, &iscopy2); + jboolean iscopy2; + const jchar* value = env->GetStringChars(jvalue, &iscopy2); if (!value) { JavaDOMGlobals::ThrowException(env, - "Element.setAttribute: GetStringUTFChars name failed"); + "Element.setAttribute: GetStringChars name failed"); + env->ReleaseStringChars(jvalue, value); + env->ReleaseStringChars(jname, name); return; } - nsresult rv = element->SetAttribute(name, value); - if (iscopy2 == JNI_TRUE) - env->ReleaseStringUTFChars(jvalue, value); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jname, name); + nsresult rv = element->SetAttribute((PRUnichar*)name, (PRUnichar*)value); + env->ReleaseStringChars(jvalue, value); + env->ReleaseStringChars(jname, name); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM && diff --git a/mozilla/java/dom/jni/org_mozilla_dom_NamedNodeMapImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_NamedNodeMapImpl.cpp index 68eaf48dca9..9b475f33fe2 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_NamedNodeMapImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_NamedNodeMapImpl.cpp @@ -71,17 +71,18 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getNamedItem } nsIDOMNode* node = nsnull; - jboolean iscopy = JNI_FALSE; - const char* name = env->GetStringUTFChars(jname, &iscopy); + jboolean iscopy; + const jchar* name = env->GetStringChars(jname, &iscopy); if (!name) { JavaDOMGlobals::ThrowException(env, - "NodeMap.getNamedItem: GetStringUTFChars failed"); + "NodeMap.getNamedItem: GetStringChars failed"); + env->ReleaseStringChars(jname, name); return NULL; } - nsresult rv = map->GetNamedItem(name, &node); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jname, name); + nsresult rv = map->GetNamedItem((PRUnichar*)name, &node); + env->ReleaseStringChars(jname, name); + if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, "NodeMap.getNamedItem: failed", rv); @@ -145,17 +146,18 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_removeNamedItem } nsIDOMNode* node = nsnull; - jboolean iscopy = JNI_FALSE; - const char* name = env->GetStringUTFChars(jname, &iscopy); + jboolean iscopy; + const jchar* name = env->GetStringChars(jname, &iscopy); if (!name) { JavaDOMGlobals::ThrowException(env, - "NamedNodeMap.removeNamedItem: GetStringUTFChars failed"); + "NamedNodeMap.removeNamedItem: GetStringChars failed"); + env->ReleaseStringChars(jname, name); return NULL; } - nsresult rv = map->RemoveNamedItem(name, &node); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jname, name); + nsresult rv = map->RemoveNamedItem((PRUnichar*)name, &node); + env->ReleaseStringChars(jname, name); + if (NS_FAILED(rv) || !node) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (rv == NS_ERROR_DOM_NOT_FOUND_ERR) { diff --git a/mozilla/java/dom/jni/org_mozilla_dom_NodeImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_NodeImpl.cpp index 454136b84c9..9ef9b8c32e5 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_NodeImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_NodeImpl.cpp @@ -822,17 +822,18 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_setNodeValue return; } - jboolean iscopy = JNI_FALSE; - const char* value = env->GetStringUTFChars(jvalue, &iscopy); + jboolean iscopy; + const jchar* value = env->GetStringChars(jvalue, &iscopy); if (!value) { JavaDOMGlobals::ThrowException(env, - "Node.setNodeValue: GetStringUTFChars failed"); + "Node.setNodeValue: GetStringChars failed"); + env->ReleaseStringChars(jvalue, value); return; } - nsresult rv = node->SetNodeValue(value); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jvalue, value); + nsresult rv = node->SetNodeValue((PRUnichar*)value); + env->ReleaseStringChars(jvalue, value); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (rv == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) { @@ -872,12 +873,12 @@ JNIEXPORT jlong JNICALL Java_org_mozilla_dom_NodeImpl_addNativeEventListener return 0; } - jboolean iscopy = JNI_FALSE; - - const char* type = env->GetStringUTFChars(jtype, &iscopy); + jboolean iscopy; + const jchar* type = env->GetStringChars(jtype, &iscopy); if (!type) { JavaDOMGlobals::ThrowException(env, - "EventTarget.addEventListener: GetStringUTFChars failed\n"); + "EventTarget.addEventListener: GetStringChars failed\n"); + env->ReleaseStringChars(jtype, type); return 0; } @@ -885,12 +886,10 @@ JNIEXPORT jlong JNICALL Java_org_mozilla_dom_NodeImpl_addNativeEventListener listener = new NativeDOMProxyListener(env, jlistener); - nsresult rv = target->AddEventListener(type, listener, useCapture); - + nsresult rv = target->AddEventListener((PRUnichar*)type, listener, useCapture); target->Release(); + env->ReleaseStringChars(jtype, type); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jtype, type); if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, "EventTarget.addEventListener: error"); @@ -926,23 +925,21 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_removeNativeEventListener return; } - jboolean iscopy = JNI_FALSE; - const char* type = env->GetStringUTFChars(jtype, &iscopy); + jboolean iscopy; + const jchar* type = env->GetStringChars(jtype, &iscopy); if (!type) { JavaDOMGlobals::ThrowException(env, - "NodeImpl.removeEventListener: GetStringUTFChars failed\n"); + "NodeImpl.removeEventListener: GetStringChars failed\n"); + env->ReleaseStringChars(jtype, type); return; } useCapture = juseCapture == JNI_TRUE ? PR_TRUE : PR_FALSE; - nsresult rv = target->RemoveEventListener(type, + nsresult rv = target->RemoveEventListener((PRUnichar*)type, (nsIDOMEventListener*) jlistener, useCapture); - target->Release(); - - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jtype, type); + env->ReleaseStringChars(jtype, type); if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, diff --git a/mozilla/java/dom/jni/org_mozilla_dom_ProcessingInstructionImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_ProcessingInstructionImpl.cpp index 24314e9ed7f..0bcbc3e34e1 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_ProcessingInstructionImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_ProcessingInstructionImpl.cpp @@ -110,17 +110,18 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_setData return; } - jboolean iscopy = JNI_FALSE; - const char* data = env->GetStringUTFChars(jdata, &iscopy); + jboolean iscopy; + const jchar* data = env->GetStringChars(jdata, &iscopy); if (!data) { JavaDOMGlobals::ThrowException(env, - "ProcessingInstruction.setData: GetStringUTFChars failed"); + "ProcessingInstruction.setData: GetStringChars failed"); + env->ReleaseStringChars(jdata, data); return; } - nsresult rv = pi->SetData(data); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jdata, data); + nsresult rv = pi->SetData((PRUnichar*)data); + env->ReleaseStringChars(jdata, data); + if (NS_FAILED(rv)) { JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME; if (rv == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) { diff --git a/mozilla/java/dom/jni/org_mozilla_dom_events_EventImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_events_EventImpl.cpp index 3db3752eb84..eec8d2ba915 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_events_EventImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_events_EventImpl.cpp @@ -213,7 +213,7 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_events_EventImpl_getType jstring jret = env->NewString(ret.GetUnicode(), ret.Length()); if (!jret) { JavaDOMGlobals::ThrowException(env, - "Event.getType: NewStringUTF failed"); + "Event.getType: NewString failed"); return NULL; } @@ -305,20 +305,21 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_EventImpl_initEvent return; } - jboolean iscopy = JNI_FALSE; - const char* cvalue = env->GetStringUTFChars(jeventTypeArg, &iscopy); + jboolean iscopy; + const jchar* cvalue = env->GetStringChars(jeventTypeArg, &iscopy); if (!cvalue) { PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, - ("Event.initEvent: GetStringUTFChars failed\n")); + ("Event.initEvent: GetStringChars failed\n")); + env->ReleaseStringChars(jeventTypeArg, cvalue); return; } PRBool canBubble = jcanBubbleArg == JNI_TRUE ? PR_TRUE : PR_FALSE; PRBool cancelable = jcancelableArg == JNI_TRUE ? PR_TRUE : PR_FALSE; - nsresult rv = event->InitEvent(cvalue, canBubble, cancelable); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jeventTypeArg, cvalue); + nsresult rv = event->InitEvent((PRUnichar*)cvalue, canBubble, cancelable); + env->ReleaseStringChars(jeventTypeArg, cvalue); + if (NS_FAILED(rv)) { PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, ("Event.initEvent: failed (%x)\n", rv)); diff --git a/mozilla/java/dom/jni/org_mozilla_dom_events_MouseEventImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_events_MouseEventImpl.cpp index 55fbada6f8c..857fdb3ebf9 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_events_MouseEventImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_events_MouseEventImpl.cpp @@ -334,11 +334,12 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_MouseEventImpl_initMouseEvent return; } - jboolean iscopy = JNI_FALSE; - const char* cvalue = env->GetStringUTFChars(jtypeArg, &iscopy); + jboolean iscopy; + const jchar* cvalue = env->GetStringChars(jtypeArg, &iscopy); if (!cvalue) { PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, - ("UIEvent.initUIEvent: GetStringUTFChars failed")); + ("UIEvent.initUIEvent: GetStringChars failed")); + env->ReleaseStringChars(jtypeArg, cvalue); return; } @@ -349,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(cvalue, + nsresult rv = event->InitMouseEvent((PRUnichar*)cvalue, ctrlKeyArg, altKeyArg, shiftKeyArg, @@ -361,8 +362,8 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_MouseEventImpl_initMouseEvent (PRUint16)jbuttonArg, (PRUint16)jdetailArg); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jtypeArg, cvalue); + env->ReleaseStringChars(jtypeArg, cvalue); + if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, "UIEvent.initUIEvent: failed", rv); diff --git a/mozilla/java/dom/jni/org_mozilla_dom_events_UIEventImpl.cpp b/mozilla/java/dom/jni/org_mozilla_dom_events_UIEventImpl.cpp index 1b16afe3589..6c912dc5d72 100644 --- a/mozilla/java/dom/jni/org_mozilla_dom_events_UIEventImpl.cpp +++ b/mozilla/java/dom/jni/org_mozilla_dom_events_UIEventImpl.cpp @@ -101,11 +101,12 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_events_UIEventImpl_initUIEvent return; } - jboolean iscopy = JNI_FALSE; - const char* cvalue = env->GetStringUTFChars(jtypeArg, &iscopy); + jboolean iscopy; + const jchar* cvalue = env->GetStringChars(jtypeArg, &iscopy); if (!cvalue) { PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR, - ("UIEvent.initUIEvent: GetStringUTFChars failed\n")); + ("UIEvent.initUIEvent: GetStringChars failed\n")); + env->ReleaseStringChars(jtypeArg, cvalue); return; } @@ -115,10 +116,9 @@ 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(cvalue, canBubble, cancelable, NULL, (PRUint32)jdetailArg); + nsresult rv = event->InitUIEvent((PRUnichar*)cvalue, canBubble, cancelable, NULL, (PRUint32)jdetailArg); + env->ReleaseStringChars(jtypeArg, cvalue); - if (iscopy == JNI_TRUE) - env->ReleaseStringUTFChars(jtypeArg, cvalue); if (NS_FAILED(rv)) { JavaDOMGlobals::ThrowException(env, "UIEvent.initUIEvent: failed", rv);