Мне было интересно, можно ли заглянуть внутрь входного потока, когда в Firefox используется протокол "chrome: //".Позвольте мне быть более ясным.Давайте возьмем следующую последовательность вызовов, например:
- nsXULDocument.cpp имеет метод nsXULDocument :: ResumeWalk ().
- Вызывает LoadScript () [вокруг строки: 3004].
- LoadScript () вызывает NS_NewStreamLoader [nsXULDocument.cpp, строка 3440].
- NS_NewStreamLoader вызывает NS_NewChannel () [nsNetUtil.h, строка: 593].
- NS_NewChannel () затем вызывает ioservice-> NewChannelFromURI () [nsNetUtil.h, строка: 226].
- NewChannelFromURI () вызывает NewChannelFromURIWithProxyFlags () [nsIOService.cpp line: 596].
- NewChannelFromURIWithProxyFlags () вызывает handler-> newChannel (), который разрешается во время выполнения, чтобы стать nsChromeProtocolHandler-> newChannel () [nsChromeProtocolHandler.cpp, строка: 182].
- Это, в свою очередь, вызывает ioServ-> NewChannelFromURI () [nsChromeProtocolHandler.cpp, строка: 196].
- Шаг 6 повторяется.
- Шаг 7 повторяется, однако в разное время он может загружать разные обработчики на основе протокола (chrome, jar, file и т. Д.)
Мое намерение описать вышеизложенноеПоследовательность вызовов должна была установить контекст для моей проблемы.Я хочу знать, когда используется протокол "chrome: //", и когда он используется, я хочу обработать поток ввода.Например, если Firefox загружает скрипт типа «chrome: // package / content / script.js», я хочу перехватить файл при доступе к нему с диска.После перехвата файла я могу изменить его содержимое или выгрузить содержимое файла в папку по своему выбору.
Итак, всякий раз, когда Firefox читает файл (используя метод, подобный fread (), возможно, я тоже хотел бы это знать), я хотел бы определить, был ли запрос на чтение из протокола Chrome или нети в этот момент я могу внести некоторые изменения в файл в зависимости от моих потребностей.Любая помощь по этому поводу?