Donna,

Thanks for your efforts to explain the design and update the design doc!

It LGTM.

Thanks,
-ningxin

> -----Original Message-----
> From: Wu, Donna
> Sent: Tuesday, May 12, 2015 3:00 PM
> To: Hu, Ningxin; [email protected]
> Subject: RE: [Crosswalk-dev] Intent to Implement: JS stub auto generation
> for Java extension
> 
> Hi, Ningxin:
>    I updated the doc according to your comments. Please help to review.
> Thanks very much!
> --Donna
> 
> -----Original Message-----
> From: Hu, Ningxin
> Sent: Friday, May 8, 2015 5:21 PM
> To: Wu, Donna; Hu, Ningxin; [email protected]
> Subject: RE: [Crosswalk-dev] Intent to Implement: JS stub auto generation
> for Java extension
> 
> Thanks, Donna. I believe this feature will make Java Extension developer's
> life easier.
> 
> I added some comments and questions into the design document. Please
> take a look. Thanks!
> 
> -ningxin
> 
> > -----Original Message-----
> > From: Wu, Donna
> > Sent: Wednesday, May 6, 2015 5:37 PM
> > To: Hu, Ningxin; [email protected]
> > Subject: RE: [Crosswalk-dev] Intent to Implement: JS stub auto
> > generation for Java extension
> >
> > Hi, Ningxin:
> >   Thanks for your questions. I considered them and discussed with team
> > members and it help me to make it more clear of this feature. I added
> > some materials on the design doc(
> > https://docs.google.com/a/intel.com/document/d/1lQZR-
> > MNCgM_9VYxmM46a3zPQoUeVXtQMVqKn2aCUwws/edit?usp=sharing ).
> >
> > And try to answer your questions here:
> > * What's the benefit of code generation at runtime?
> > - I think the main benefit is to simplify the extension developer, and
> > maybe can cut crosswalk size a little bit.
> >
> > * Where to find the design JS-Native messaging protocol?
> > - I try to write some info on this is the doc, and copy them here:
> > * Java to JavaScript
> >    * expose object/function/constructor to JavaScript, these
> > object/function/consturctor can has its own methods/properties
> >    * invoke JavaScript callbacks, including fulfilling JavaScript
> > Promise
> > * JavaScript to Java
> >    * invoke exposed native methods
> >    * access exposed native properties
> >    * create new instance on exposed constructors Extension developer
> > don't need to know message format, they even don't there is a message.
> > Just invoke provided interfaces to interact between Java and
> > JavaScript.
> >
> > Would it make debugging the JS code more difficult?
> > Yes, it may make difficult to debug the JS code. I considered that we
> > may expose interface to extension developer when the js-stub is
> > generated, for debug or add customized JavaScript code, such as:
> > XWalkExtensionClient.didGeneratedJsStub(String jsStub)
> >
> > * A function binding as example.
> > //Echo.java
> > public class Echo extends XWalkExtensionClient {
> >     @JsAPI
> >     public String prefix = "From Java: ";
> >
> >
> >     public Echo(String extensionName, XWalkExtensionContentClient
> > context) {
> >         super(extensionName, context);
> >     }
> >     @JsAPI
> >     public String echo(String msg) {
> >         return prefix + msg;
> >     }
> > }
> > // set extension namspce as "xwalk.Echo" in manifest.json
> >
> >
> > //app.js - use the extension in App
> > xwalk.Echo.echo("Welcome to Crosswalk!") // return "From Java: Welcome
> > to Crosswalk!"
> >
> >
> > xwalk.Echo.prefix = "My echo prefix";
> > xwalk.Echo.echo("Hello World!");
> > // return "My echo prefix: Hello World!"
> >
> >
> > Thanks!
> > --Donna
> > -----Original Message-----
> > From: Hu, Ningxin
> > Sent: Saturday, April 25, 2015 4:51 AM
> > To: Wu, Donna; [email protected]
> > Subject: RE: [Crosswalk-dev] Intent to Implement: JS stub auto
> > generation for Java extension
> >
> > Hi Donna,
> >
> > >
> > > Description:
> > > Currently, Crosswalk adopts a message passing
> > > <https://github.com/crosswalk-project/crosswalk-
> website/wiki/Message
> > > -
> > > passing-extensions> mechanism which is quite flexible. It provides
> > > passing-extensions> passage
> > > passing APIs without define any message format, the message format
> > > and meaning are depend on the developer. In this background,
> > > Crosswalk Android extension consists three parts:
> > >   Java source code: Standard Android/Java classes, packaged into a jar 
> > > file.
> > >   JavaScript wrapper: A JavaScript file which exposes the Java code
> > > to an app running on Crosswalk.
> > >   Configuration: A JSON file to wire up the JavaScript wrapper with
> > > the Java classes.
> > >
> > > Developers need to provide these parts above for an extension. But,
> > > during the build-in extensions developing process, we found that
> > > many duplicated work needed to implement most common interactions
> > between
> > > JavaScript wrappers and the native code(Java on Android), such as
> > > method calling, property accessing, new instance creating from a
> > > constructor. So, in the later design of Crosswalk-iOS,
> > > object-oriented extension APIs
> > > <https://github.com/crosswalk-project/crosswalk-ios/wiki/Extensions>
> > > were introduced, the JavaScript wrapper can be auto generated by
> > > wrapping the common interacting process between JavaScript wrapper
> > > and the native client.
> > > Now, we want to evolve this new easier mechanism in Crosswalk
> > > Android extensions.
> >
> > It would always be good to optimize the developer experience on
> Crosswalk.
> > Binding code auto generation sounds right to me. Thanks for sending
> > this intent.
> >
> > >
> > > Affected component:
> > > Crosswalk Android extension, document
> > >
> > > Related feature:
> > > JIRA feature: https://crosswalk-project.org/jira/browse/XWALK-3969
> > > <https://crosswalk-project.org/jira/browse/XWALK-3969>
> > >
> > > Target release:
> > > Crosswalk-15
> > >
> > > Implementation details:
> > > 1. change least at current interfaces in the code, Add generation
> > > logic on XWalkExtensionClient.getJsApi at Java level JS stub is
> > > generated during Java extensions' registration process.
> >
> > What's the benefit of code generation at runtime?
> >
> > > 2. only Java extension will benefit on this feature 3. Will use Java
> > > annotation to expose native objects to JS 4. special JS helper will
> > > be injected to some namespace in each JS context to wrapper the
> > > message poster 5. limited message format between JS and native
> >
> > It sounds like you are going to define the JS-Native messaging protocol.
> > Where to find the design?
> >
> > > 6. developer cannot modify generated JS stub
> >
> > Would it make debugging the JS code more difficult?
> >
> > Can you elaborate more about your design? Say, use a function binding
> > as example.
> >
> > Thanks,
> > -ningxin
> >
> > > 7. coexists with current mechanism, it means JS stub generation
> > > feature is not forcible but a choice, and there is no need to change
> > > existing extensions.
> > >
> > > Regards!
> > > Donna Wu
> > >
_______________________________________________
Crosswalk-dev mailing list
[email protected]
https://lists.crosswalk-project.org/mailman/listinfo/crosswalk-dev

Reply via email to