WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-107438-20130121145832.patch (text/plain), 5.79 KB, created by
Allan Sandfeld Jensen
on 2013-01-21 06:02:15 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Allan Sandfeld Jensen
Created:
2013-01-21 06:02:15 PST
Size:
5.79 KB
patch
obsolete
>Subversion Revision: 140326 >diff --git a/Source/WebKit/qt/ChangeLog b/Source/WebKit/qt/ChangeLog >index 0a3aa079abaaf474401a2069305d6bfb9f82ff40..6ddc0328a338f5123c0bae2f54b24b4ab7d5d42c 100644 >--- a/Source/WebKit/qt/ChangeLog >+++ b/Source/WebKit/qt/ChangeLog >@@ -1,3 +1,22 @@ >+2013-01-21 Allan Sandfeld Jensen <allan.jensen@digia.com> >+ >+ [Qt][WK1] Permission request callbacks for non-legacy notifications >+ https://bugs.webkit.org/show_bug.cgi?id=107438 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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 <jocelyn.turcotte@digia.com> > > [Qt] Update the documentation about the storage of inspector settings >diff --git a/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp >index 2f25b8960aa48bc734ec4fc1189ce039bcca0ef7..fbdd20bba877c9dadf06596241254f261d60e514 100644 >--- a/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp >+++ b/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp >@@ -304,19 +304,38 @@ void NotificationPresenterClientQt::notificationControllerDestroyed() > { > } > >+#if ENABLE(LEGACY_NOTIFICATIONS) > void NotificationPresenterClientQt::requestPermission(ScriptExecutionContext* context, PassRefPtr<VoidCallback> callback) > { >+ requestPermission(context, callback, 0); >+} >+#endif >+ >+#if ENABLE(NOTIFICATIONS) >+void NotificationPresenterClientQt::requestPermission(ScriptExecutionContext* context, PassRefPtr<NotificationPermissionCallback> callback) >+{ >+ requestPermission(context, 0, callback); >+} >+#endif >+ >+void NotificationPresenterClientQt::requestPermission(ScriptExecutionContext* context, PassRefPtr<VoidCallback> legacyCallback, 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<VoidCallback> cb = callback; >+ if (iter != m_pendingPermissionRequests.end()) { >+ if (legacyCallback) >+ iter->m_legacyCallbacks.append(legacyCallback); >+ if (callback) >+ iter->m_callbacks.append(callback); >+ } else { > CallbacksInfo info; > info.m_frame = toFrame(context); >- info.m_callbacks.append(cb); >+ if (legacyCallback) >+ info.m_legacyCallbacks.append(legacyCallback); >+ if (callback) >+ info.m_callbacks.append(callback); > > if (toPage(context) && toFrame(context)) { > m_pendingPermissionRequests.insert(context, info); >@@ -366,11 +385,20 @@ void NotificationPresenterClientQt::allowNotificationForFrame(Frame* frame) > 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_legacyCallbacks; >+ 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()); > } > >diff --git a/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.h b/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.h >index 78668f35f5764b1d971bae89acf4ce3b93bae3ed..42b31f99475e2abd5a7fd8ac7b27358533f4086a 100644 >--- a/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.h >+++ b/Source/WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.h >@@ -94,8 +94,9 @@ public: > virtual void requestPermission(ScriptExecutionContext*, PassRefPtr<VoidCallback>); > #endif > #if ENABLE(NOTIFICATIONS) >- virtual void requestPermission(ScriptExecutionContext*, PassRefPtr<NotificationPermissionCallback>) { } >+ virtual void requestPermission(ScriptExecutionContext*, PassRefPtr<NotificationPermissionCallback>); > #endif >+ void requestPermission(ScriptExecutionContext*, PassRefPtr<VoidCallback>, PassRefPtr<NotificationPermissionCallback>); > virtual NotificationClient::Permission checkPermission(ScriptExecutionContext*); > virtual void cancelRequestsForPermission(ScriptExecutionContext*); > >@@ -131,7 +132,12 @@ private: > int m_clientCount; > struct CallbacksInfo { > QWebFrameAdapter* m_frame; >- QList<RefPtr<VoidCallback> > m_callbacks; >+#if ENABLE(LEGACY_NOTIFICATIONS) >+ QList<RefPtr<VoidCallback> > m_legacyCallbacks; >+#endif >+#if ENABLE(NOTIFICATIONS) >+ QList<RefPtr<NotificationPermissionCallback> > m_callbacks; >+#endif > }; > QHash<ScriptExecutionContext*, CallbacksInfo > m_pendingPermissionRequests; > QHash<ScriptExecutionContext*, NotificationClient::Permission> m_cachedPermissions;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 107438
:
183756
|
183768