Split up QtWebKit specific part in browser.history

This commit is contained in:
Florian Bruhin 2016-08-10 14:51:29 +02:00
parent ad5008152c
commit 33193d7dd4
2 changed files with 68 additions and 33 deletions

View File

@ -23,10 +23,10 @@ import time
import collections import collections
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QUrl, QObject from PyQt5.QtCore import pyqtSignal, pyqtSlot, QUrl, QObject
from PyQt5.QtWebKit import QWebHistoryInterface
from qutebrowser.commands import cmdutils 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.config import config
from qutebrowser.misc import lineparser from qutebrowser.misc import lineparser
@ -108,34 +108,6 @@ class Entry:
return cls(atime, url, title, redirect=redirect) 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): class WebHistory(QObject):
"""The global history of visited pages. """The global history of visited pages.
@ -296,7 +268,7 @@ class WebHistory(QObject):
self.add_url(url, title) self.add_url(url, title)
def add_url(self, url, title="", *, redirect=False, atime=None): 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: Args:
url: A url (as QUrl) to add to the history. url: A url (as QUrl) to add to the history.
@ -333,5 +305,7 @@ def init(parent=None):
parent=parent) parent=parent)
objreg.register('web-history', history) objreg.register('web-history', history)
interface = WebHistoryInterface(history, parent=history) used_backend = usertypes.arg2backend[objreg.get('args').backend]
QWebHistoryInterface.setDefaultInterface(interface) if used_backend == usertypes.Backend.QtWebKit:
from qutebrowser.browser.webkit import webkithistory
webkithistory.init(history)

View File

@ -0,0 +1,61 @@
# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
# Copyright 2015-2016 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
#
# 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 <http://www.gnu.org/licenses/>.
"""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)