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

Reply via email to