Skip to content
patwonder edited this page Dec 7, 2012 · 26 revisions

源码文档

首页 | 源码文档

源码结构

总体结构

Fire-IE/
  extension/             火狐扩展源码
    chrome/
       content/          Contents of your extension such as XUL and JavaScript files
       locale/           多语言支持
       skin/             图像、CSS等皮肤文件,用于控制界面显示
    components/          XPCOM components, 用于全局模块的初始化
    defaults/            Default Preferences, 扩展设置选项的默认值
    modules/             JavaScript模块目录, 保存jsm格式的JavaScript文件
    plugins/             NPAPI Plugin DLL文件
    chrome.manifest      Registers you content with the Chrome engine
    install.rdf          General information about your extension
  plugin/                NPAPI Plugin源码
  tools/                 扩展生成工具
    7za.exe              7z压缩包工具程序,用于生成zip格式压缩包
    buildxpi*.bat        xpi扩展文件生成脚本,是一个标准Windows批处理文件
  RuleMaker/             订阅规则MD5生成工具
  plugin.sln             NPAPI Plugin的Visual Studio 2010 Solution文件

如果想进一步了解火狐扩展的结构,即Fire-IE/extension目录的结构和功能,可以参考Structure of an installable bundleBuilding an extension

有关JavaScript模块的内容,即Fire-IE/extension/modules目录下的jsm文件,可以参考Using JavaScript Code Modules

扩展

未完成...

Plugin

解雇IE通过Plugin嵌入IE内核,编译后对应的文件为:

  1. extension/plugin/npfireie32.dll -- 32位火狐使用的plugin
  2. extension/plugin/npfireie64.dll -- 64位火狐使用的plugin

Plugin主要功能:IE内核页面显示、传送IE内核产生的Cookie、转发IE内核的各种消息和避免ActiveX控件产生DEP异常。

Plugin使用Visual Studio 2010编写, Solution文件为Fire-IE/plugin.sln, 源码位于Fire-IE/plugin目录,源码结构:

Fire-IE/plugin/
   np/                                           Plugin NPAPI底层接口, C语言实现
   Plugin/                                       用C++封装后的Plugin接口
      pluginbase.h, plugin.h和.cpp               Plugin实例类, 每个IE窗口会生成一个Plugin实现
      PluginGlobal.h和.cpp                       Plugin全局初始化类
      ScriptablePluginObject.h和.cpp             Plugin JavaScript接口类
      ScriptablePluginObjectBase.h和.cpp         Plugin JavaScript接口类基类
      comfix.h和.cpp                             用于修复某些控件加载时死锁的问题
   HttpMonitor/                                  IE控件Http请求拦截, 用于获取Cookie信息, 依赖PassthroughAPP/
   PassthroughAPP/                               PassthroughAPP用于Http请求拦截
   BrowserHook/                                  Hack IE控件的相关文件
      AtlDepHook.h和.cpp                         避免ActiveX控件产生DEP异常,依赖于MinHook/
      WindowMessageHook.h和.cpp                  转发IE控件窗口消息
      GestureHandler.h和.cpp, ~Impl.cpp          鼠标手势处理
   Utils/                                        工具类
   external/                                     外部库
   MinHook/                                      一个外部库,用于Hook系统API
   jsoncpp/                                      JSON工具,为外部项目
   abp/                                          Adblock Plus 实现类
   jscre/                                        JavaScript Compatible Regular Expressions,取自V8引擎
   re/                                           对jscre的OO封装
   regdom-libs/                                  获取URL对应注册域名的工具
   res/                                          资源文件
   test/                                         单元测试代码
   stdafx.h和.cpp                                Visual C++预编译文件
   PluginApp.h和.cpp                             MFC的CWinApp类
   IECtrl.h和.cpp                                IE控件类,由Visual Studio自动生成
   IEHostWindow.h和.cpp                          Plugin主窗口,MFC CDialog类, 用于容纳IE控件
   IEControlSite.h和.cpp                         IE控件高级定制
   PrefManager.h和.cpp                           管理扩展传过来的首选项
   UserMessage.h                                 IEHostWindow使用的用户消息定义

注: 有关ActiveX控件产生DEP异常的内核,请参考Applications Using Older ATL Components May Experience Conflicts With DEPBug 704038 - Allow ATL thunk emulation to work in Mozilla China's IEMode plugin

Clone this wiki locally