diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py index 77dfbbdfdcd..4e2e126f666 100644 --- a/qutebrowser/browser/history.py +++ b/qutebrowser/browser/history.py @@ -23,10 +23,10 @@ import collections from PyQt5.QtCore import pyqtSignal, pyqtSlot, QUrl, QObject -from PyQt5.QtWebKit import QWebHistoryInterface from qutebrowser.commands import cmdutils -from qutebrowser.utils import utils, objreg, standarddir, log, qtutils +from qutebrowser.utils import (utils, objreg, standarddir, log, qtutils, + usertypes) from qutebrowser.config import config from qutebrowser.misc import lineparser @@ -108,34 +108,6 @@ def from_str(cls, line): return cls(atime, url, title, redirect=redirect) -class WebHistoryInterface(QWebHistoryInterface): - - """Glue code between WebHistory and Qt's QWebHistoryInterface. - - Attributes: - _history: The WebHistory object. - """ - - def __init__(self, webhistory, parent=None): - super().__init__(parent) - self._history = webhistory - - def addHistoryEntry(self, url_string): - """Required for a QWebHistoryInterface impl, obsoleted by add_url.""" - pass - - def historyContains(self, url_string): - """Called by WebKit to determine if a URL is contained in the history. - - Args: - url_string: The URL (as string) to check for. - - Return: - True if the url is in the history, False otherwise. - """ - return url_string in self._history.history_dict - - class WebHistory(QObject): """The global history of visited pages. @@ -296,7 +268,7 @@ def add_from_tab(self, url, requested_url, title): self.add_url(url, title) def add_url(self, url, title="", *, redirect=False, atime=None): - """Called by WebKit when a URL should be added to the history. + """Called via add_from_tab when a URL should be added to the history. Args: url: A url (as QUrl) to add to the history. @@ -333,5 +305,7 @@ def init(parent=None): parent=parent) objreg.register('web-history', history) - interface = WebHistoryInterface(history, parent=history) - QWebHistoryInterface.setDefaultInterface(interface) + used_backend = usertypes.arg2backend[objreg.get('args').backend] + if used_backend == usertypes.Backend.QtWebKit: + from qutebrowser.browser.webkit import webkithistory + webkithistory.init(history) diff --git a/qutebrowser/browser/webkit/webkithistory.py b/qutebrowser/browser/webkit/webkithistory.py new file mode 100644 index 00000000000..abd80eb3932 --- /dev/null +++ b/qutebrowser/browser/webkit/webkithistory.py @@ -0,0 +1,61 @@ +# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: + +# Copyright 2015-2016 Florian Bruhin (The Compiler) +# +# This file is part of qutebrowser. +# +# qutebrowser is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# qutebrowser is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with qutebrowser. If not, see . + +"""QtWebKit specific part of history.""" + + +from PyQt5.QtWebKit import QWebHistoryInterface + + +class WebHistoryInterface(QWebHistoryInterface): + + """Glue code between WebHistory and Qt's QWebHistoryInterface. + + Attributes: + _history: The WebHistory object. + """ + + def __init__(self, webhistory, parent=None): + super().__init__(parent) + self._history = webhistory + + def addHistoryEntry(self, url_string): + """Required for a QWebHistoryInterface impl, obsoleted by add_url.""" + pass + + def historyContains(self, url_string): + """Called by WebKit to determine if a URL is contained in the history. + + Args: + url_string: The URL (as string) to check for. + + Return: + True if the url is in the history, False otherwise. + """ + return url_string in self._history.history_dict + + +def init(history): + """Initialize the QWebHistoryInterface. + + Args: + history: The WebHistory object. + """ + interface = WebHistoryInterface(history, parent=history) + QWebHistoryInterface.setDefaultInterface(interface)