Hi
Thanks!
Let's go another way.
I have XMLHttpRequest XPCOM component in
..\mozilla\extensions\xmlextras\base\src\nsXMLHttpRequest.*

I can create this object as
var obj = new XMLHttpRequest()
from the <script> section.
I would like to add one more possibility to create this class
var obj = new XMLHttpRequest("something here")
The question is - how to do it?
My wayis to try to use IXPCSriptable interface.
but I don't know how!
I didn't find any good examle.

Thanks

Regards,
Denis



"John Bandhauer" <[EMAIL PROTECTED]> ???????/???????? ? ???????? 
?????????: news:[EMAIL PROTECTED]
> It is not really that clear to me from your question exactly what it is 
> that you are asking.
>
> nsDOMClassInfo is pretty much an internal DOM class. If you want to mess 
> around with that stuff you should probably be talking to people on the DOM 
> newsgroup.
>
> The way to get xpconnect to call your Construct method on an 
> implementation of nsIXPCScriptable is to OR the 
> nsIXPCScriptable::WANT_CONSTRUCT with the other flags returned by your 
> GetScriptableFlags method.
>
> If you were not messing with the DOM stuff I'd suggest you use the macros 
> in xpc_map_end.h to do this for you. There are plenty of examples of that. 
> But, the DOM code has it's own way of managing the nsIXPCScriptable stuff.
>
> And, FWIW, the most simple and generic way to expose a constructor method 
> into JS is to execute a one line JS script using Components.Constructor to 
> build the constructor method for you.
>
> John.
>
> DEIV wrote:
>> Thanks for your comments.
>>
>> It looks like I was too busy with my question because now I have a 
>> problem
>> how to make JS-engine invoke method IXPCScriptable::Construct().
>> Actually I have helper class
>> class nsIntArraySH : public nsDOMClassInfo
>> with public method
>> NS_IMETHODIMP
>> Construct(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
>>                           JSObject *obj, PRUint32 argc, jsval *argv,
>>                           jsval *vp, PRBool *_retval)
>>
>> The question is what is the right way to register this one?
>>
>> Thanks
>>
>> "John Bandhauer" <[EMAIL PROTECTED]> ???????/???????? ? 
>> ???????? ?????????: news:[EMAIL PROTECTED]
>>> DEIV wrote:
>>>> there are some difficulties with using IXPCScriptable::Construct()...
>>>> I have a XPCOM class with constructor with one parameter. I would like
>>>> to write in my java scpirt something like this
>>>> var obj = new MyXPCOM(122);
>>>>
>>>> how I should implement this function to provide this functionality?
>>>>
>>>>   NS_IMETHOD Construct(nsIXPConnectWrappedNative *wrapper, JSContext *
>>>> cx, JSObject * obj, PRUint32 argc, jsval * argv, jsval * vp, PRBool
>>>> *_retval)
>>>> {
>>>> ???
>>>>
>>>> return NS_OK;
>>>> }
>>>>
>>> Did you figure out how to do this?
>>>
>>> There are a few instances of this that can be found in the mozilla tree 
>>> using lxr.mozilla.org.
>>>
>>> You might look at:
>>> http://lxr.mozilla.org/seamonkey/source/js/src/xpconnect/src/xpccomponents.cpp#1207
>>>
>>> This is nsXPCComponents_Exception::Construct. It is part of the 
>>> internals of xpconnect. So, it has some aspects that would not make 
>>> sense for other components. But, it is something to look at.
>>>
>>> Basically, you: convert your JS argument(s). create your C++ object with 
>>> whatever constructor or init method you need to call, use xpconnect to 
>>> create a wrapper, get the JSObject* of the wrapper, return the 
>>> JSObject*.
>>>
>>> That code I referenced has things you would not want...
>>>
>>> The " XPCCallContext" is an xpconnect internal thing. you would not need 
>>> it.
>>>
>>> You wouldn't need the nsIXPCSecurityManager either.
>>>
>>> You can get a pointer to the nsIXPConnect object used for making the new 
>>> wrapper from the 'XPConnect' attribute on the wrapper passed into the 
>>> constructor.
>>>
>>> As I said, there are other examples you might look at. I believe the DOM 
>>> code uses IXPCScriptable::Construct too.
>>>
>>> John.
>>>
>>>> Thanks
>>>>
>> 

_______________________________________________
dev-tech-xpcom mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-xpcom

Reply via email to