У меня есть элемент управления ActiveX, который отлично работает в Internet Explorer и программе ActiveX Control Test Container. Фактическое поведение элемента управления разделено на две части, где одна часть представляет собой набор ATL, который взаимодействует с OLE-хостом, а другая часть представляет собой реальный элемент, который просто получает обратные вызовы для присоединения окна, определения размера, рисования и мыши / клавиатуры. События.
Теперь я хочу написать эквивалент модуля ATL для плагина Firefox (в идеале в одном и том же двоичном файле, поэтому мне не нужно связывать два двоичных файла, но я могу быть гибким здесь). Я скачал и использовал Gecko SDK для создания компонента XPCOM, и это, кажется, работает, но я не могу понять, какие интерфейсы нужно реализовать, чтобы сделать компонент доступным как встроенный компонент UI в Firefox. Это похоже на потребности плагина Flash Player, плагина PDF Viewer, плагина QuickTime Player и т. Д. - javascript и XUL будет недостаточно.
Я искал примеры в Интернете, но единственные примеры, которые я могу найти, основаны на, казалось бы, древнем интерфейсе NS_PluginInitialize () / NS_NewPluginInstance (), который не является XPCOM (но имеет другое название?).
Есть ли способ достичь того же через XPCOM? Если так, то как? И существует ли вообще какая-либо обзорная документация (не только списки членов интерфейса) о том, как это сделать?