Add --enable-webengine-inspector option
Since the inspector can be a security risk, it's now not linked to developer-extras anymore until QtWebEngine provides a better way to access it. See: https://bugreports.qt.io/browse/QTBUG-50725 http://bouk.co/blog/hacking-developers/
This commit is contained in:
parent
d99a7bd7ad
commit
946e3f93f9
@ -397,7 +397,7 @@ This setting is only available with the QtWebKit backend.
|
|||||||
=== developer-extras
|
=== developer-extras
|
||||||
Enable extra tools for Web developers.
|
Enable extra tools for Web developers.
|
||||||
|
|
||||||
This needs to be enabled for `:inspector` to work and also adds an _Inspect_ entry to the context menu.
|
This needs to be enabled for `:inspector` to work and also adds an _Inspect_ entry to the context menu. For QtWebEngine, see 'qutebrowser --help' instead.
|
||||||
|
|
||||||
Valid values:
|
Valid values:
|
||||||
|
|
||||||
@ -406,6 +406,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[false]+
|
Default: +pass:[false]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[general-print-element-backgrounds]]
|
[[general-print-element-backgrounds]]
|
||||||
=== print-element-backgrounds
|
=== print-element-backgrounds
|
||||||
Whether the background color and images are also drawn when the page is printed.
|
Whether the background color and images are also drawn when the page is printed.
|
||||||
|
@ -59,6 +59,9 @@ show it.
|
|||||||
*--backend* '{webkit,webengine}'::
|
*--backend* '{webkit,webengine}'::
|
||||||
Which backend to use (webengine backend is EXPERIMENTAL!).
|
Which backend to use (webengine backend is EXPERIMENTAL!).
|
||||||
|
|
||||||
|
*--enable-webengine-inspector*::
|
||||||
|
Enable the web inspector for QtWebEngine. Note that this is a SECURITY RISK and you should not visit untrusted websites with the inspector turned on. See https://bugreports.qt.io/browse/QTBUG-50725 for more details.
|
||||||
|
|
||||||
=== debug arguments
|
=== debug arguments
|
||||||
*-l* '{critical,error,warning,info,debug,vdebug}', *--loglevel* '{critical,error,warning,info,debug,vdebug}'::
|
*-l* '{critical,error,warning,info,debug,vdebug}', *--loglevel* '{critical,error,warning,info,debug,vdebug}'::
|
||||||
Set loglevel
|
Set loglevel
|
||||||
|
@ -26,7 +26,6 @@ from PyQt5.QtWidgets import QWidget
|
|||||||
|
|
||||||
from qutebrowser.utils import log, objreg
|
from qutebrowser.utils import log, objreg
|
||||||
from qutebrowser.misc import miscwidgets
|
from qutebrowser.misc import miscwidgets
|
||||||
from qutebrowser.config import config
|
|
||||||
|
|
||||||
|
|
||||||
def create(parent=None):
|
def create(parent=None):
|
||||||
@ -91,13 +90,6 @@ class AbstractWebInspector(QWidget):
|
|||||||
state_config['geometry']['inspector'] = geom
|
state_config['geometry']['inspector'] = geom
|
||||||
super().closeEvent(e)
|
super().closeEvent(e)
|
||||||
|
|
||||||
def _check_developer_extras(self):
|
|
||||||
"""Check if developer-extras are enabled."""
|
|
||||||
if not config.get('general', 'developer-extras'):
|
|
||||||
raise WebInspectorError(
|
|
||||||
"Please enable developer-extras before using the "
|
|
||||||
"webinspector!")
|
|
||||||
|
|
||||||
def inspect(self, page):
|
def inspect(self, page):
|
||||||
"""Inspect the given QWeb(Engine)Page."""
|
"""Inspect the given QWeb(Engine)Page."""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
@ -41,13 +41,12 @@ class WebEngineInspector(inspector.AbstractWebInspector):
|
|||||||
|
|
||||||
def inspect(self, _page):
|
def inspect(self, _page):
|
||||||
"""Set up the inspector."""
|
"""Set up the inspector."""
|
||||||
self._check_developer_extras()
|
|
||||||
try:
|
try:
|
||||||
port = int(os.environ['QTWEBENGINE_REMOTE_DEBUGGING'])
|
port = int(os.environ['QTWEBENGINE_REMOTE_DEBUGGING'])
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise inspector.WebInspectorError(
|
raise inspector.WebInspectorError(
|
||||||
"Debugging is not set up correctly. Did you restart after "
|
"Debugging is not enabled. See 'qutebrowser --help' for "
|
||||||
"setting developer-extras?")
|
"details.")
|
||||||
url = QUrl('http://localhost:{}/'.format(port))
|
url = QUrl('http://localhost:{}/'.format(port))
|
||||||
self._widget.load(url)
|
self._widget.load(url)
|
||||||
self.show()
|
self.show()
|
||||||
|
@ -106,10 +106,9 @@ def update_settings(section, option):
|
|||||||
_init_stylesheet(profile)
|
_init_stylesheet(profile)
|
||||||
|
|
||||||
|
|
||||||
def init(_args):
|
def init(args):
|
||||||
"""Initialize the global QWebSettings."""
|
"""Initialize the global QWebSettings."""
|
||||||
if config.get('general', 'developer-extras'):
|
if args.enable_webengine_inspector:
|
||||||
# FIXME:qtwebengine Make sure we call globalSettings *after* this...
|
|
||||||
os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = str(utils.random_port())
|
os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = str(utils.random_port())
|
||||||
|
|
||||||
profile = QWebEngineProfile.defaultProfile()
|
profile = QWebEngineProfile.defaultProfile()
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
from PyQt5.QtWebKitWidgets import QWebInspector
|
from PyQt5.QtWebKitWidgets import QWebInspector
|
||||||
|
|
||||||
from qutebrowser.browser import inspector
|
from qutebrowser.browser import inspector
|
||||||
|
from qutebrowser.config import config
|
||||||
|
|
||||||
|
|
||||||
class WebKitInspector(inspector.AbstractWebInspector):
|
class WebKitInspector(inspector.AbstractWebInspector):
|
||||||
@ -35,6 +36,9 @@ class WebKitInspector(inspector.AbstractWebInspector):
|
|||||||
self._set_widget(qwebinspector)
|
self._set_widget(qwebinspector)
|
||||||
|
|
||||||
def inspect(self, page):
|
def inspect(self, page):
|
||||||
self._check_developer_extras()
|
if not config.get('general', 'developer-extras'):
|
||||||
|
raise inspector.WebInspectorError(
|
||||||
|
"Please enable developer-extras before using the "
|
||||||
|
"webinspector!")
|
||||||
self._widget.setPage(page)
|
self._widget.setPage(page)
|
||||||
self.show()
|
self.show()
|
||||||
|
@ -184,10 +184,12 @@ def data(readonly=False):
|
|||||||
"icons."),
|
"icons."),
|
||||||
|
|
||||||
('developer-extras',
|
('developer-extras',
|
||||||
SettingValue(typ.Bool(), 'false'),
|
SettingValue(typ.Bool(), 'false',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Enable extra tools for Web developers.\n\n"
|
"Enable extra tools for Web developers.\n\n"
|
||||||
"This needs to be enabled for `:inspector` to work and also adds "
|
"This needs to be enabled for `:inspector` to work and also adds "
|
||||||
"an _Inspect_ entry to the context menu."),
|
"an _Inspect_ entry to the context menu. For QtWebEngine, see "
|
||||||
|
"'qutebrowser --help' instead."),
|
||||||
|
|
||||||
('print-element-backgrounds',
|
('print-element-backgrounds',
|
||||||
SettingValue(typ.Bool(), 'true',
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
@ -66,6 +66,12 @@ def get_argparser():
|
|||||||
parser.add_argument('--backend', choices=['webkit', 'webengine'],
|
parser.add_argument('--backend', choices=['webkit', 'webengine'],
|
||||||
help="Which backend to use (webengine backend is "
|
help="Which backend to use (webengine backend is "
|
||||||
"EXPERIMENTAL!).", default='webkit')
|
"EXPERIMENTAL!).", default='webkit')
|
||||||
|
parser.add_argument('--enable-webengine-inspector', action='store_true',
|
||||||
|
help="Enable the web inspector for QtWebEngine. Note "
|
||||||
|
"that this is a SECURITY RISK and you should not visit "
|
||||||
|
"untrusted websites with the inspector turned on. See "
|
||||||
|
"https://bugreports.qt.io/browse/QTBUG-50725 for more "
|
||||||
|
"details.")
|
||||||
|
|
||||||
parser.add_argument('--json-args', help=argparse.SUPPRESS)
|
parser.add_argument('--json-args', help=argparse.SUPPRESS)
|
||||||
parser.add_argument('--temp-basedir-restarted', help=argparse.SUPPRESS)
|
parser.add_argument('--temp-basedir-restarted', help=argparse.SUPPRESS)
|
||||||
|
@ -130,11 +130,17 @@ Feature: Various utility commands.
|
|||||||
|
|
||||||
# :inspect
|
# :inspect
|
||||||
|
|
||||||
|
@qtwebengine_skip
|
||||||
Scenario: Inspector without developer extras
|
Scenario: Inspector without developer extras
|
||||||
When I set general -> developer-extras to false
|
When I set general -> developer-extras to false
|
||||||
And I run :inspector
|
And I run :inspector
|
||||||
Then the error "Please enable developer-extras before using the webinspector!" should be shown
|
Then the error "Please enable developer-extras before using the webinspector!" should be shown
|
||||||
|
|
||||||
|
@qtwebkit_skip
|
||||||
|
Scenario: Inspector without --enable-webengine-inspector
|
||||||
|
When I run :inspector
|
||||||
|
Then the error "Debugging is not enabled. See 'qutebrowser --help' for details." should be shown
|
||||||
|
|
||||||
@no_xvfb @posix @qtwebengine_skip
|
@no_xvfb @posix @qtwebengine_skip
|
||||||
Scenario: Inspector smoke test
|
Scenario: Inspector smoke test
|
||||||
When I set general -> developer-extras to true
|
When I set general -> developer-extras to true
|
||||||
@ -145,6 +151,7 @@ Feature: Various utility commands.
|
|||||||
Then no crash should happen
|
Then no crash should happen
|
||||||
|
|
||||||
# Different code path as an inspector got created now
|
# Different code path as an inspector got created now
|
||||||
|
@qtwebengine_skip
|
||||||
Scenario: Inspector without developer extras (after smoke)
|
Scenario: Inspector without developer extras (after smoke)
|
||||||
When I set general -> developer-extras to false
|
When I set general -> developer-extras to false
|
||||||
And I run :inspector
|
And I run :inspector
|
||||||
|
Loading…
Reference in New Issue
Block a user