2012-06-13 43 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中仔細檢查你的元數據;有時在某些領域有不尋常的人物會導致這樣的問題。