Я занят преобразованием существующего плагина firebreath here, чтобы использовать gpgme вместо вызовов через ОС и двоичный файл gpg.Плагин Firebreath на окнах не загружается в chrome
Мне удалось получить код для компиляции в Windows с использованием VS 2010 в системе x32, но после загрузки плагина на хром я вообще не могу получить доступ к коду npapi. Даже простые вызовы версий терпят неудачу.
При загрузке плагина я не вижу видимых ошибок, но при использовании программы просмотра журнальных файлов для хром я получаю сообщения 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 (независимо от того, вызвано это или нет), вызывает разрыв плагина.
Я пришел к такому выводу, выполнив следующее.
- создал новый проект с firebreath (версии 1.4 и 1.6)
- Добавить заголовки gpgme.h в gmailGPGAPI.cpp и не изменилось ничего другого в сторону от добавления требуемых ссылочные пути к проекту.
- Создайте проект для создания dll (это генерирует dll fine).
- Заменить существующий DDL в моем проекте с DLL в шаге 2 и протестировать его со следующим фрагментом кода
плагин = document.createElement («объект»); plugin.id = 'plugin';
plugin.type = 'application/x-gmailtest';
document.body.appendChild (плагин);
console.log ("мой плагин вернулся:" + plugin.valid);
console.log ("мой плагин вернулся:" + plugin.version);
- Это возвращает действительный = истина и версия возвращает то, что когда-нибудь я установить его.
- Затем я изменил gmailGPGAPI.cpp, чтобы вернуть версию gpg, вызвав gpgme_check_version (NULL) в методе версии. Я использовал этот метод, потому что его, вероятно, самая простая возвращаемая функция, с которой я мог бы проверить.
- Создайте плагин и скопируйте dll в chrome extension, как на шаге 3-4. Плагин строит отлично, как и ожидалось.
- Загрузите плагин и попробуйте выполнить код на шаге 4, после чего он теперь просто возвращает undefined для любого свойства или метода, к которому я пытаюсь получить доступ к плагину. Ошибки не печатаются на консоли или где-либо еще в хроме, за исключением ошибки, зарегистрированной в пиле.
У меня нет ни малейшего представления, где искать или что попробовать, так как я не могу заставить работать с ошибкой. Я также уменьшил тестовый код до такой степени, что его новый проект с одной строкой изменился, чтобы облегчить задачу поиска.
Следует отметить, что код в репо строит отлично в linux/OSX и загружается в хром правильно, поэтому я знаю, что на некотором уровне мой код действительно работает.
Никогда не * никогда * не устанавливайте mimetype на теге объекта, пока вы не вводите его в DOM. – taxilian
RC1140, я не уверен, знаете ли вы об этом или нет, но мой плагин webpg-npapi (https://github.com/kylehuff/webpg-npapi/) предназначен для использования в браузере с интерфейсом GnuPG - часть вашего кода основана на моем другом плагине - gpgauth-npapi, но у него более узкая область для конкретной задачи. Я бы предложил использовать webpg-npapi в ваших расширениях, чтобы обеспечить единый интерфейс для GnuPG. Плагин GPL и работает в Windows, Linux и OSX. Источник моего собственного расширения webpg-chrome, найденный на github.com, может использоваться как ссылка для доступа к методам, предоставляемым webpg-npapi. – kylehuff
Привет, Кайл. Я еще раз посмотрю на него, но не смог заставить ваш плагин легко создавать окна. Теперь, когда я понял это, я увижу, могу ли я использовать ваш плагин в качестве альтернативы. Я использовал ваш код в прошлом как ссылку, но проблема atm заставляет хром загружать плагин, а не код в плагине. – RC1140