FireFox 6:实现 nsIProtocolHandler
Firefox 6 中发生了一些变化,因此我无法再仅通过在诸如 @mozilla.org/network/protocol;1?name=myscheme< 之类的合同下注册来从附加组件添加我的 nsIProtocolHandler (和 nsIChannel)实现/代码>? 我检查了我使用的所有接口是否有任何更改(根据新的 UUID),但我没有收到对我在 NSModule 中列出的 getFactoryProc 的调用, 就像我以前做的那样。 我是否需要添加一个类别(例如
http-startup
之类的?)或者是 还有什么问题吗? (在 firefox 3.6 中工作的代码仍然这里我还没有承诺 新代码尚未...)
更新: 我已登录这是一个错误。
Has something changed in Firefox 6 so I can no longer add my nsIProtocolHandler (and nsIChannel) implementation from an add-on just by registering it under a contract like @mozilla.org/network/protocol;1?name=myscheme
?
I've checked all the interfaces I use if any changed (judging by a new
UUID), but I don't get a call to my getFactoryProc I list in NSModule,
like I did before.
Do I need to add a category (like http-startup
or something?) or is
something else wrong?
(the code that worked in firefox 3.6 is still here I haven't committed
the new code yet...)
Update: I've logged this as a bug.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
更新:好的,我明白了。请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=656331。基本上,您需要在模块中导出正确的 kVersion 值,否则库将在加载后立即卸载(即您正在观察的行为)。此行为是 Firefox 5 中的新行为。
如果您尚未更新到 Firefox 4,那么您需要更改注册 XPCOM 组件的方式。请参阅https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0。关于 JS 组件或二进制组件的部分是否相关取决于您的组件是用 JS 还是 C++ 实现的。
Update: Okay, I figured this out. See https://bugzilla.mozilla.org/show_bug.cgi?id=656331. Basically you need to export the right kVersion value in your module or the library will be unloaded immediately after it is loaded (i.e. the behavior you are observing). This behavior is new as of Firefox 5.
If you haven't updated to Firefox 4 yet then you need to change the way that you register your XPCOM component. See https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0. The sections on JS components or binary components are relevant depending on whether your component is implemented in JS or C++.