OS X: Как изменить путь поиска плагинов в WebKit? - PullRequest
4 голосов
/ 10 сентября 2011

У меня есть разработанное браузерное приложение Mac Desktop, которое использует WebKit для рендеринга веб-контента.

Мое приложение ссылается на стандартную системную инфраструктуру WebKit (оно не связывает частную инфраструктуру WebKit).

Тем не менее, я хотел бы добавить частный плагин Flash в свой комплект приложений. Когда мое приложение запускается, я бы хотел, чтобы WebKit предпочел закрытый плагин Flash из моего пакета, а не любой другой плагин Flash в системе.

Как я могу изменить путь поиска плагинов в WebKit так, чтобы мое приложение загружало мой личный плагин Flash, связанный с моим приложением?

1 Ответ

3 голосов
/ 10 сентября 2011

Я не верю, что существует публичный, документированный метод для этого.

Взгляните на исходный код WebView, в частности на исходный файл "WebPluginDatabase.mm", чтобы понятьдля того, как оцениваются пути плагинов и какой приоритет отдается плагинам, найденным в разных местах.По умолчанию кажется, что путь поиска идет в следующем порядке:

  1. ~ / Библиотеки / Интернет-плагины
  2. / Библиотека / Интернет-плагины
  3. ПриложениеПапка плагинов пакета

Таким образом, любой плагин, включенный в комплект вашего приложения, по умолчанию будет заменен версией, найденной в папке пользователя или системной библиотеки.

Если использование недокументированного SPI является опцией, я вижу, что в WebView.mm есть метод, который по существу переопределяет список путей подключаемых модулей, обращаясь к соответствующей конфигурации в синглтоне WebPluginDatabase:

- (void)_setAdditionalWebPlugInPaths:(NSArray *)newPaths
{
    if (!_private->pluginDatabase)
        _private->pluginDatabase = [[WebPluginDatabase alloc] init];

    [_private->pluginDatabase setPlugInPaths:newPaths];
    [_private->pluginDatabase refresh];
}

По темеВ решениях на основе SPI другой вопрос о переполнении стека содержит ответ, в котором описывается переопределение частного метода WebView для предоставления определенного подключаемого модуля на основе типа MIME:

Запрет Flash в Cocoa WebView

Это дает мне еще одну идею, которая может подойти для ваших целей.Поскольку вы отвечаете за весь процесс просмотра, вы можете рассмотреть возможность изменения всего HTML-кода, представленного в вашем браузере, сканирования и изменения любого содержимого, обычно связанного с плагином Flash, и изменения его для вызова пользовательского типа MIME.или что-то еще, чтобы вместо этого загрузить «DitchenFlash»;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...