Set window.navigator.languages correctly

This commit is contained in:
Florian Bruhin 2017-07-13 20:46:37 +02:00
parent ba8083c539
commit cbf9da0b7e
2 changed files with 22 additions and 10 deletions

View File

@ -156,14 +156,17 @@ def _init_stylesheet(profile):
profile.scripts().insert(script)
def _set_user_agent(profile):
"""Set the user agent for the given profile.
def _set_http_headers(profile):
"""Set the user agent and accept-language for the given profile.
We override this per request in the URL interceptor (to allow for
per-domain user agents), but this one still gets used for things like
window.navigator.userAgent in JS.
We override those per request in the URL interceptor (to allow for
per-domain values), but this one still gets used for things like
window.navigator.userAgent/.languages in JS.
"""
profile.setHttpUserAgent(config.val.content.headers.user_agent)
accept_language = config.val.content.headers.accept_language
if accept_language is not None:
profile.setHttpAcceptLanguage(accept_language)
def _update_settings(option):
@ -172,9 +175,10 @@ def _update_settings(option):
if option in ['scrollbar.hide', 'content.user_stylesheets']:
_init_stylesheet(default_profile)
_init_stylesheet(private_profile)
elif option == 'content.headers.user_agent':
_set_user_agent(default_profile)
_set_user_agent(private_profile)
elif option in ['content.headers.user_agent',
'content.headers.accept_language']:
_set_http_headers(default_profile)
_set_http_headers(private_profile)
def _init_profiles():
@ -186,12 +190,12 @@ def _init_profiles():
default_profile.setPersistentStoragePath(
os.path.join(standarddir.data(), 'webengine'))
_init_stylesheet(default_profile)
_set_user_agent(default_profile)
_set_http_headers(default_profile)
private_profile = QWebEngineProfile()
assert private_profile.isOffTheRecord()
_init_stylesheet(private_profile)
_set_user_agent(private_profile)
_set_http_headers(private_profile)
def init(args):

View File

@ -346,6 +346,14 @@ Feature: Various utility commands.
And I open headers
Then the header Accept-Language should be set to en,de
# This still doesn't set window.navigator.language
# See https://bugreports.qt.io/browse/QTBUG-61949
@qtwebkit_skip
Scenario: Accept-Language header (JS)
When I set content.headers.accept_language to it,fr
And I run :jseval console.log(window.navigator.languages)
Then the javascript message "it,fr" should be logged
Scenario: Setting a custom user-agent header
When I set content.headers.user_agent to toaster
And I open headers