[webkit-help] Exposing C++ objects to JavaScript through JavaScriptCore

newbie newbie.programming at yahoo.com
Fri Dec 21 06:12:33 PST 2012


newbie <newbie.programming at ...> writes:

> 
> 
> Brent Fulgham <bfulgham at ...> writes:
> 
> > 
> > 
> > Hi Rippel,
> > 
> > I wrote an example application under Windows that uses the JavaScriptCore 
API 
> to execute arbitrary JavaScript code. (See https://github.com/bfulgham/CallJS)
> > 
> > 
> > It's really not very complicated, and is also illustrated in the Inspector 
> code in the WebKit archive. E-mail if you have any problems.
> > 
> > -BrentSent from my iPad
> > 
> > On Jun 22, 2012, at 9:41 AM, rippel tippel <rippeltippel <at> gmail.com> 
> wrote:
> > 
> > 
> > Hi,I need to expose some C++ classes/methods to JavaScript 
> usingJavaScriptCore, so that they can be instantiated/called by aJavaScript 
> application.I found plenty of documentation and examples regarding v8 and 
> Node.js,but not much about JavaScriptCore API (apart from some old 
orincomplete 
> docs, e.g. [1], [2], and [3]).Can anyone point me to some documentation and/or 
> examples, and/oroutline the basic steps for doing it?mKind regards,Rippel[1] 
> 
http://article.gmane.org/gmane.os.opendarwin.webkit.user/1067/match=javascriptco
> re[2] 
> 
http://developer.apple.com/library/mac/#documentation/Carbon/Reference/WebKit_Ja
> vaScriptCore_Ref/[3] 
> 
http://developer.apple.com/library/mac/#samplecode/JSPong/Introduction/Intro.htm
> l_______________________________________________webkit-help mailing 
listwebkit-
> help-
> L0Ma0HqZfWbjwXJbYFA32Q <at> 
public.gmane.org.orghttp://lists.webkit.org/mailman/listi
> nfo.cgi/webkit-help
> > 
> > 
> 
> Hi Brent,
> 
> I am really a newbie to programming. I know a bit of c++ but have no knowledge 
> of JaveScriptCore.
> I am working on a webkit project where I have to call, the c++ object methods 
> from JavascriptCore. This is a linux based port. 
> 
> I looked at the CallJS code but as I said, I am a newbie, I could not 
understand 
> it properly.(Sorry for being a pain.)
> 
> I tried to build in Visual Studio 10(It converted the project before opening 
> it).
> I am able to build it but not run it. I get the error "This application has 
> failed to start as application configurtaion is incorrect".
> 
> So, I am unable to run it in debugger and what is going on.
> 
> Also, the thing that I haven't understood is that, is this for calling C++ 
> objects from JavaScriptcore or for calling Javascripts from C++.( I am not 
sure 
> if this makes any sense).
> 
> My question is suppose, I have a simple c++ class called temp and that has a 
> method called doTemp(), then how do I call that method from JS Core.
> 
> Class Temp
> {
> public:
> Temp();
> ~Temp();
> 
> int doTemp(int x, char *y, InsOfSomeClass& z);
> }
> Here z is instance of some other class defined in some other file
> 
> Is it like, we are registering C++ methods in callJsFunction() function and 
then 
> they can be called from JS Core when needed?
> 
> Thanks,
> newbie
> 
> _______________________________________________
> webkit-help mailing list
> webkit-help <at> lists.webkit.org
> http://lists.webkit.org/mailman/listinfo/webkit-help
> 


Hi,


Having dug deeper into it, I found JSBindings.cpp.
So, now I know CallJS works both ways, basically, we can call JS core code from 
C++ and vice-versa.
But, still I haven't understood how it is being done.

Do, we need to make bindings for every C++ function that we call from JS core, 
something like:

static JSValueRef console_setscript(JSContextRef ctx, JSObjectRef /*function*/, 
JSObjectRef thisObject, size_t /*argumentCount*/, const JSValueRef[] 
/*arguments*/, JSValueRef* /*exception*/);

What will be the best place to do it?

Is it possible for soemone to explain me the flow, how we are achieving this. 
I can see CallJSDlg::callJsFunction() fn. doing some kind of bindings but what 
exactly is happening and what is the flow.

Thanks,
newbie.





More information about the webkit-help mailing list