Add a content.webrtc_public_interfaces_only option
See #3010 Fixes #2163
This commit is contained in:
parent
3bf89bcea4
commit
69abc9a1a1
@ -154,6 +154,7 @@
|
|||||||
|<<content.ssl_strict,content.ssl_strict>>|Validate SSL handshakes.
|
|<<content.ssl_strict,content.ssl_strict>>|Validate SSL handshakes.
|
||||||
|<<content.user_stylesheets,content.user_stylesheets>>|List of user stylesheet filenames to use.
|
|<<content.user_stylesheets,content.user_stylesheets>>|List of user stylesheet filenames to use.
|
||||||
|<<content.webgl,content.webgl>>|Enable WebGL.
|
|<<content.webgl,content.webgl>>|Enable WebGL.
|
||||||
|
|<<content.webrtc_public_interfaces_only,content.webrtc_public_interfaces_only>>|Only expose public interfaces via WebRTC.
|
||||||
|<<content.windowed_fullscreen,content.windowed_fullscreen>>|Limit fullscreen to the browser window (does not expand to fill the screen).
|
|<<content.windowed_fullscreen,content.windowed_fullscreen>>|Limit fullscreen to the browser window (does not expand to fill the screen).
|
||||||
|<<content.xss_auditing,content.xss_auditing>>|Monitor load requests for cross-site scripting attempts.
|
|<<content.xss_auditing,content.xss_auditing>>|Monitor load requests for cross-site scripting attempts.
|
||||||
|<<downloads.location.directory,downloads.location.directory>>|Directory to save downloads to.
|
|<<downloads.location.directory,downloads.location.directory>>|Directory to save downloads to.
|
||||||
@ -1983,6 +1984,19 @@ Type: <<types,Bool>>
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
[[content.webrtc_public_interfaces_only]]
|
||||||
|
=== content.webrtc_public_interfaces_only
|
||||||
|
Only expose public interfaces via WebRTC.
|
||||||
|
On Qt 5.9, this option requires a restart. On Qt 5.10, this option doesn't work at all because of a Qt bug. On Qt >= 5.11, no restart is required.
|
||||||
|
|
||||||
|
Type: <<types,Bool>>
|
||||||
|
|
||||||
|
Default: +pass:[false]+
|
||||||
|
|
||||||
|
On QtWebEngine, this setting requires Qt 5.9.2 or newer.
|
||||||
|
|
||||||
|
On QtWebKit, this setting is unavailable.
|
||||||
|
|
||||||
[[content.windowed_fullscreen]]
|
[[content.windowed_fullscreen]]
|
||||||
=== content.windowed_fullscreen
|
=== content.windowed_fullscreen
|
||||||
Limit fullscreen to the browser window (does not expand to fill the screen).
|
Limit fullscreen to the browser window (does not expand to fill the screen).
|
||||||
|
@ -149,6 +149,7 @@ def _parse_yaml_backends_dict(name, node):
|
|||||||
False: False,
|
False: False,
|
||||||
'Qt 5.8': qtutils.version_check('5.8'),
|
'Qt 5.8': qtutils.version_check('5.8'),
|
||||||
'Qt 5.9': qtutils.version_check('5.9'),
|
'Qt 5.9': qtutils.version_check('5.9'),
|
||||||
|
'Qt 5.9.2': qtutils.version_check('5.9.2'),
|
||||||
'Qt 5.10': qtutils.version_check('5.10'),
|
'Qt 5.10': qtutils.version_check('5.10'),
|
||||||
'Qt 5.11': qtutils.version_check('5.11'),
|
'Qt 5.11': qtutils.version_check('5.11'),
|
||||||
}
|
}
|
||||||
|
@ -675,6 +675,19 @@ content.webgl:
|
|||||||
supports_pattern: true
|
supports_pattern: true
|
||||||
desc: Enable WebGL.
|
desc: Enable WebGL.
|
||||||
|
|
||||||
|
content.webrtc_public_interfaces_only:
|
||||||
|
default: false
|
||||||
|
type: Bool
|
||||||
|
backend:
|
||||||
|
QtWebKit: false
|
||||||
|
QtWebEngine: Qt 5.9.2
|
||||||
|
desc: >-
|
||||||
|
Only expose public interfaces via WebRTC.
|
||||||
|
|
||||||
|
On Qt 5.9, this option requires a restart.
|
||||||
|
On Qt 5.10, this option doesn't work at all because of a Qt bug.
|
||||||
|
On Qt >= 5.11, no restart is required.
|
||||||
|
|
||||||
content.xss_auditing:
|
content.xss_auditing:
|
||||||
type: Bool
|
type: Bool
|
||||||
default: false
|
default: false
|
||||||
|
@ -180,5 +180,8 @@ def qt_args(namespace):
|
|||||||
# On Qt 5.11, we can control this via QWebEngineSettings
|
# On Qt 5.11, we can control this via QWebEngineSettings
|
||||||
if not config.val.content.autoplay:
|
if not config.val.content.autoplay:
|
||||||
argv.append('--autoplay-policy=user-gesture-required')
|
argv.append('--autoplay-policy=user-gesture-required')
|
||||||
|
if config.val.content.webrtc_public_interfaces_only:
|
||||||
|
argv.append('--force-webrtc-ip-handling-policy='
|
||||||
|
'default_public_interface_only')
|
||||||
|
|
||||||
return argv
|
return argv
|
||||||
|
@ -433,6 +433,24 @@ class TestQtArgs:
|
|||||||
args = configinit.qt_args(parsed)
|
args = configinit.qt_args(parsed)
|
||||||
assert ('--autoplay-policy=user-gesture-required' in args) == added
|
assert ('--autoplay-policy=user-gesture-required' in args) == added
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('backend, new_version, public_only, added', [
|
||||||
|
(usertypes.Backend.QtWebEngine, True, True, False), # new
|
||||||
|
(usertypes.Backend.QtWebKit, False, True, False), # QtWebKit
|
||||||
|
(usertypes.Backend.QtWebEngine, False, False, False), # disabled
|
||||||
|
(usertypes.Backend.QtWebEngine, False, True, True),
|
||||||
|
])
|
||||||
|
def test_webrtc(self, config_stub, monkeypatch, parser,
|
||||||
|
backend, new_version, public_only, added):
|
||||||
|
config_stub.val.content.webrtc_public_interfaces_only = public_only
|
||||||
|
monkeypatch.setattr(configinit.qtutils, 'version_check',
|
||||||
|
lambda version, compiled=False: new_version)
|
||||||
|
monkeypatch.setattr(configinit.objects, 'backend', backend)
|
||||||
|
|
||||||
|
parsed = parser.parse_args([])
|
||||||
|
args = configinit.qt_args(parsed)
|
||||||
|
arg = '--force-webrtc-ip-handling-policy=default_public_interface_only'
|
||||||
|
assert (arg in args) == added
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('arg, confval, used', [
|
@pytest.mark.parametrize('arg, confval, used', [
|
||||||
# overridden by commandline arg
|
# overridden by commandline arg
|
||||||
|
Loading…
Reference in New Issue
Block a user