[PATCH v2 01/16] mshtml: Add names for each object and use it in the Navigator.

Jacek Caban jacek at codeweavers.com
Wed Oct 6 08:15:45 CDT 2021


On 10/6/21 2:35 PM, Gabriel Ivăncescu wrote:
> On 05/10/2021 22:18, Jacek Caban wrote:
>> On 10/5/21 4:18 PM, Gabriel Ivăncescu wrote:
>>> Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
>>> ---
>>>
>>> All the names match native, and will be tested later when more are
>>> implemented.
>>>
>>>   dlls/mshtml/dispex.c         | 29 +++++++++++++++++++++++++++++
>>>   dlls/mshtml/htmlanchor.c     |  1 +
>>>   dlls/mshtml/htmlarea.c       |  1 +
>>>   dlls/mshtml/htmlattr.c       |  1 +
>>>   dlls/mshtml/htmlbody.c       |  1 +
>>>   dlls/mshtml/htmlcomment.c    |  1 +
>>>   dlls/mshtml/htmlcurstyle.c   |  1 +
>>>   dlls/mshtml/htmldoc.c        |  2 ++
>>>   dlls/mshtml/htmlelem.c       |  6 ++++++
>>>   dlls/mshtml/htmlelemcol.c    |  1 +
>>>   dlls/mshtml/htmlevent.c      |  6 ++++++
>>>   dlls/mshtml/htmlform.c       |  1 +
>>>   dlls/mshtml/htmlframe.c      |  2 ++
>>>   dlls/mshtml/htmlgeneric.c    |  1 +
>>>   dlls/mshtml/htmlhead.c       |  4 ++++
>>>   dlls/mshtml/htmlimg.c        |  2 ++
>>>   dlls/mshtml/htmlinput.c      |  3 +++
>>>   dlls/mshtml/htmllink.c       |  1 +
>>>   dlls/mshtml/htmllocation.c   |  1 +
>>>   dlls/mshtml/htmlnode.c       |  2 ++
>>>   dlls/mshtml/htmlobject.c     |  2 ++
>>>   dlls/mshtml/htmlscript.c     |  1 +
>>>   dlls/mshtml/htmlselect.c     |  3 +++
>>>   dlls/mshtml/htmlstorage.c    |  1 +
>>>   dlls/mshtml/htmlstyle.c      |  2 ++
>>>   dlls/mshtml/htmlstyleelem.c  |  1 +
>>>   dlls/mshtml/htmlstylesheet.c |  4 ++++
>>>   dlls/mshtml/htmltable.c      |  3 +++
>>>   dlls/mshtml/htmltextarea.c   |  1 +
>>>   dlls/mshtml/htmltextnode.c   |  1 +
>>>   dlls/mshtml/htmlwindow.c     |  1 +
>>>   dlls/mshtml/mshtml_private.h |  2 ++
>>>   dlls/mshtml/omnavigator.c    | 18 ++++++++++++------
>>>   dlls/mshtml/range.c          |  2 ++
>>>   dlls/mshtml/selection.c      |  1 +
>>>   dlls/mshtml/xmlhttprequest.c |  2 ++
>>>   36 files changed, 106 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c
>>> index 64ead8f..26aab5e 100644
>>> --- a/dlls/mshtml/dispex.c
>>> +++ b/dlls/mshtml/dispex.c
>>> @@ -886,6 +886,7 @@ static const dispex_static_data_vtbl_t 
>>> function_dispex_vtbl = {
>>>   static const tid_t function_iface_tids[] = {0};
>>>   static dispex_static_data_t function_dispex = {
>>> +    NULL,
>>
>>
>> The patch looks mostly good, but we're so close to having those names 
>> for all objects, that I think it would be best to do it a be able to 
>> assume that all objects have name in their description. In this case 
>> I believe that this should be "Function". I have suggestions for 
>> missing ones bellow.
>>
>>
>>>   static dispex_static_data_t HTMLCommentElement_dispex = {
>>> +    NULL,
>>>       NULL,
>>>       DispHTMLCommentElement_tid,
>>>       HTMLCommentElement_iface_tids,
>>
>>
>>      if(v >= 9) {
>>          document.body.innerHTML = "<!--...-->";
>>          test("comment", document.body.firstChild, "Comment");
>>      }
>>  >
>
> Sounds good to me but I ran into a problem. The comment test is right, 
> of course, but giving it the proper name makes a test fail in dom.c, 
> namely test_doctype.
>
> That one expects its value to always be [object], even in IE9+ mode, 
> implicitly via test_elem_type. However, toString also returns the same 
> thing (see attached diff). And I can't separate the tests in 
> test_elem_type, it already tests for [object].
>
> Now from what I can see, a simple solution would be to add a "value" 
> override in the vtbl for HTMLCommentElement, since toString is based 
> on it, and have it return [object] for doctypes. But how do I check if 
> the comment element is a doctype or a "normal" comment? 


The test result that you can see is caused by the fact that we run this 
test in compat mode, while apparently native uses quirks mode. The 
attached patch works around it.


BTW, in IE9+ mode, it seems that we shouldn't use HTMLCommentElement for 
doctype nodes at all.


Thanks,

Jacek

-------------- next part --------------
A non-text attachment was scrubbed...
Name: dom.diff
Type: text/x-patch
Size: 675 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20211006/b8686089/attachment.bin>


More information about the wine-devel mailing list