home *** CD-ROM | disk | FTP | other *** search
- package netscape.javascript;
-
- import java.applet.Applet;
- import opera.EcmaScriptObject;
- import opera.PluginContext;
-
- public final class JSObject {
- private EcmaScriptObject ecma_object;
- private Object result;
- private Object result_mutex = new Object();
-
- private JSObject(int var1, int var2) {
- this.ecma_object = EcmaScriptObject.getObject(var1, var2);
- if (this.ecma_object != null) {
- this.ecma_object.ref();
- }
-
- }
-
- public Object call(String var1, Object[] var2) throws JSException {
- try {
- JSObject var3 = (JSObject)this.getMember(var1);
- Object var4 = this.result_mutex;
- synchronized(var4) {
- Object var6;
- synchronized(this) {
- if (var3 == null) {
- throw new JSException("Method " + var1 + " not found.");
- }
-
- if (this.startCall(var3, var2)) {
- this.wait();
- if (this.result instanceof JSException) {
- throw (JSException)this.result;
- }
- } else {
- this.result = null;
- }
-
- var6 = this.result;
- }
-
- return var6;
- }
- } catch (InterruptedException var11) {
- return null;
- }
- }
-
- private native boolean startCall(JSObject var1, Object[] var2);
-
- public boolean equals(Object var1) {
- return var1 instanceof JSObject && ((JSObject)var1).ecma_object.equals(this.ecma_object);
- }
-
- public Object eval(String var1) throws JSException {
- try {
- Object var2 = this.result_mutex;
- synchronized(var2) {
- Object var4;
- synchronized(this) {
- if (this.startEval(var1)) {
- this.wait();
- if (this.result instanceof JSException) {
- throw (JSException)this.result;
- }
- } else {
- this.result = null;
- }
-
- var4 = this.result;
- }
-
- return var4;
- }
- } catch (InterruptedException var9) {
- return null;
- }
- }
-
- private native boolean startEval(String var1);
-
- public static JSObject getWindow(Applet var0) throws JSException {
- if (var0.getParameter("mayscript") == null) {
- throw new JSException("Applet not allowed to access javascript.");
- } else {
- PluginContext var1 = (PluginContext)var0.getAppletContext();
- if (var1 != null) {
- int var2 = var1.getJSWindow();
- int var3 = var1.getESRuntime();
- if (var2 != 0 && var3 != 0) {
- return new JSObject(var2, var3);
- }
- }
-
- return null;
- }
- }
-
- public Object getMember(String var1) {
- try {
- Object var2 = this.result_mutex;
- synchronized(var2) {
- Object var4;
- synchronized(this) {
- if (this.getMemberN(var1)) {
- this.wait();
- } else {
- this.result = null;
- }
-
- var4 = this.result;
- }
-
- return var4;
- }
- } catch (InterruptedException var9) {
- return null;
- }
- }
-
- private native boolean getMemberN(String var1);
-
- public void setMember(String var1, Object var2) {
- try {
- Object var3 = this.result_mutex;
- synchronized(var3) {
- synchronized(this) {
- if (this.setMemberN(var1, var2)) {
- this.wait();
- }
- }
- }
- } catch (InterruptedException var9) {
- }
-
- }
-
- private native boolean setMemberN(String var1, Object var2);
-
- public void removeMember(String var1) {
- try {
- Object var2 = this.result_mutex;
- synchronized(var2) {
- synchronized(this) {
- if (this.removeMemberN(var1)) {
- this.wait();
- }
- }
- }
- } catch (InterruptedException var8) {
- }
-
- }
-
- private native boolean removeMemberN(String var1);
-
- public Object getSlot(int var1) {
- try {
- Object var2 = this.result_mutex;
- synchronized(var2) {
- Object var4;
- synchronized(this) {
- if (this.getSlotN(var1)) {
- this.wait();
- } else {
- this.result = null;
- }
-
- var4 = this.result;
- }
-
- return var4;
- }
- } catch (InterruptedException var9) {
- return null;
- }
- }
-
- private native boolean getSlotN(int var1);
-
- public void setSlot(int var1, Object var2) {
- try {
- Object var3 = this.result_mutex;
- synchronized(var3) {
- synchronized(this) {
- if (this.setSlotN(var1, var2)) {
- this.wait();
- }
- }
- }
- } catch (InterruptedException var9) {
- }
-
- }
-
- private native boolean setSlotN(int var1, Object var2);
-
- public String toString() {
- try {
- Object var1 = this.eval("this.toString()");
- return var1 != null && var1 instanceof String ? (String)var1 : null;
- } catch (JSException var2) {
- return null;
- }
- }
-
- protected void finalize() {
- try {
- if (this.ecma_object != null) {
- this.ecma_object.unref();
- }
-
- super.finalize();
- } catch (Throwable var2) {
- }
-
- }
-
- private void setResult(Object var1) {
- synchronized(this) {
- this.result = var1;
- this.notify();
- }
- }
-
- private void setExceptionResult() {
- this.result = new JSException("JavaScript exception");
- }
-
- private int getESObjectPtr() {
- return this.ecma_object != null ? this.ecma_object.getESObjectPtr() : 0;
- }
-
- private int getESRuntimePtr() {
- return this.ecma_object != null ? this.ecma_object.getESRuntimePtr() : 0;
- }
- }
-