Android浏览器的插件原理
来源:互联网 发布:知乎wifi刷不出来图片 编辑:程序博客网 时间:2024/06/03 19:20
1.浏览器与插件的交互
在webkit/Source/WebCore/bridge/npapi.h中定义了大量函数,其中有两类函数,分别以NPN_和NPP_开头(以下简称NPN函数和NPP函数)。在Android中规定,NPN函数由浏览器实现,提供给插件调用;NPP函数由插件实现,提供给浏览器调用。
例如:如果插件想利用浏览器分配一块内存空间就可利用NPN_MemAlloc函数,以下是此函数的定义:
void* NPN_MemAlloc(uint32_t size){ return malloc(size);}
此函数由浏览器实现,插件只需调用此函数,就可得到分配的内存指针。
2.插件的初始化
在FrameLoaderClientAndroid中createPlugin()函数负责创建插件,共分为两个过程:
1---在PluginDatabase中找到mimtype对应的插件,并创建此插件的PluginPackage;
2---创建此插件对应的PluginView
插件是如何注册到PluginDatabase中的可以看如下代码:
PluginDatabase* PluginDatabase::installedPlugins(bool populate){ static PluginDatabase* plugins = 0; if (!plugins) { plugins = new PluginDatabase; if (populate) { plugins->setPluginDirectories(PluginDatabase::defaultPluginDirectories()); plugins->refresh(); } } return plugins;}
3.PluginView是什么
上图是PluginView的继承关系图,可以看出PluginView继承自Widget。Widget实际上是ScrollView、ScrollBars和Plugin的基类,以它为基类的元素并不在webkit解析时生成的树结构中(dom树、render树等),但所有的Widget之间会相互连接为树的结构。
0 0
- Android浏览器的插件原理
- 浏览器的工作原理-android
- Android浏览器的插件渲染模式简介
- 浏览器插件屏蔽优酷广告的原理
- android uc浏览器的实现原理分析
- Android浏览器插件开发
- Android浏览器插件开发
- Android浏览器插件开发
- Android浏览器插件开发
- Android浏览器插件开发
- Android浏览器插件开发
- Android浏览器插件开发
- Android浏览器插件开发
- Android 浏览器插件开发
- Android浏览器插件开发
- Android浏览器插件开发
- android浏览器插件
- android 浏览器插件开发
- 一些我推荐的和想上的网络课程
- C/C++编译时的内存分配
- 第四章作业
- 多线程访问HashpMap产生死锁原因
- MFC API——》Create 、CreateEx
- Android浏览器的插件原理
- Maven学习(一)- 环境搭建
- 如何把单子做大
- Android开发-02-自己常用的一个get和post方式提交类的封装
- NYOJ 248 BUYING FEED
- 第五周作业
- 第五周作业
- Mysql Select语句详情
- 泛型 <Generic>