Chinaunix首页 | 论坛 | 博客
  • 博客访问: 669681
  • 博文数量: 137
  • 博客积分: 7000
  • 博客等级: 少将
  • 技术积分: 1335
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-23 15:18
文章分类

全部博文(137)

文章存档

2010年(2)

2009年(2)

2008年(2)

2007年(30)

2006年(99)

2005年(2)

我的朋友

分类:

2006-02-27 14:03:42

这里讨论的是firefox对plugin的实例化,以标记的插件为例,调用堆栈如下: 先是从 layout/generic/nsObjectFrame.cpp的nsObjectFrame::Reflow() ==>nsObjectFrame::InstantiatePlugin() ==>modules/plugin/base/src/nsPluginHostImpl.cpp的nsPluginHostImpl::InstantiateEmbededPlugin() ==>nsPluginHostImpl::SetUpPluginInstance() ==>nsPluginHostImpl::TrySetUpPluginInstance() ==>modules/plugin/base/src/ns4xPluginInstance.cpp的ns4xPluginInstance::Initialize() ==>ns4xPluginInstance::InitializePlugin() ==>NS_TRY_SAFE_CALL_RETURN(error, CallNPP_NewProc(fCallbacks->newp, (char *)mimetype, &fNPP, (PRUint16)mode, count, (char**)names, (char**)values, NULL), fLibrary,this); 此处接着应该调的是npp_gate.cpp的NPError NPP_New(),往后都是插件进行处理了。如果用的是mozilla的标准插件架构的话。 在以上几处设断点可以观察的很清楚,注意参数的传递。
阅读(1857) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~