Mon, 12 Feb 2018 19:04:07 +0100
Register QWebChannel on isolated ApplicationWorld
This way scripts on pages don't have access to it. Exceptions are eric: and qthelp: schemes as internal pages requires the bridge.
GreaseMonkey userscripts now runs on ApplicationWorld too. This fixes userscript that depend on script world being isolated from main page world.
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
6048
82ad8ec9548c
Updated copyright for 2018.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
3 | # Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing an object to load web site icons. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from __future__ import unicode_literals |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from PyQt5.QtGui import QIcon, QPixmap, QImage |
4902
7a49807e493c
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
14 | from PyQt5.QtNetwork import QNetworkRequest |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | import WebBrowser.WebBrowserWindow |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | class WebIconLoader(QObject): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | Class implementing a loader for web site icons. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | @signal iconLoaded(icon) emitted when the con has been loaded |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | iconLoaded = pyqtSignal(QIcon) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | def __init__(self, url, parent=None): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | Constructor |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | @param url URL to fetch the icon from |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | @type QUrl |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | @param parent reference to the parent object |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | @type QObject |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | super(WebIconLoader, self).__init__(parent) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | networkManager = \ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
4902
7a49807e493c
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
40 | self.__reply = networkManager.get(QNetworkRequest(url)) |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | self.__reply.finished.connect(self.__finished) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | @pyqtSlot() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | def __finished(self): |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | Private slot handling the downloaded icon. |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | """ |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | # ignore any errors and emit an empty icon in this case |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | data = self.__reply.readAll() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | icon = QIcon(QPixmap.fromImage(QImage.fromData(data))) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | self.iconLoaded.emit(icon) |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.__reply.deleteLater() |
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | self.__reply = None |