FireFox 6:实现 nsIProtocolHandler

发布于 2024-12-01 18:34:54 字数 571 浏览 1 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你与昨日 2024-12-08 18:34:55

更新:好的,我明白了。请参阅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++.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文