Страницы: 1
Здравствуйте господа !
Хотел бы поинтересоваться у знающих людей как правильно зарегистрировать компонент 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)
Отсутствует
Я предпологаю что компанент не зарегистрирован просто .
Господа как зарегистрировать компанент состаящий из file.xpt и file.so ?
Отсутствует
alex171069, я прежде чем предположить о непривилегированности кода проверил несколько кусочков кода.
Если фабрика класса незарегистрирована, а вызывающий код имеет нужные привилегии, то сообщение об ошибке имеет вид "Error: Components.classes['@abc;1'] is undefined"
В случае непривилегированного вызывающего кода (javascript:... в адресной строке), независимо от того, зарегистрирована компонента, или нет, имеем "Permission denied...".
Хотя, возможно что для написанной на C++ необходимо определять интерфейс nsISecurityCheckedComponent (см. http://weblogs.mozillazine.org/weirdal/archives/017211.html).
Но мне кажется, что это лишнее.
Ну и, на всякий случай: компонента в idl объявлена скриптабельной ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
nsISecurityCheckedComponent нужен в том случае, если мы хотим вызывать методы этого компонента из непривилегированного кода. К задаче получения указателя на компонент этот интерфейс никак не относится.
Отсутствует
В этой строке obj получает 0 ....!
obj = Components.classes[cid].createInstance()
Тогда вопрос- Components.classes с чем связан и где искать ошибку которая связана с этим интерфейсом ?
Отсутствует
Страницы: 1