FireBreath根目錄/ ├── build/ # 編譯輸出目錄 │ ├── bin/ # 生成的插件 .dll/.so │ ├── boost/ # 編譯後的 Boost 庫 │ └── projects/ # 各平台工程文件 ├── cmake/ # CMake 腳本 ├── fbgen/ # Python 專案生成腳本 ├── gen_templates/ # 專案配置模板 ├── Installer/ # 安裝程序相關 ├── projects/ # 插件源碼目錄 │ ├── MPPReader/ │ └── OfdPlugin/ ├── src/ # FireBreath 核心源碼 └── tests/ # 測試用例
HandleEvent 建立消息映射。封裝 NPAPI 接口(NPN_*、NPP_*),實現瀏覽器與插件的雙向調用:
NPP_* 入口函數,轉發給 PluginCore。NPN_* 函數表,提供線程安全調用。基於模板元編程,自動將 C++ 方法/屬性暴露給 JavaScript:
項目特定邏輯:
PluginCore,註冊 MPP 文件解析接口。| 模式 | 應用場景 |
|---|---|
| 橋接模式 | PluginCore 與平台窗口分離 |
| 觀察者模式 | PluginEventSink/Source 事件分發 |
| 工廠模式 | fbgen 根據配置生成專案 |
| 適配器模式 | NpapiCore 適配 NPAPI C 接口 |
| 模板方法 | PluginAuto 自動綁定元編程 |
fbgen.py 生成平台工程(VS Solution、Xcodeproj、Makefile)。build/projects/ 編譯核心庫與插件 DLL/so。build/bin/,配合安裝程序部署。FireBreath 通過清晰的分層架構(核心、NPAPI 適配、自動化綁定、業務插件)實現跨瀏覽器、跨平台插件開發。理解其類圖與目錄結構,有助於二次開發、調試與性能優化。