[PATCH] mshtml: When creating new channel default to current locale charset.
Jacek Caban
jacek at codeweavers.com
Tue Jun 23 10:20:16 CDT 2020
On 22.06.2020 12:08, Dmitry Timoshkov wrote:
> Jacek Caban <jacek at codeweavers.com> wrote:
>
>>> @@ -3385,6 +3386,11 @@ static nsresult create_nschannel(nsWineURI *uri, nsChannel **ret)
>>> channel->nsIHttpChannelInternal_iface.lpVtbl = &nsHttpChannelInternalVtbl;
>>> channel->ref = 1;
>>> channel->request_method = METHOD_GET;
>>> +
>>> + bstr = charset_string_from_cp(GetACP());
>>> + channel->charset = heap_strdupWtoA(bstr);
>>> + SysFreeString(bstr);
>>
>> That's not how other nsIChannel implementations work in Gecko. As far as
>> I can see, we should provide a charset only when we know it and let the
>> caller figure out the default. I'm afraid that your change could break
>> charset auto detection.
>>
>>
>> I don't know what's the exact problem you're trying to fix, but we maybe
>> we don't set it in some case when we should? Looking at Gecko code, I
>> just noticed that we should try to extract it from content type in
>> SetContentType(), for example.
> I have an application that includes many other .html files from its main.html.
> Main html has the following head:
>
> <html lang="ru">
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
> <meta http-equiv="Content-Language" content="ru">
> </head>
>
> and Wine's mshtml renders this file correctly. Main html includes another
> file with the following head:
>
> <html>
> <head>
> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/>
> <meta content="text/html; charset=windows-1251">
> </head>
>
> and this one renders using wrong locale.
>
> According to https://www.w3schools.com/charsets/default.asp both syntaxes
> are legal and should be supported starting from HTML 4.
>
> According to my testing when loading HTML gecko first queries charset from
> mshtml, it returns "", and then gecko renders page using wrong locale. With
> my patch gecko gets "windows-1251" and this fixes page rendering.
>
> Is this a bug in gecko or mshtml?
The easiest way to check is it to write a trivial HTML file and try it
on IE, Firefox (preferably 47, which is the version Wine Gecko bases on)
and Wine iexplore.exe. The <meta> element in the second HTML looks
suspicious, it doesn't have http-equiv="Content-Type" attribute. Does it
help if you add one? Also, is the problem reproducible if you load the
subframe as a main frame?
Thanks,
Jacek
More information about the wine-devel
mailing list