A blog user mentions each request includes the chosen browser language. Do we normalize this on desktop such that we only send en-US regardless of the browser's localization?
Trac: Description: A blog user mentions each request includes the chosen browser language. Do we normalize this on desktop such that we only send en-US regardless of the browser's localization?
A blog user mentions each request includes the chosen browser language. Do we normalize this on desktop such that we only send en-US regardless of the browser's localization?
I think what happens in desktop (with lang other than en-US) is that on first navigation there is the prompt asking whether to spoof to english, if the user accepts then it sets the privacy.spoof_english = 2 pref. Then, the pref listener in toolkit/components/resistfingerprinting/RFPHelper.jsm sets the intl.accept_languages = en-US,en. In Android I don't see privacy.spoof_english pref, and then even if set manually to 2, intl.accept_languages is not changed. I wonder what is failing here... Changing intl.accept_languages = en-US,en manually works, and then the accept-language header is spoofed correctly.
I think what happens in desktop (with lang other than en-US) is that on first navigation there is the prompt asking whether to spoof to english, if the user accepts then it sets the privacy.spoof_english = 2 pref. Then, the pref listener in toolkit/components/resistfingerprinting/RFPHelper.jsm sets the intl.accept_languages = en-US,en. In Android I don't see privacy.spoof_english pref, and then even if set manually to 2, intl.accept_languages is not changed. I wonder what is failing here... Changing intl.accept_languages = en-US,en manually works, and then the accept-language header is spoofed correctly.
Ah, thanks! That sounds like something we want on Android, too. It seems it was only implemented on Desktop (not surprisingly). I wonder what we should do on Android. Maybe we should start with always spoofing the header for now, and implement a better fix later?
I think what happens in desktop (with lang other than en-US) is that on first navigation there is the prompt asking whether to spoof to english, if the user accepts then it sets the privacy.spoof_english = 2 pref. Then, the pref listener in toolkit/components/resistfingerprinting/RFPHelper.jsm sets the intl.accept_languages = en-US,en. In Android I don't see privacy.spoof_english pref, and then even if set manually to 2, intl.accept_languages is not changed. I wonder what is failing here... Changing intl.accept_languages = en-US,en manually works, and then the accept-language header is spoofed correctly.
Ah, thanks! That sounds like something we want on Android, too. It seems it was only implemented on Desktop (not surprisingly). I wonder what we should do on Android. Maybe we should start with always spoofing the header for now, and implement a better fix later?
I am inclined to say "no" as the usability issues are potentially quite severe. There are a bunch of ways to get the browser locale (we still have some open for desktop) even though header spoofing is active (see e.g. legacy/trac#30304 (moved)). So the benefit might not be as expected (this is not meant in the sense that we should not fix it because there are other ways to obtain the locale).
I wonder what we should do on Android. Maybe we should start with always spoofing the header for now, and implement a better fix later?
I am inclined to say "no" as the usability issues are potentially quite severe. There are a bunch of ways to get the browser locale (we still have some open for desktop) even though header spoofing is active (see e.g. legacy/trac#30304 (moved)). So the benefit might not be as expected (this is not meant in the sense that we should not fix it because there are other ways to obtain the locale).
Maybe we should add a warning/notification somewhere? Maybe we should check the current locale when the app starts and show a warning if locale != en-US? It makes me a little uncomfortable that we default to en-US, but I don't have a better answer right now.
From a usability perspective, I agree we should send the correct language header.