OS X: Как да променя пътя за търсене на плъгини на WebKit?

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

Приложението ми се свързва със стандартната системна рамка WebKit (то не включва частна рамка WebKit).

Въпреки това бих искал да пакетирам частен Flash плъгин в моя пакет приложения. Когато приложението ми се изпълнява, бих искал WebKit да предпочита частния Flash плъгин в моя пакет пред всеки друг Flash плъгин в системата.

Как мога да променя пътя за търсене на плъгини на WebKit, така че моето приложение да зареди личния ми Flash плъгин, включен в моето приложение?


person Todd Ditchendorf    schedule 10.09.2011    source източник


Отговори (1)


Не вярвам, че има публичен, документиран метод за това.

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

  1. ~/Библиотека/Интернет плъгини
  2. /Библиотека/Интернет плъгини
  3. Папка с добавки на App Bundle

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

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

- (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" да се зареди вместо това ;)

person danielpunkass    schedule 10.09.2011
comment
DitchenFlash звучи като това, което ClickToFlash трябваше да се нарича от самото начало. :) - person Dave DeLong; 10.09.2011