From 29b778b6d6f77427a9ccadcd8d4d1dac903a5f48 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 10 Aug 2016 17:27:34 +0200 Subject: [PATCH] Use javascript.assemble for all functions --- qutebrowser/browser/webengine/webenginetab.py | 6 +++--- qutebrowser/utils/javascript.py | 7 +++++-- tests/unit/utils/test_javascript.py | 10 +++++++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index c9dd20717..93e1275d9 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -235,11 +235,11 @@ class WebEngineScroller(browsertab.AbstractScroller): self._tab.run_js_async(js_code) def to_point(self, point): - self._tab.run_js_async("window.scroll({x}, {y});".format( - x=point.x(), y=point.y())) + js_code = javascript.assemble('window', 'scroll', point.x(), point.y()) + self._tab.run_js_async(js_code) def delta(self, x=0, y=0): - self._tab.run_js_async("window.scrollBy({x}, {y});".format(x=x, y=y)) + self._tab.run_js_async(javascript.assemble('window', 'scrollBy', x, y)) def delta_page(self, x=0, y=0): js_code = javascript.assemble('scroll', 'delta_page', x, y) diff --git a/qutebrowser/utils/javascript.py b/qutebrowser/utils/javascript.py index 9f7372758..4eaf63cd0 100644 --- a/qutebrowser/utils/javascript.py +++ b/qutebrowser/utils/javascript.py @@ -62,6 +62,9 @@ def _convert_js_arg(arg): def assemble(module, function, *args): """Assemble a javascript file and a function call.""" js_args = ', '.join(_convert_js_arg(arg) for arg in args) - code = '"use strict";\nwindow._qutebrowser.{}.{}({});'.format( - module, function, js_args) + if module == 'window': + parts = ['window', function] + else: + parts = ['window', '_qutebrowser', module, function] + code = '"use strict";\n{}({});'.format('.'.join(parts), js_args) return code diff --git a/tests/unit/utils/test_javascript.py b/tests/unit/utils/test_javascript.py index 50fd4e91e..f7ff7da53 100644 --- a/tests/unit/utils/test_javascript.py +++ b/tests/unit/utils/test_javascript.py @@ -138,6 +138,10 @@ def test_convert_js_arg(arg, expected): assert javascript._convert_js_arg(arg) == expected -def test_assemble(): - expected = '"use strict";\nwindow._qutebrowser.foo.func(23);' - assert javascript.assemble('foo', 'func', 23) == expected +@pytest.mark.parametrize('base, expected_base', [ + ('window', 'window'), + ('foo', 'window._qutebrowser.foo'), +]) +def test_assemble(base, expected_base): + expected = '"use strict";\n{}.func(23);'.format(expected_base) + assert javascript.assemble(base, 'func', 23) == expected