Frederik Vanderstraeten schreef:
I want to send a message from C++ to Javascript. I have read that I
could use the observer service.
When I try, Firefox freezes.
This is my code:
Javascript:
var observer = new function(){
var observerService;
this.init = function(){
observerService =
Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
this.register();
};
this.destroy = function(){
observerService = null;
this.unregister();
}
this.observe = function(subject, topic, data){
//alert("Subject: " + subject);
alert("Topic: " + topic);
alert("Data: " + data);
};
this.register = function(){
observerService.addObserver(this, "JHandlerCallback", false);
};
this.unregister = function(){
observerService.removeObserver(this, "JHandlerCallback");
};
};
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
observer.init();
C++:
nsCOMPtr<nsIServiceManager> serviceManager;
nsCOMPtr<nsIObserverService> observerService;
NS_GetServiceManager(getter_AddRefs(serviceManager));
serviceManager->GetServiceByContractID("@mozilla.org/observer-service;1",
NS_GET_IID(nsIObserverService), getter_AddRefs(observerService));
observerService->NotifyObservers(NULL, "JHandlerCallback",
(PRUnichar*)"test");
I have tried calling the observer from javascript, even with a
setTimeout and it worked.
Why doesn't it work from C++?
Sorry for asking so much questions, but I really can't find what I'm
doing wrong.
I just checked and that code works, but it doesn't work when it's in a
function called from an external dll.
_______________________________________________
dev-tech-xpcom mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-xpcom