[PATCH 02/11] mshtml: Implement IHTMLElement::toString.
Jacek Caban
jacek at codeweavers.com
Wed Sep 22 09:36:41 CDT 2021
On 9/22/21 4:15 PM, Gabriel Ivăncescu wrote:
> On 22/09/2021 15:55, Jacek Caban wrote:
>> On 9/21/21 5:50 PM, Gabriel Ivăncescu wrote:
>>> On 21/09/2021 16:31, Jacek Caban wrote:
>>>> On 9/21/21 2:32 PM, Gabriel Ivăncescu wrote:
>>>>> But where would we even get the name from? In HTMLElement_Create,
>>>>> get_tag_desc is used for specific tags, which is similar, but the
>>>>> "fallback" goes to HTMLGenericElement_Create, since not all tags
>>>>> are included there.
>>>>
>>>>
>>>> Sure, but I think that's what you need, see this test for an example:
>>>>
>>>> var s = document.createElement("winetest").toString();
>>>> ok(s === "[object HTMLUnknownElement]", "s = " + s);
>>>>
>>>>
>>>>> For example the "div" tag is not.
>>>>
>>>>
>>>> It should probably be made a separated object.
>>>>
>>>>
>>>> Thanks,
>>>>
>>>> Jacek
>>>>
>>>
>>> Ok, I tested all the tags from:
>>>
>>> https://www.w3schools.com/TAGS/default.ASP
>>>
>>> It looks like there's way too many tags to properly implement each
>>> as separate object just for this.
>>
>>
>> It's not just for this, objects that return something different class
>> names should eventually expose different sets of interfaces (like
>> IHTMLDivElement in case of div element). It should be easy enough to
>> distinguish between HTMLElement and HTMLUnknownElement using the
>> existing logic. While div would also be nice to have, as long as the
>> logic is right, it's not too bad to return slightly wrong strings
>> objects that we don't support yet.
>>
>>
>> Jacek
>>
>
> Wait I'm confused a bit here. Isn't the patch I attached going in the
> right direction? If not, why? It basically just adds a string name for
> toString for each tag.
>
> Whether the tag itself is implemented as a separate object (like
> IHTMLDivElement you mentioned) or not doesn't really matter here,
> because even when it will be at some later point, it should still
> obtain the name from this table, just like we do for the constructor.
>
> I guess I'm a bit confused as to what exactly you're referring I
> should do now to fix this.
>
> Currently, all tags use the same toString implementation, even if they
> are already separate objects, so this would implement it for all of
> them in one spot without duplicating code, whether they have a
> constructor or not.
I'm not suggesting separate implementations. In fact, I think we could
share the implementation with more objects than just HTML elements.
toString is supposed to use a type name and we have a mechanism to store
type-specific things, why don't you want to use that?
Jacek
More information about the wine-devel
mailing list