from PyQt4 import QtGui, QtCore, QtWebKit, QtNetwork

cookies = QtNetwork.QNetworkCookieJar()

class Browser(QtWebKit.QWebView):
    _windows = set()

    @classmethod
    def _removeWindow(cls, window):
        if window in cls._windows:
            cls._windows.remove(window)

    @classmethod
    def newWindow(cls):
        window = cls()
        cls._windows.add(window)
        return window

    def __init__(self, parent=None):
        QtWebKit.QWebView.__init__(self, parent)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
        self.settings().setAttribute(
            QtWebKit.QWebSettings.JavascriptEnabled, True)
        self.settings().setAttribute(
            QtWebKit.QWebSettings.JavascriptCanOpenWindows, True)
        self.page().networkAccessManager().setCookieJar(cookies)

    def closeEvent(self, event):
        self._removeWindow(self)
        event.accept()

    def createWindow(self, mode):
        window = self.newWindow()
        if mode == QtWebKit.QWebPage.WebModalDialog:
            window.setWindowModality(QtCore.Qt.ApplicationModal)
        window.show()
        return window

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    browser = Browser()
    browser.setUrl(QtCore.QUrl("http://google.com"))
    browser.show()
    sys.exit(app.exec_())
