Skip to content

Commit

Permalink
Split up QtWebKit specific part in browser.history
Browse files Browse the repository at this point in the history
  • Loading branch information
The-Compiler committed Aug 10, 2016
1 parent ad50081 commit 33193d7
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 33 deletions.
40 changes: 7 additions & 33 deletions qutebrowser/browser/history.py
Expand Up @@ -23,10 +23,10 @@
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


Expand Down Expand Up @@ -108,34 +108,6 @@ def from_str(cls, line):
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.
Expand Down Expand Up @@ -296,7 +268,7 @@ def add_from_tab(self, url, requested_url, title):
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.
Expand Down Expand Up @@ -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)
61 changes: 61 additions & 0 deletions 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) <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)

0 comments on commit 33193d7

Please sign in to comment.