On 28 September 2010 15:14, Jacek Caban <ja...@codeweavers.com> wrote: > Hi Reece, > > On 9/28/10 2:59 PM, Reece Dunn wrote: >> >> Hi, >> >> The current state of support for the Internet Explorer components in >> Wine is good, but there are applications that don't work with it >> because they are dependent on more of the functionality provided by >> Internet Explorer via the WebBrowser control. >> >> I have had a scan through some of the mshtml code, and see various >> things not handled -- such as the onload handler of the HTMLBody >> element -- but I am not very familiar with this area. > > onload is handled properly on body element, it's just getter/setter that is > a stub. It's a trivial one line patch that implements them. The fact that > they are stubs means that I've never seen them used in apps I was working > on. > > Most MSHTML APIs are trivial Gecko API wrappers. They are easy to implement, > the only problem is that there are really many functions to implement. I > implement only ones that are needed for real apps. The hard part of MSHTML > is in the few APIs that are not just wrappers and not directly exposed parts > like loading the document. > >> I am interested in helping out to improve this area -- my aim is to >> not require the `winetricks ie6` command to get some of these >> applications (specifically the Big Fish Games client) to a usable >> state. >> >> Therefore, I am wondering if anyone knows where the best place is to >> start looking (e.g. known areas of missing functionality) or how to >> debug applications (and interpret WINEDEBUG output) to identify where >> the issues are. > > There is no single answer. You want mshtml debug channel for most cases. If > the problem is with embedding document in an app, then shdocvw is also > useful. If you have scripts that don't work (and we use jscript for them), > then jscript debug channel is the answer. If you have a problem with loading > document, I'd add urlmon,wininet channel.
After some digging around, there appears to be some issues with the jscript.dll implementation: $ trace:jscript:DispatchEx_QueryInterface (0x1dad2d0)->(IID_IDispatchJS 0x33d5e8) $ trace:jscript:DispatchEx_AddRef (0x1dad2d0) ref=7 $ trace:jscript:prop_get L"SWFObject" ret {VT_EMPTY} $ trace:jscript:DispatchEx_Release (0x1dad2d0) ref=6 $ trace:jscript:DispatchEx_Release (0x1dad2d0) ref=5 $ fixme:jscript:new_expression_eval throw TypeError The new_expression_eval fixme is because V_VT(&constr) == VT_EMPTY. Now SWFObject is defined in a <script> file, but there are various script files. For example, given a html file containing: <script src="a.js"></script> <script src="b.js"></script> with a.js: function SWFObject() { this.x = 5; } and b.js: var swf = new SWFObject(); // appears to be erroring here alert(swf.x); Is this supported currently in Wine, or am I going down the wrong track? - Reece