Полезная информация

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

№127-02-2009 16:37:50

alex171069
Участник
 
Группа: Members
Зарегистрирован: 16-01-2009
Сообщений: 26
UA: Firefox 3.0

регистрация XPCOM

Здравствуйте господа !
  Хотел бы поинтересоваться у знающих людей как правильно зарегистрировать компонент XPCOM в LINUX-е ?
  Написнный на С++ скомпиленный и вроде как работающий но вот при вызове из JavaScript выдает ошибку о ненахождении класса компонента .
   ВЫЗЫВАЕТСЯ ТАК
   try
    {
        // По Contract ID получаем доступ к модулю
        const cid = "@mydomain.com/XPCOMSample/MyComponent;1";
        obj = Components.classes[cid].createInstance();
         
       
        // Получаем указатель на объект нашего интерфейса
        obj = obj.QueryInterface(Components.interfaces.IMyComponent);
    }
    catch(err)
    {
         
      alert(err);
        return;
    }
                    РУГАЕТСЯ ТАК :   
                                    Error: Permission denied to get property XPCComponents.classes   ????!
                 
              То есть запускается catch(err)

Отсутствует

 

№227-02-2009 16:57:08

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: регистрация XPCOM

Возможно, методы компонента вызываются из непривилегированной страницы ?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№327-02-2009 19:56:18

alex171069
Участник
 
Группа: Members
Зарегистрирован: 16-01-2009
Сообщений: 26
UA: IE 7.0

Re: регистрация XPCOM

Я предпологаю что компанент не зарегистрирован просто .
Господа как зарегистрировать компанент состаящий из file.xpt  и file.so ?

Отсутствует

 

№427-02-2009 20:16:38

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: регистрация XPCOM

alex171069, я прежде чем предположить о непривилегированности кода проверил несколько кусочков кода.
Если фабрика класса незарегистрирована, а вызывающий код имеет нужные привилегии, то сообщение об ошибке имеет вид "Error: Components.classes['@abc;1'] is undefined"

В случае непривилегированного вызывающего кода (javascript:... в адресной строке), независимо от того, зарегистрирована компонента, или нет, имеем "Permission denied...".

Хотя, возможно что для написанной на C++ необходимо определять интерфейс nsISecurityCheckedComponent (см. http://weblogs.mozillazine.org/weirdal/archives/017211.html).
Но мне кажется, что это лишнее.

Ну и, на всякий случай: компонента в idl объявлена скриптабельной ?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№528-02-2009 16:49:39

XuTMAH
Участник
 
Группа: Members
Зарегистрирован: 23-05-2007
Сообщений: 32
UA: Foxware 0.0

Re: регистрация XPCOM

nsISecurityCheckedComponent нужен в том случае, если мы хотим вызывать методы этого компонента из непривилегированного кода. К задаче получения указателя на компонент этот интерфейс никак не относится.

Отсутствует

 

№602-03-2009 11:24:48

alex171069
Участник
 
Группа: Members
Зарегистрирован: 16-01-2009
Сообщений: 26
UA: Firefox 3.0

Re: регистрация XPCOM

В этой строке obj получает 0 ....!
obj = Components.classes[cid].createInstance()
   
   Тогда вопрос- Components.classes с чем связан и где искать ошибку которая связана с этим интерфейсом ?

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]