Added new method :
public Object PlugletTagInfo.getDOMElement(); (It is possible to use JavaDOM from pluglets now.) a=idk@eng.sun.com r=sdv@sparc.spb.su
This commit is contained in:
Родитель
34d719c42b
Коммит
707030a57c
|
@ -39,4 +39,22 @@ public interface PlugletTagInfo {
|
||||||
* @return Returns the value of the named attribute as a <code>String</code>.
|
* @return Returns the value of the named attribute as a <code>String</code>.
|
||||||
*/
|
*/
|
||||||
public String getAttribute(String name);
|
public String getAttribute(String name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the DOM element corresponding to the tag which references
|
||||||
|
* this pluglet in the document.
|
||||||
|
*
|
||||||
|
* REMINDERS:
|
||||||
|
* <ul>
|
||||||
|
* <li> You need to have JavaDOM installed.
|
||||||
|
* (see http://www.mozilla.org/projects/blacwood/dom)
|
||||||
|
* </li>
|
||||||
|
* <li>
|
||||||
|
* You need to cast return value to org.w3c.dom.Element
|
||||||
|
* </li>
|
||||||
|
* </ul>
|
||||||
|
* @return Return org.w3c.dom.Element correspondig to the tag
|
||||||
|
*/
|
||||||
|
public Object getDOMElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,7 @@ public class PlugletTagInfo2Impl implements PlugletTagInfo2 {
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
public native Object getDOMElement();
|
||||||
public native String getParameter(String name);
|
public native String getParameter(String name);
|
||||||
/* Get the type of the HTML tag that was used ot instantiate this
|
/* Get the type of the HTML tag that was used ot instantiate this
|
||||||
* pluglet. Currently supported tags are EMBED, APPLET and OBJECT.
|
* pluglet. Currently supported tags are EMBED, APPLET and OBJECT.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
* The contents of this file are subject to the Mozilla Public
|
* The contents of this file are subject to the Mozilla Public
|
||||||
* License Version 1.1 (the "License"); you may not use this file
|
* License Version 1.1 (the "License"); you may not use this file
|
||||||
* except in compliance with the License. You may obtain a copy of
|
* except in compliance with the License. You may obtain a copy of
|
||||||
|
@ -23,6 +23,9 @@
|
||||||
#include "PlugletLog.h"
|
#include "PlugletLog.h"
|
||||||
|
|
||||||
static jfieldID peerFID = NULL;
|
static jfieldID peerFID = NULL;
|
||||||
|
static jclass DOMAccessorImpl = NULL;
|
||||||
|
static jmethodID getElementByHandle = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
||||||
* Method: getAttributesArray
|
* Method: getAttributesArray
|
||||||
|
@ -95,6 +98,41 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_g
|
||||||
return env->NewStringUTF(result);
|
return env->NewStringUTF(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
||||||
|
* Method: getDOMElement
|
||||||
|
* Signature: ()Ljava/lang/Object;
|
||||||
|
*/
|
||||||
|
JNIEXPORT jobject JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_getDOMElement
|
||||||
|
(JNIEnv *env, jobject jthis) {
|
||||||
|
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
||||||
|
("PlugletTagInfo2Impl.getDOMElement\n"));
|
||||||
|
if ( !DOMAccessorImpl ) {
|
||||||
|
DOMAccessorImpl = env->FindClass("org/mozilla/dom/DOMAccessorImpl");
|
||||||
|
if (!DOMAccessorImpl) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
DOMAccessorImpl = (jclass) env->NewGlobalRef(DOMAccessorImpl); // nb who is going to Delete this ref
|
||||||
|
if (!DOMAccessorImpl) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
getElementByHandle = env->GetStaticMethodID(DOMAccessorImpl,"getElementByHandle","(J)Lorg/w3c/dom/Element;");
|
||||||
|
if (!getElementByHandle) {
|
||||||
|
DOMAccessorImpl = NULL;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nsIPluginTagInfo2 * info = (nsIPluginTagInfo2*)env->GetLongField(jthis, peerFID);
|
||||||
|
nsIDOMElement * elem = NULL;
|
||||||
|
if (!info
|
||||||
|
|| NS_FAILED(info->GetDOMElement(&elem))) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return env->CallStaticObjectMethod(DOMAccessorImpl,getElementByHandle,(jlong) elem);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
||||||
* Method: getParametersArray
|
* Method: getParametersArray
|
||||||
|
|
|
@ -1,23 +1,3 @@
|
||||||
/*
|
|
||||||
* The contents of this file are subject to the Mozilla Public
|
|
||||||
* License Version 1.1 (the "License"); you may not use this file
|
|
||||||
* except in compliance with the License. You may obtain a copy of
|
|
||||||
* the License at http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS
|
|
||||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
||||||
* implied. See the License for the specific language governing
|
|
||||||
* rights and limitations under the License.
|
|
||||||
*
|
|
||||||
* The Original Code is mozilla.org code.
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is Sun Microsystems,
|
|
||||||
* Inc. Portions created by Sun are
|
|
||||||
* Copyright (C) 1999 Sun Microsystems, Inc. All
|
|
||||||
* Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
*/
|
|
||||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
/* Header for class org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl */
|
/* Header for class org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl */
|
||||||
|
@ -47,10 +27,18 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_g
|
||||||
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
||||||
* Method: getParametersArray
|
* Method: getParametersArray
|
||||||
* Signature: ()[[Ljava/lang/String;
|
* Signature: ()[[Ljava/lang/String;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobjectArray JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_getParametersArray
|
JNIEXPORT jobjectArray JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_getParametersArray
|
||||||
(JNIEnv *, jobject);
|
(JNIEnv *, jobject);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
||||||
|
* Method: getDOMElement
|
||||||
|
* Signature: ()Ljava/lang/Object;
|
||||||
|
*/
|
||||||
|
JNIEXPORT jobject JNICALL Java_org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl_getDOMElement
|
||||||
|
(JNIEnv *, jobject);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
* Class: org_mozilla_pluglet_mozilla_PlugletTagInfo2Impl
|
||||||
* Method: getParameter
|
* Method: getParameter
|
||||||
|
|
|
@ -178,6 +178,13 @@ void PlugletEngine::StartJVM(void) {
|
||||||
("PlugletEngine::StartJVM\n"));
|
("PlugletEngine::StartJVM\n"));
|
||||||
JNIEnv *env = NULL;
|
JNIEnv *env = NULL;
|
||||||
jint res;
|
jint res;
|
||||||
|
jsize jvmCount;
|
||||||
|
JNI_GetCreatedJavaVMs(&jvm, 1, &jvmCount);
|
||||||
|
if (jvmCount) {
|
||||||
|
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
||||||
|
("PlugletEngine::StartJVM we have running jvm. We do not need to start another one\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
JDK1_1InitArgs vm_args;
|
JDK1_1InitArgs vm_args;
|
||||||
char classpath[1024];
|
char classpath[1024];
|
||||||
JNI_GetDefaultJavaVMInitArgs(&vm_args);
|
JNI_GetDefaultJavaVMInitArgs(&vm_args);
|
||||||
|
@ -186,7 +193,7 @@ void PlugletEngine::StartJVM(void) {
|
||||||
sprintf(classpath, "%s%c%s",
|
sprintf(classpath, "%s%c%s",
|
||||||
vm_args.classpath, PATH_SEPARATOR, PR_GetEnv("CLASSPATH"));
|
vm_args.classpath, PATH_SEPARATOR, PR_GetEnv("CLASSPATH"));
|
||||||
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
||||||
("PlugletEngine::StartJVM classpath=%s\n",classpath));
|
("PlugletEngine::StartJVM classpath=%s\n",classpath));
|
||||||
char **props = new char*[2];
|
char **props = new char*[2];
|
||||||
props[0]="java.compiler=NONE";
|
props[0]="java.compiler=NONE";
|
||||||
props[1]=0;
|
props[1]=0;
|
||||||
|
@ -195,10 +202,10 @@ void PlugletEngine::StartJVM(void) {
|
||||||
/* Create the Java VM */
|
/* Create the Java VM */
|
||||||
res = JNI_CreateJavaVM(&jvm, &env, &vm_args);
|
res = JNI_CreateJavaVM(&jvm, &env, &vm_args);
|
||||||
if(res < 0 ) {
|
if(res < 0 ) {
|
||||||
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
||||||
("PlugletEngine::StartJVM JNI_CreateJavaVM failed \n"));
|
("PlugletEngine::StartJVM JNI_CreateJavaVM failed \n"));
|
||||||
} else {
|
} else {
|
||||||
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
||||||
("PlugletEngine::StartJVM jvm was started \n"));
|
("PlugletEngine::StartJVM jvm was started \n"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче