From d94c1736db6dc2f7446d3850543bd9a323300e32 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sun, 16 Aug 2015 19:03:20 +0200 Subject: [PATCH] Use a proper file:// URL for dirbrowser icons. --- qutebrowser/browser/network/filescheme.py | 9 +++++++-- qutebrowser/html/dirbrowser.html | 4 ++-- tests/browser/network/test_filescheme.py | 13 +++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/qutebrowser/browser/network/filescheme.py b/qutebrowser/browser/network/filescheme.py index dc5dc28a8..3d92f190c 100644 --- a/qutebrowser/browser/network/filescheme.py +++ b/qutebrowser/browser/network/filescheme.py @@ -25,6 +25,8 @@ import os +from PyQt5.QtCore import QUrl + from qutebrowser.browser.network import schemehandler, networkreply from qutebrowser.utils import utils, jinja @@ -77,6 +79,9 @@ def dirbrowser_html(path): folder_icon = utils.resource_filename('img/folder.svg') file_icon = utils.resource_filename('img/file.svg') + folder_url = QUrl.fromLocalFile(folder_icon).toString(QUrl.FullyEncoded) + file_url = QUrl.fromLocalFile(file_icon).toString(QUrl.FullyEncoded) + if is_root(path): parent = None else: @@ -96,8 +101,8 @@ def dirbrowser_html(path): directories = get_file_list(path, all_files, os.path.isdir) html = template.render(title=title, url=path, icon='', parent=parent, files=files, - directories=directories, folder_icon=folder_icon, - file_icon=file_icon) + directories=directories, folder_url=folder_url, + file_url=file_url) return html.encode('UTF-8', errors='xmlcharrefreplace') diff --git a/qutebrowser/html/dirbrowser.html b/qutebrowser/html/dirbrowser.html index 716785698..2365cfbea 100644 --- a/qutebrowser/html/dirbrowser.html +++ b/qutebrowser/html/dirbrowser.html @@ -32,11 +32,11 @@ ul > li { } ul > li { - background-image: url('{{folder_icon}}'); + background-image: url('{{folder_url}}'); } ul.files > li { - background-image: url('{{file_icon}}'); + background-image: url('{{file_url}}'); } {% endblock %} diff --git a/tests/browser/network/test_filescheme.py b/tests/browser/network/test_filescheme.py index b373b32cd..e02402b1e 100644 --- a/tests/browser/network/test_filescheme.py +++ b/tests/browser/network/test_filescheme.py @@ -117,6 +117,19 @@ class TestDirbrowserHtml: title_text = title_elem('p', id='dirbrowserTitleText')[0].text assert title_text == 'Browse directory: {}'.format(os.getcwd()) + def test_icons(self, monkeypatch): + """Make sure icon paths are correct file:// URLs.""" + monkeypatch.setattr( + 'qutebrowser.browser.network.filescheme.utils.resource_filename', + lambda name: '/test path/foo.svg') + + html = filescheme.dirbrowser_html(os.getcwd()) + soup = bs4.BeautifulSoup(html, 'html.parser') + print(soup.prettify()) + + css = soup.html.head.style.string + assert "background-image: url('file:///test%20path/foo.svg');" in css + def test_empty(self, tmpdir, parser): parsed = parser(str(tmpdir)) assert parsed.parent