Вы можете зарегистрировать компонент, который реализует интерфейс nsIRUIContentListener
, с помощью менеджера категорий.Категория external-uricontentlisteners
.Запись - это MIME-тип, который вы хотите зарегистрировать.Значение - это идентификатор контракта вашего компонента.
В качестве альтернативы можно зарегистрировать компонент напрямую с помощью прослушивателя URI, но это полезно только в том случае, если вы уже загружаете свой компонент при запуске.
Когда вашпользователь нажимает на ссылку на документ, обслуживаемый этим типом MIME (и нет установленных плагинов, которые уже обрабатывают этот тип), после чего ваш компонент будет создан.Будет вызван один из методов isPreferred
или canHandleContent
;Вы должны убедиться, что тип контента соответствует желаемому, а затем вернуть true.Затем будет вызван ваш метод doContent
, и вы можете использовать его, чтобы открыть окно для обработки запроса.Вы должны возвратить true, чтобы указать, что вы фактически не предоставляете контент для существующего окна.
РЕДАКТИРОВАТЬ:
Если вы хотите прочитать документ и вывести другой документ на месте, вам нужновместо этого зарегистрируйте преобразователь потока.Это делается путем регистрации компонента, реализующего интерфейсную иерархию nsIStreamConverter
с идентификатором контракта @mozilla.org/streamconv;1?from=<MIME>&to=<MIME>
.Я не уверен на 100%, но вам, возможно, придется установить to
равным */*
, и тогда ваш метод GetContentType
должен вернуть фактический тип контента, который вы предоставляете.Ваш метод asyncConvertData
будет передан слушателю потока назначения.Данные будут доступны вам через базовый интерфейс nsIStreamListener
, и затем вы сможете сделать преобразованные данные доступными для потока назначения.