mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-07 15:12:28 +00:00
support of latest w3c dom spec changes
fixed a bug with unicode strings
This commit is contained in:
parent
60fd966f38
commit
a8564a2fae
@ -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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user