LGTM

From: Crosswalk-dev [mailto:[email protected]] 
On Behalf Of Wu, Donna
Sent: Friday, April 17, 2015 6:38 PM
To: [email protected]
Subject: [Crosswalk-dev] Intent to Implement: JS stub auto generation for Java 
extension

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 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.

Affected component:
Crosswalk Android extension, document

Related feature:
JIRA feature: 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.
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
6. developer cannot modify generated JS stub
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