Mon, 28 Mar 2016 16:34:22 +0200
Continued porting the web browser.
- completed the feature permissions stuff for Qt 5.6
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
4631
5c1a96925da4
Updated copyright for 2016.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4356
diff
changeset
|
3 | # Copyright (c) 2015 - 2016 Detlev Offenbach <detlev@die-offenbachs.de> |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing the feature permission manager object. |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from __future__ import unicode_literals |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | from PyQt5.QtCore import QObject |
4356
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
13 | from PyQt5.QtWidgets import QDialog |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
14 | from PyQt5.QtWebEngineWidgets import QWebEnginePage |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | import Globals |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | import Preferences |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | class FeaturePermissionManager(QObject): |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | Class implementing the feature permission manager object. |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | """ |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
24 | SettingsKeyFormat = "WebBrowser/FeaturePermissions/{0}" |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | def __init__(self, parent=None): |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | Constructor |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | @param parent reference to the parent object |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | @type QObject |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | super(FeaturePermissionManager, self).__init__(parent) |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | self.__featurePermissions = { |
4904
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
36 | # TODO: Qt 5.7? |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
37 | ## QWebEnginePage.Notifications: { |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
38 | ## QWebEnginePage.PermissionGrantedByUser: [], |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
39 | ## QWebEnginePage.PermissionDeniedByUser: [], |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
40 | ## }, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
41 | QWebEnginePage.Geolocation: { |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
42 | QWebEnginePage.PermissionGrantedByUser: [], |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
43 | QWebEnginePage.PermissionDeniedByUser: [], |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | }, |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
45 | QWebEnginePage.MediaAudioCapture: { |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
46 | QWebEnginePage.PermissionGrantedByUser: [], |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
47 | QWebEnginePage.PermissionDeniedByUser: [], |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
48 | }, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
49 | QWebEnginePage.MediaVideoCapture: { |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
50 | QWebEnginePage.PermissionGrantedByUser: [], |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
51 | QWebEnginePage.PermissionDeniedByUser: [], |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
52 | }, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
53 | QWebEnginePage.MediaAudioVideoCapture: { |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
54 | QWebEnginePage.PermissionGrantedByUser: [], |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
55 | QWebEnginePage.PermissionDeniedByUser: [], |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | }, |
4904
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
57 | QWebEnginePage.MouseLock: { |
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
58 | QWebEnginePage.PermissionGrantedByUser: [], |
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
59 | QWebEnginePage.PermissionDeniedByUser: [], |
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
60 | }, |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | } |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | self.__featurePermissionsKeys = { |
4904
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
63 | # TODO: Qt 5.7? |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
64 | ## (QWebEnginePage.Notifications, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
65 | ## QWebEnginePage.PermissionGrantedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
66 | ## "NotificationsGranted", |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
67 | ## (QWebEnginePage.Notifications, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
68 | ## QWebEnginePage.PermissionDeniedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
69 | ## "NotificationsDenied", |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
70 | (QWebEnginePage.Geolocation, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
71 | QWebEnginePage.PermissionGrantedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
72 | "GeolocationGranted", |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
73 | (QWebEnginePage.Geolocation, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
74 | QWebEnginePage.PermissionDeniedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
75 | "GeolocationDenied", |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
76 | (QWebEnginePage.MediaAudioCapture, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
77 | QWebEnginePage.PermissionGrantedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
78 | "MediaAudioCaptureGranted", |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
79 | (QWebEnginePage.MediaAudioCapture, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
80 | QWebEnginePage.PermissionDeniedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
81 | "MediaAudioCaptureDenied", |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
82 | (QWebEnginePage.MediaVideoCapture, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
83 | QWebEnginePage.PermissionGrantedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
84 | "MediaVideoCaptureGranted", |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
85 | (QWebEnginePage.MediaVideoCapture, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
86 | QWebEnginePage.PermissionDeniedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
87 | "MediaVideoCaptureDenied", |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
88 | (QWebEnginePage.MediaAudioVideoCapture, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
89 | QWebEnginePage.PermissionGrantedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
90 | "MediaAudioVideoCaptureGranted", |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
91 | (QWebEnginePage.MediaAudioVideoCapture, |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
92 | QWebEnginePage.PermissionDeniedByUser): |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
93 | "MediaAudioVideoCaptureDenied", |
4904
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
94 | (QWebEnginePage.MouseLock, |
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
95 | QWebEnginePage.PermissionGrantedByUser): |
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
96 | "MouseLockGranted", |
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
97 | (QWebEnginePage.MouseLock, |
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
98 | QWebEnginePage.PermissionDeniedByUser): |
ea8f13f76d26
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4788
diff
changeset
|
99 | "MouseLockDenied", |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | } |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | self.__loaded = False |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
104 | def requestFeaturePermission(self, page, origin, feature): |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | """ |
4356
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
106 | Public method to request a feature permission. |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | @param page reference to the requesting web page |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
109 | @type QWebEnginePage |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
110 | @param origin security origin requesting the feature |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
111 | @type QUrl |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | @param feature requested feature |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
113 | @type QWebEnginePage.Feature |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | """ |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
115 | if origin is None or origin.isEmpty(): |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | return |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | if not self.__loaded: |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | self.__loadSettings() |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
121 | host = origin.host() |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | if feature in self.__featurePermissions: |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | for permission in self.__featurePermissions[feature]: |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | if host in self.__featurePermissions[feature][permission]: |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
126 | page.setFeaturePermission(origin, feature, permission) |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | return |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
129 | from .FeaturePermissionBar import FeaturePermissionBar |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
130 | bar = FeaturePermissionBar(page, origin, feature, self) |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
131 | bar.show() |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | def rememberFeaturePermission(self, host, feature, permission): |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | Public method to remember a user decision for a feature permission. |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | @param host host name to remember the decision for |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | @type str |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | @param feature feature to be remembered |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
140 | @type QWebEnginePage.Feature |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | @param permission feature permission to be remembered |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
142 | @type QWebEnginePage.PermissionPolicy |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | if feature in self.__featurePermissions: |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | if host not in self.__featurePermissions[feature][permission]: |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | self.__featurePermissions[feature][permission].append(host) |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | self.__saveSettings() |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | def __loadSettings(self): |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | Private method to load the remembered feature permissions. |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | if self.__loaded: |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | # no reloading allowed |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | return |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | for (feature, permission), key in \ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | self.__featurePermissionsKeys.items(): |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | self.__featurePermissions[feature][permission] = \ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | Globals.toList(Preferences.Prefs.settings.value( |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | FeaturePermissionManager.SettingsKeyFormat.format(key), |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | [] |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | )) |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | self.__loaded = True |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | def __saveSettings(self): |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | Private method to save the remembered feature permissions. |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | if not self.__loaded: |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | return |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
174 | import WebBrowser.WebBrowserWindow |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4742
diff
changeset
|
175 | if WebBrowser.WebBrowserWindow.WebBrowserWindow.isPrivate(): |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
176 | return |
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
177 | |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | for (feature, permission), key in \ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | self.__featurePermissionsKeys.items(): |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | Preferences.Prefs.settings.setValue( |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | FeaturePermissionManager.SettingsKeyFormat.format(key), |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | self.__featurePermissions[feature][permission]) |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | def showFeaturePermissionsDialog(self): |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | """ |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | Public method to show a dialog to manage the remembered feature |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | permissions. |
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | """ |
4356
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
189 | if not self.__loaded: |
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
190 | self.__loadSettings() |
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
191 | |
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
192 | from .FeaturePermissionsDialog import FeaturePermissionsDialog |
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
193 | dlg = FeaturePermissionsDialog(self.__featurePermissions) |
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
194 | if dlg.exec_() == QDialog.Accepted: |
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
195 | newFeaturePermissions = dlg.getData() |
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
196 | self.__featurePermissions = newFeaturePermissions |
975993ebd7fb
Finished implementing the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4355
diff
changeset
|
197 | self.__saveSettings() |