android 4.0.1 webkit 基于JSC的JS 扩展
来源:互联网 发布:js button 显示隐藏 编辑:程序博客网 时间:2024/06/06 07:07
一. 扩展单对象
要在页面上使用我们自定义的SingleObject对象。
需要作如下修改:
webkit/Source/WebCore/Android.mk
SingleObject.h
SingleObject.cpp
以上两个文件是SingleObject在webkit中的具体实现,修改webkit的Android.mk把实现文件编译进webkit.
webkit/Source/WebCore/Android.derived.jscbindings.mk
webkit/Source/WebCore/page/DOMWindow.idl
SingleObject.idl
webkit 的对象暴露给JSC的方式是定义一个idl文件,webkit 通过专门的perl 脚本解析这个idl文件生成对应的JSObject.h和JSObject.cpp.
JSC处理的对象就是生成的JSObject。JSObject是webkit中实际实现类的影子类
所以我们需要实现SingleObject.idl 在这个idl文件中把需要提供给页面使用的属性和接口添加进去。
调用perl脚本解析idl生成JSObject的过程在Android.derived.jscbindings.mk中。
解析DOMWindow.idl生成的JSDOMWindow是整个DOM的入口,SingleObject是单对象不需要提供Constructor,以DOMWindow的只读属性方式出现,所以我们需要在DOMWindow.idl中添加SingleObject.
webkit/Source/WebCore/page/DOMWindow.h
webkit/Source/WebCore/page/DOMWindow.cpp
DOMWindow.idl中将SingleObject声明成了DOMWindow的只读属性,所以扩展对象需要在DOMWindow.h中声明,创建过程在DOMWindow.cpp中。
二. 扩展多对象
要在页面上使用new 操作符创建自定义的MultiObject对象。
需要作如下修改。
webkit/Source/WebCore/Android.mk
webkit/Source/WebCore/ccdt/media/MultiObject.cpp
webkit/Source/WebCore/ccdt/media/MultiObject.h
以上两个文件是MultiObject在webkit中的具体实现,修改webkit的Android.mk把实现文件编译进webkit.
webkit/Source/WebCore/Android.derived.jscbindings.mk
webkit/Source/WebCore/page/DOMWindow.idl
MultiObject.idl
webkit 的对象暴露给JSC的方式是定义一个idl文件,webkit 通过专门的perl 脚本解析这个idl文件生成对应的JSObject.h和JSObject.cpp.
JSC处理的对象就是生成的JSObject。JSObject是webkit中实际实现类的影子类
所以我们需要实现SingleObject.idl 在这个idl文件中把需要提供给页面使用的属性和接口添加进去。
调用perl脚本解析idl生成JSObject的过程在Android.derived.jscbindings.mk中。
解析DOMWindow.idl生成的JSDOMWindow是整个DOM的入口,SingleObject是多对象需要提供Constructor,所以我们需要在DOMWindow.idl中添加SingleObject.
DOMWindow.idl中声明MultiObject的方式的不同决定了JSMultiObjectConstructor来源的不同。
1. attribute MultiObjectContructor MultiObject;
这种声明方式表示使用的是perl 解析MultiObject.idl自动生成的JSMultiObjectConstructor。
2. attribute [JSCCustomGetter] MultiObject;
这种声明方式表示使用的是我们自定义的JSMultiObjectConstructor。
采用第二种声明方式,表明我们要自己实现JSMultiObjectConstructor。
所以需要额外改动如下文件:
webkit/Source/WebCore/Android.jscbindings.mk
webkit/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
JSMultiObjectConstructor.cpp
JSDOMWindowCustom.cpp中添加如下内容:
JSValue JSDOMWindow::MultiObject(ExecState* exec) const
{
}
JSMultiObjectConstructor.cpp是JSMultiObjectContructor的具体实现文件,在webkit/Source/WebCore/Android.jscbindings.mk中添加JSMultiObjectConstructor.cpp将其编译到webkit中。
另外,在MultiObject.idl中也可以指定MultiObject的属性实现是采用perl脚本自动生成,还是我们自定义。
1.readyonly attribute propertyName;
2. attribute [Reflect] propertyName;
这两种方式表明是采用JSMultiObject.cpp中自动生成的方法实现属性。
3.attribute [Custom] propertyName;
这种声明方式表明是采用我们自定义的方法。
所以需要额外改动如下文件:
webkit/Source/WebCore/Android.jscbindings.mk
JSMultiObjectCustom.cpp
JSMultiObjectCustom.cpp是我们自定义方法的具体实现文件,在webkit/Source/WebCore/Android.jscbindings.mk中添加JSMultiObjectCustom.cpp将其编译到webkit中。
- android 4.0.1 webkit 基于JSC的JS 扩展
- 新版本的webkit 针对jsc的js扩展方式
- webKit之扩展JSC的三种方法
- WebKit之jsc和webcore的交互
- 基于WebKit浏览器的本地扩展方法
- 基于WebKit浏览器的本地扩展方法
- Webkit之JSC Binding解析
- js 加密 为jsc
- iScroll.js 用法参考【基于webkit的下拉刷新】
- 基于Qt的Webkit
- 【WebKit】---WebKit的CSS扩展(WebKit是私有属性)
- webkit开发之JS扩展篇
- Webkit JS扩展对象 多实例实现
- webkit 扩展JS(添加新类)
- node-webkit node.js c++扩展
- WebKit的JavaScript对象扩展
- android 上 webkit js 扩展之全局本地对象实现步骤
- android 上 webkit js 本地扩展之全局本地对象实现步骤
- 如何使用iOS手势UIGestureRecognizer
- DML与DDL区别
- C++,C#,JAVA继承比较
- SQL Server分页语句
- 删除、创建oracle的监听服务
- android 4.0.1 webkit 基于JSC的JS 扩展
- 给定日期,判断是星期几
- DHCP:开发板上动态获取ip的2种方法
- children of the candy corn (P3083
- iphone之打开pdf、doc、xls文件用UIWebView
- 【linux】 sort and uniq
- 什么是JavaBean
- Android Service启动Activity
- Limu:JavaScript的那些书