[PATCH] mshtml: When creating new channel default to current locale charset.

Dmitry Timoshkov dmitry at baikal.ru
Mon Jun 22 05:08:11 CDT 2020


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?

-- 
Dmitry.



More information about the wine-devel mailing list