2012-06-13 40 views
0

加载我忙现有firebreath插件here改为使用使得通过OS和GPG二进制通话GPGME转换。Firebreath插件无法在Chrome

我设法得到的代码在X32系统上使用VS 2010的窗户,但加载插件在Chrome我不能在所有访问NPAPI代码后进行编译。即使简单的版本调用失败。

当加载插件我没有得到任何明显的错误,但使用sawbuck日志查看器用于镶边时,我得到下面的erorr消息。

.\renderer\webplugin_delegate_proxy.cc 347 PluginMsg_Init returned false 
..\plugins\npapi\webplugin_impl.cc 271 Couldn't initialize plug-in 

我试图用我的代码firebreath 1.4和1.6都没有工作。经过一些简单的调试,似乎使用gpgme提供的任何代码(不管它是否被调用)都会导致插件中断。

我通过执行以下得出这一结论。

  1. 创造了firebreath(1.4版和1.6)
  2. 添加gpgme.h头来gmailGPGAPI.cpp和改变没有别的除了添加必需的参考路径项目中的新项目。
  3. 生成该项目以创建DLL(这生成的dll罚款)。
  4. 与DLL替换现有DDL在我的项目在步骤2中,并与下面的代码段

插件=使用document.createElement(“对象”)进行测试; plugin.id ='插件';
plugin.type ='application/x-gmailtest';
document.body.appendChild(plugin);
console.log(“my plugin returned:”+ plugin.valid);
console.log(“my plugin returned:”+ plugin.version);

  1. 这将返回valid = true,并且该版本会返回我设置为的值。
  2. 然后我修改了gmailGPGAPI.cpp,现在通过在版本方法中调用gpgme_check_version(NULL)来返回gpg版本。我使用该方法是因为它可能是我可以测试的最简单的返回函数。
  3. 构建插件和复制的dll到浏览器扩展程序与步骤3-4。按照预期,插件再次生成。
  4. 加载插件并尝试执行第4步中的代码,此时它只是返回未定义的任何属性或方法,我尝试访问该插件。除了记录到sawbuck的错误外,没有任何错误输出到控制台或chrome中的任何其他位置。

我不知道在哪里看或尝试,因为我似乎无法得到一个可操作的错误工作。我还通过测试代码减少了一个新项目的一行更改,以便更容易地找到问题。

我应该注意回购代码在linux/OSX中正常生成并正确加载到chrome中,所以我知道在某些级别我的代码确实有效。

+0

永远不会*永远不会*在对象标签上设置mimetype,直到将其注入DOM之后。 – taxilian

+0

RC1140,我不确定你是否知道这个,但我的插件webpg-npapi(https://github.com/kylehuff/webpg-npapi/)被设计成一个到GnuPG的嵌入式浏览器界面 - 你的一些代码是基于我的其他插件 - gpgauth-npapi - 但是对于特定任务来说,它的范围更窄。我建议在你的扩展中使用webpg-npapi为GnuPG提供一个统一的接口。该插件是GPL,可在Windows,Linux和OSX上运行。 github.com上的我自己的扩展webpg-chrome的源代码可以用作访问webpg-npapi提供的方法的参考。 – kylehuff

+0

嗨凯尔我会再看一遍,但不能让你的插件轻松地在Windows上构建。现在我已经想通了,我会看看如果我可以使用您的插件作为替代方案的下降。我过去曾经用过你的代码作为参考,但问题是atm正在使用chrome加载插件,而不是插件中的代码。 – RC1140

回答

0

两种可能的路径:

  1. 你可能有一个DLL依赖不可用这使加载插件;如果你在它不能在chrome上工作的状态下运行regsvr32,它是否工作?
  2. 您的插件可能正在加载,然后崩溃。使用--plugin-startup-dialog启动chrome,然后当它弹出一个对话框,警告你一个插件即将被加载时,附加到该进程并查看进程是否崩溃。在这一点上,你也可以设置断点来试图找出它到底有多远。

在PluginConfig.cmake中仔细检查你的元数据;有时在某些领域有不寻常的人物会导致这样的问题。