NPAPI插件没有显示在Google Chrome中的about:plugins中

时间:2012-04-08 13:09:34

标签: npapi

我已经在本论坛中讨论了有关此问题的问题,但我没有找到与我所面临的问题类型相关的任何疑问。我已经编写了一个NPAPI插件,它可以与GtkLauncher(随webkit一起提供)和firefox一起使用,但是使用google-chrome(18.0.1025.151),该插件甚至没有显示在about:plugins中。我在Ubuntu 10.10上运行。

当我在google-chrome中加载插件时,在浏览器中我无法加载插件错误,但控制台上没有显示任何内容。我怀疑我的NP_Initialize函数是否被调用。

这是NP_Initialize代码:

-------------------------------
NPError OSCALL
NP_Initialize(NPNetscapeFuncs *npnf
#if !defined(_WINDOWS) && !defined(WEBKIT_DARWIN_SDK) 
    , NPPluginFuncs *nppfuncs)
#else
)
#endif

{
MEDIA_DEBUG_PRINT("\nwcf Media plugin: NP_Initialize");
    if(npnf == NULL)
        return NPERR_INVALID_FUNCTABLE_ERROR;
    if(HIBYTE(npnf->version) > NP_VERSION_MAJOR)
        return NPERR_INCOMPATIBLE_VERSION_ERROR;

    npnfuncs = npnf;

    #if !defined(_WINDOWS) && !defined(WEBKIT_DARWIN_SDK)
        NP_GetEntryPoints(nppfuncs);                            
    #endif

    return NPERR_NO_ERROR;

}

NPError OSCALL
NP_GetEntryPoints(NPPluginFuncs *nppfuncs) 
{

    MEDIA_DEBUG_PRINT("\nwcf Media plugin: NP_GetEntryPoints"); 
    nppfuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR; 
    nppfuncs->newp = nevv; 
    nppfuncs->destroy = destroy; 
    nppfuncs->getvalue = getValue; 
    nppfuncs->event = handleEvent; 
    nppfuncs->setwindow = setWindow; 

    return NPERR_NO_ERROR;
}

我知道有一个用于跨浏览器开发的Firebreath框架,我计划使用它,但目前我需要让我的插件在chrome上运行。

有人可以帮我解决我的问题吗?

谢谢和问候, Souvik

2 个答案:

答案 0 :(得分:3)

Chrome往往对事情的启动有点挑剔。我在这里看不到任何可能导致您出现问题的内容,但Chrome因拒绝不符合预期的插件而臭名昭着。最有可能的问题是你的问题;你说你怀疑你的NP_Initialize被调用,如果我是你,我会验证你。让它写入/ tmp /中的文件以确保它。

此外,您尚未提供任何其他入口点,例如NP_GetPluginVersion或NP_GetMimeDescription。这些也是Linux插件所需要的,很可能会对这样的问题负责。如需参考,请查看FireBreath's X11 entrypoint file

最后,有可能你安装插件的方式是由mozilla而不是chrome找到的;你是怎么安装它的?

答案 1 :(得分:2)

如果你的插件没有显示在chrome:// plugins中,那么它在初始插件扫描期间失败了。尝试使用--debug-plugin-loading标志运行,该标志应该在注册插件失败时为您提供日志声明。