Thanks John:

I apologize for the lame subject line , just trying to get a response
(which sometimes can be tough), it won't happen again ;-).

Anwyay, okay I understand about the thread stuff now. . .thanks so much
for your help.

But as far as the wrappedJSObject stuff goes. .  I don't see how any of
the samples you pointed out apply.  (Of course I could just be missing
the point completely :)).  

The comments at
http://lxr.mozilla.org/seamonkey/source/js/src/xpconnect/idl/nsIXPConnec
t.idl#234

Seem to be more about a method of doing reflection on an XPCom component
that is written JS. (I.E so that you can enumerate the supposed methods
and properties of a particular component).  This is something that I was
unaware of and is useful, but doesn't really solve my problem.

So then I had a look at:
http://lxr.mozilla.org/seamonkey/source/modules/plugin/samples/4x-script
able/script-test.html#17

Which seemed to be more about what I was looking for.  In turn I changed
my code to look like this:

<script>
        function jsScriptObject(obj)
        {
            // implementation detail, to allow unwrapping.
            this.wrappedJSObject = obj;
        }
        jsScriptObject.prototype = {
            getProperty : function(name)
            {
                return new jsScriptObject(this.wrappedJSObject[name]);
            }
            ,
            setProperty : function(name, value)
            {
                this.wrappedJSObject[name] = value;
            }
            ,
            evaluate : function(expression)
            {
                return new jsScriptObject(eval(expression));
            }
            ,
            toString : function()
            {
                return this.wrappedJSObject.toString();
            }
            ,
            toNumber : function()
            {
                return this.wrappedJSObject.valueOf();
            }
            ,
            fromString : function(value)
            {
                return new jsScriptObject(value);
            }
            ,
            fromNumber : function(value)
            {
                return new jsScriptObject(value);
            }
         };

        function testNSISupportsArray()
        {
                netscape.security.PrivilegeManager
                        .enablePrivilege("UniversalXPConnect");
                                
                                
                const nsISupportsArray =
Components.interfaces.nsISupportsArray;
                                
                var x =
Components.classes["@mozilla.org/supports-array;1"]
                        .createInstance(nsISupportsArray);

                var t = new Object();
                t.sean = "snider";
                var y = new jsScriptObject(t);
                                
                x.AppendElement(y);
                                
                var z = x.GetElementAt(0);
                                
                //NOW I should be able to access the properties I set in

                //y (z) through the wrapper methods
(~z.getProperty("sean"))
                                
                alert(z); //still displays [xpconnect wrapper
nsISupports]!!
                alert(z.getProperty("sean")); //ERROR!!!!!!!!!
                /*
                Error: z.getProperty is not a function
                Source File:
file:///C:/Documents%20and%20Settings/ssnider/Desktop/test_bitwise.html
                Line: 68
                */

///***********AAAAAAAARRRRRRRRRRGH!!!!!!!!!!!!!!!!!!************//
        };      
</script>
 
If you look the code I still have the same problem.  Basically I am
trying to hand a JS Object to an XPCom component (regardles of how the
component is implemented in C or JS) and the return that same JS Object
back out.  

Again, perhaps I am just not doing something correctly, can you tell
what I am doing wrong?

And again thanx a lot of the help. . . 

Sean Snider
Software Engineer I
604-456-3429
[EMAIL PROTECTED] 

-----Original Message-----
From: John Bandhauer [mailto:[EMAIL PROTECTED]] 
Sent: Saturday, December 14, 2002 4:10 PM
To: [EMAIL PROTECTED]
Subject: Re: PLEASE HELP, PLEASE PRETTY PLEASE

[from a previous anwser to this question...]

Read closely the rambling comment at:
http://lxr.mozilla.org/seamonkey/source/js/src/xpconnect/idl/nsIXPConnec
t.idl#234

And look at a couple of examples in .js and .html files here:
http://lxr.mozilla.org/seamonkey/search?string=wrappedJSObject

BTW, When asling for help, it is more polite to post with a 
subject line that suggests what you want rather than how much you 
want it. I expected to see spam based on the subject line but 
looked anyway.

John.

Sean wrote:
> Can someone tell me how to unwrap a JSObject that I pass into
> XPCom/XPConnect
> 
> For example: 
> 
>
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
;
> 
> 
> const nsISupportsArray = Components.interfaces.nsISupportsArray; 
> 
> var x =
Components.classes["@mozilla.org/supports-array;1"].createInstance(nsISu
pportsArray);
> 
> var y = new Object(); 
> y.foo = "Hello XPConnect!"; 
> 
> x.Append(y); 
> 
> //NOW I WANT TO GET MY OBJECT BACK!!! 
> 
> var z = x.GetElementAt(0); 
> 
> alert(z) //displays [xpconnect wrapper nsISupports] 
> alert(z.foo) //undefined ?????????? WHY???????? 
> 
> Thanx 
> Sean 
> [EMAIL PROTECTED]



Reply via email to