[oodisc] Mozilla compiling
Vadim Vinichenko
vnv на 14000.ru
Ср Сен 18 19:34:02 MSD 2002
Sergey Degtyaryov пишет:
> Доброго дня, Alexandr A. Alexandrov.
> Т.е. Вам надо:
> Сделать интерфейс, сделать функции, работающие с user_prefs
> посредством navigator.preference, зарегистрировать интерфейс в
> Mozilla. Учитывая то, что это уже есть для картинок, можно
> попробовать выдернуть, это самый простой вариант, но я не знаю
> откуда.
>
Я сейчас посмотрел интересу ради, что происходит с блокировкой картинок.
Смотрим comm.jar!content/cookie/cookieNavigatorOverlay.xul
Вот это, например, пункт меню, который блокирует изображения.
<menuitem id="BlockImages" label="&cookieBlockImagesCmd.label;"
accesskey="&cookieBlockImagesCmd.accesskey;"
msg="&cookieBlockImagesMsg.label;"
oncommand="CookieImageAction('imageBlock');"/>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
От него, как видно, ниточка тянется к функции CookieImageAction().
Функция делает свое дело через объект permissionmanager:
function CookieImageAction(action) {
...skip...
switch (action) {
...skip...
case "imageBlock":
permissionmanager.add(window._content.location, false,
IMAGEPERMISSION);
^^^^^^^^^^^^^^^^^
element = document.getElementById("BlockImages");
alert(element.getAttribute("msg"));
break;
...skip...
А сам объект берется вот откуда (выше в том же файле):
permissionmanager =
Components.classes["@mozilla.org/permissionmanager;1"]
.getService(Components.interfaces.nsIPermissionManager);
т.е. следы уходят в бинарник, который и записывает правило в файл, и
(видимо, где-то на уровне Gecko) в дальнейшем руководствуется содержимым
этого файла. Это вызов через XPCOM (Cross Platform Component Object
Model), интерфейс-обертку для доступа из XUL/js к "внешним" объектам.
Собственно, так Мозилла и работает - значительная часть действий с GUI
заканчивается дерганием кого-то через XPCOM. Но как
приготовить/модифицировать объект для такого вызова на стороне C++ и как
его потом правильно зарегистрировать, я, к сожалению, совсем не знаю.
--
С уважением,
Вадим
Подробная информация о списке рассылки Oo-discuss