Title: [140330] trunk/Source/WebKit/qt
- Revision
- 140330
- Author
- [email protected]
- Date
- 2013-01-21 06:28:11 -0800 (Mon, 21 Jan 2013)
Log Message
[Qt][WK1] Permission request callbacks for non-legacy notifications
https://bugs.webkit.org/show_bug.cgi?id=107438
Reviewed by Jocelyn Turcotte.
Tracks the new callbacks the same way legacy callbacks are tracked.
No test affected yet as we are still lacking support for testing
feature permission callbacks.
* WebCoreSupport/NotificationPresenterClientQt.cpp:
(WebCore::NotificationPresenterClientQt::requestPermission):
(WebCore::NotificationPresenterClientQt::allowNotificationForFrame):
* WebCoreSupport/NotificationPresenterClientQt.h:
(NotificationPresenterClientQt):
(CallbacksInfo):
Modified Paths
Diff
Modified: trunk/Source/WebKit/qt/ChangeLog (140329 => 140330)
--- trunk/Source/WebKit/qt/ChangeLog 2013-01-21 14:16:07 UTC (rev 140329)
+++ trunk/Source/WebKit/qt/ChangeLog 2013-01-21 14:28:11 UTC (rev 140330)
@@ -1,3 +1,22 @@
+2013-01-21 Allan Sandfeld Jensen <[email protected]>
+
+ [Qt][WK1] Permission request callbacks for non-legacy notifications
+ https://bugs.webkit.org/show_bug.cgi?id=107438
+
+ Reviewed by Jocelyn Turcotte.
+
+ Tracks the new callbacks the same way legacy callbacks are tracked.
+
+ No test affected yet as we are still lacking support for testing
+ feature permission callbacks.
+
+ * WebCoreSupport/NotificationPresenterClientQt.cpp:
+ (WebCore::NotificationPresenterClientQt::requestPermission):
+ (WebCore::NotificationPresenterClientQt::allowNotificationForFrame):
+ * WebCoreSupport/NotificationPresenterClientQt.h:
+ (NotificationPresenterClientQt):
+ (CallbacksInfo):
+
2013-01-21 Jocelyn Turcotte <[email protected]>
[Qt] Update the documentation about the storage of inspector settings
Modified: trunk/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp (140329 => 140330)
--- trunk/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp 2013-01-21 14:16:07 UTC (rev 140329)
+++ trunk/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp 2013-01-21 14:28:11 UTC (rev 140330)
@@ -304,6 +304,7 @@
{
}
+#if ENABLE(LEGACY_NOTIFICATIONS)
void NotificationPresenterClientQt::requestPermission(ScriptExecutionContext* context, PassRefPtr<VoidCallback> callback)
{
if (dumpNotification)
@@ -311,11 +312,34 @@
QHash<ScriptExecutionContext*, CallbacksInfo >::iterator iter = m_pendingPermissionRequests.find(context);
if (iter != m_pendingPermissionRequests.end())
- iter.value().m_callbacks.append(callback);
+ iter.value().m_voidCallbacks.append(callback);
else {
RefPtr<VoidCallback> cb = callback;
CallbacksInfo info;
info.m_frame = toFrame(context);
+ info.m_voidCallbacks.append(cb);
+
+ if (toPage(context) && toFrame(context)) {
+ m_pendingPermissionRequests.insert(context, info);
+ toPage(context)->notificationsPermissionRequested(toFrame(context));
+ }
+ }
+}
+#endif
+
+#if ENABLE(NOTIFICATIONS)
+void NotificationPresenterClientQt::requestPermission(ScriptExecutionContext* context, PassRefPtr<NotificationPermissionCallback> callback)
+{
+ if (dumpNotification)
+ printf("DESKTOP NOTIFICATION PERMISSION REQUESTED: %s\n", QString(context->securityOrigin()->toString()).toUtf8().constData());
+
+ QHash<ScriptExecutionContext*, CallbacksInfo >::iterator iter = m_pendingPermissionRequests.find(context);
+ if (iter != m_pendingPermissionRequests.end())
+ iter.value().m_callbacks.append(callback);
+ else {
+ RefPtr<NotificationPermissionCallback> cb = callback;
+ CallbacksInfo info;
+ info.m_frame = toFrame(context);
info.m_callbacks.append(cb);
if (toPage(context) && toFrame(context)) {
@@ -324,6 +348,7 @@
}
}
}
+#endif
NotificationClient::Permission NotificationPresenterClientQt::checkPermission(ScriptExecutionContext* context)
{
@@ -366,11 +391,20 @@
if (iter == m_pendingPermissionRequests.end())
return;
- QList<RefPtr<VoidCallback> >& callbacks = iter.value().m_callbacks;
- Q_FOREACH(const RefPtr<VoidCallback>& callback, callbacks) {
+#if ENABLE(LEGACY_NOTIFICATIONS)
+ QList<RefPtr<VoidCallback> >& voidCallbacks = iter.value().m_voidCallbacks;
+ Q_FOREACH(const RefPtr<VoidCallback>& callback, voidCallbacks) {
if (callback)
callback->handleEvent();
}
+#endif
+#if ENABLE(NOTIFICATIONS)
+ QList<RefPtr<NotificationPermissionCallback> >& callbacks = iter.value().m_callbacks;
+ Q_FOREACH(const RefPtr<NotificationPermissionCallback>& callback, callbacks) {
+ if (callback)
+ callback->handleEvent(Notification::permissionString(NotificationClient::PermissionAllowed));
+ }
+#endif
m_pendingPermissionRequests.remove(iter.key());
}
Modified: trunk/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.h (140329 => 140330)
--- trunk/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.h 2013-01-21 14:16:07 UTC (rev 140329)
+++ trunk/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.h 2013-01-21 14:28:11 UTC (rev 140330)
@@ -94,7 +94,7 @@
virtual void requestPermission(ScriptExecutionContext*, PassRefPtr<VoidCallback>);
#endif
#if ENABLE(NOTIFICATIONS)
- virtual void requestPermission(ScriptExecutionContext*, PassRefPtr<NotificationPermissionCallback>) { }
+ virtual void requestPermission(ScriptExecutionContext*, PassRefPtr<NotificationPermissionCallback>);
#endif
virtual NotificationClient::Permission checkPermission(ScriptExecutionContext*);
virtual void cancelRequestsForPermission(ScriptExecutionContext*);
@@ -131,7 +131,12 @@
int m_clientCount;
struct CallbacksInfo {
QWebFrameAdapter* m_frame;
- QList<RefPtr<VoidCallback> > m_callbacks;
+#if ENABLE(LEGACY_NOTIFICATIONS)
+ QList<RefPtr<VoidCallback> > m_voidCallbacks;
+#endif
+#if ENABLE(NOTIFICATIONS)
+ QList<RefPtr<NotificationPermissionCallback> > m_callbacks;
+#endif
};
QHash<ScriptExecutionContext*, CallbacksInfo > m_pendingPermissionRequests;
QHash<ScriptExecutionContext*, NotificationClient::Permission> m_cachedPermissions;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes