Hello Jacek,
first of all, thank you for this detailed explanation.
Am 19.07.2010 17:11, schrieb Jacek Caban:
Hi Thomas,
On 7/19/10 3:29 PM, Thomas Kaltenbrunner wrote:
Hello,
I am interested to port the wine interface to the xulrunner back to
mswindows to access the xulrunner via a IE compatible interface. So
it would be easy to replace an embedded IE with the gecko-engine.
After some code browsing I thing it will be some of the "DLLs",
especially mshtml and shdocvw.
I just wanted to hear from you an opinion about that project.
What will be the main changes to the wine code - besides renaming of
the dlls?
Where do you see problems?
Did somebody else worked on that or implemented it already?
The main problem is that what we need (and we need it because apps
need it) doesn't belong to XULRunner. Wine's IE libs implementation
needs an architecture compatible with MS implementation. We do ugly
things with Gecko to make it work. For example we don't use necko for
loading documents. We use urlmon.dll instead. An app may register its
own protocol handlers, overwrite an existing handler or simply depend
on us using wininet for http. We also allow using our jscript instead
of Gecko JS. This is needed to allow scripts written for IE work as
well as interaction between script and app. There are more smaller
things we have to do because applications need them. I think none of
them makes sense to be in XULRunner itself.
There was a project (no longer maintained AFAIK) in Mozilla called
Mozilla ActiveX control. It was kind of a replacement for WebBrowser
control - a high level part of IE embedding API. It can work for some
simple applications, esp if they are prepared to use it. I think it's
a good compromise between having anything like that in XULRunner and
not having things that don't belong there.
Yes. I tried it, but it did not work correctly - even with a more or
less simple application. So am looking for a better implementation.
I think wine must have a very good implementation.
In my opinion, if your goal is to make embedding Gecko easier, it
would be better to work on Gecko embedding API itself. Currently,
although it's easy to do simple HTML embedding, if you want to do
anything more complicated, you have to go through semi-internal, not
backward compatible interfaces. Some things like interacting with
scripts from the pages are not possible at all (although recently
introduced ctypes might have changed it). It's far from being nice for
developers IMO. Mozilla is getting rid of backward compatibility for
mozilla2 (Firefox 4). It will surely hurt apps using XULRunner for
embedding, but it may be also good time to rethink the API to be more
friendly.
I had already a look at the XULRunner api - but I did not find an easy
starting point.
Thomas Kaltenbrunner
--
OPC® cardsystems GmbH
Mobil: +49 151 52628082 Skype: tj-opc Zentrale: +49 651 8408 0
Geschäftsführer: Torsten Hülsmann, Dipl.-Ing. (FH) Klaus Dieter Schömer
Registergericht: Amtsgericht Wittlich HRB-Nr.: 3903