Наше приложение использует встроенный xulrunner. Мы перезаписываем PromptService по умолчанию, чтобы предоставить пользовательские диалоги для предупреждений, подсказок и т. Д.
componentRegistrar.RegisterFactory (PROMPTSERVICE_CID, aClassName, aContractID, MyPromptServiceFactory);
, где
PROMPTSERVICE_CID is "a2112d6a-0e28-421f-b46a-25c0b308cbd0"
CONTRACT_ID is "@mozilla.org/embedcomp/prompt-service;1"
При использовании версий XULRunner 1.9. * Это работает отлично, и вызов приходит к MyPromptSerivceFactory
. Но это не работает на более новых версиях XULRunner (> = 4.0)
Я изменил PROMPTSERVICE_CID
на "7ad1b327-6dfa-46ec-9234-f2a620ea7e00"
(скопировано с nsPrompter.manifest
). При регистрации завода я получаю ошибку NS_ERROR_FACTORY_EXISTS
.
Если я продолжу использовать старый PROMPTSERVICE_CID
, тогда nsIPromptService2
не будет использоваться вместо nsIWindowCreator2.CreateChromeWindow2
используется для отображения предупреждений и подсказок.
Я гуглил по этому вопросу, но не смог найти решение, чтобы либо исправить ошибку NS_ERROR_FACTORY_EXISTS
, либо использовать MyPromptServiceFactory
.
Любая помощь / предложения?