Title: [140928] trunk
Revision
140928
Author
[email protected]
Date
2013-01-27 13:04:20 -0800 (Sun, 27 Jan 2013)

Log Message

[chromium] add missing plumbing for Notification.requestPermission
https://bugs.webkit.org/show_bug.cgi?id=108012

Reviewed by Adam Barth.

Source/WebKit/chromium:

* src/NotificationPresenterImpl.cpp:
(WebKit):
(WebKit::VoidCallbackClient::VoidCallbackClient):
(NotificationPermissionCallbackClient):
(WebKit::NotificationPermissionCallbackClient::NotificationPermissionCallbackClient):
(WebKit::NotificationPermissionCallbackClient::permissionRequestComplete):
(WebKit::NotificationPermissionCallbackClient::~NotificationPermissionCallbackClient):
(WebKit::NotificationPresenterImpl::requestPermission):
* src/NotificationPresenterImpl.h:
(NotificationPresenterImpl):

LayoutTests:

* fast/notifications/notifications-constructor-request-permission-expected.txt: Added.
* fast/notifications/notifications-constructor-request-permission.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (140927 => 140928)


--- trunk/LayoutTests/ChangeLog	2013-01-27 10:58:30 UTC (rev 140927)
+++ trunk/LayoutTests/ChangeLog	2013-01-27 21:04:20 UTC (rev 140928)
@@ -1,5 +1,15 @@
 2013-01-27  Jochen Eisinger  <[email protected]>
 
+        [chromium] add missing plumbing for Notification.requestPermission
+        https://bugs.webkit.org/show_bug.cgi?id=108012
+
+        Reviewed by Adam Barth.
+
+        * fast/notifications/notifications-constructor-request-permission-expected.txt: Added.
+        * fast/notifications/notifications-constructor-request-permission.html: Added.
+
+2013-01-27  Jochen Eisinger  <[email protected]>
+
         Check notification permissions in the show() method
         https://bugs.webkit.org/show_bug.cgi?id=108009
 

Added: trunk/LayoutTests/fast/notifications/notifications-constructor-request-permission-expected.txt (0 => 140928)


--- trunk/LayoutTests/fast/notifications/notifications-constructor-request-permission-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/notifications/notifications-constructor-request-permission-expected.txt	2013-01-27 21:04:20 UTC (rev 140928)
@@ -0,0 +1,5 @@
+DESKTOP NOTIFICATION PERMISSION REQUESTED: file://
+Requesting notification permission...
+
+PASS: Permission callback invoked.
+

Added: trunk/LayoutTests/fast/notifications/notifications-constructor-request-permission.html (0 => 140928)


--- trunk/LayoutTests/fast/notifications/notifications-constructor-request-permission.html	                        (rev 0)
+++ trunk/LayoutTests/fast/notifications/notifications-constructor-request-permission.html	2013-01-27 21:04:20 UTC (rev 140928)
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <script type="text/_javascript_">
+        function log(message)
+        {
+            document.getElementById("result").innerHTML += message + "<br>";
+        }
+        
+        function runTests()
+        {
+            if (window.testRunner) {
+                testRunner.dumpAsText();
+            }
+
+            if (!window.Notification) {
+                log("FAIL: No Notification interface!");
+            }
+            
+            var N = window.Notification.requestPermission(
+                function() { log("PASS: Permission callback invoked."); }
+            );
+        }
+    </script>
+</head>
+<body>
+    <p>Requesting notification permission...</p>
+    
+<div id="result"></div>    
+<script type="text/_javascript_">
+runTests();
+</script>
+
+
+</body>
+</html>

Modified: trunk/Source/WebKit/chromium/ChangeLog (140927 => 140928)


--- trunk/Source/WebKit/chromium/ChangeLog	2013-01-27 10:58:30 UTC (rev 140927)
+++ trunk/Source/WebKit/chromium/ChangeLog	2013-01-27 21:04:20 UTC (rev 140928)
@@ -1,3 +1,21 @@
+2013-01-27  Jochen Eisinger  <[email protected]>
+
+        [chromium] add missing plumbing for Notification.requestPermission
+        https://bugs.webkit.org/show_bug.cgi?id=108012
+
+        Reviewed by Adam Barth.
+
+        * src/NotificationPresenterImpl.cpp:
+        (WebKit):
+        (WebKit::VoidCallbackClient::VoidCallbackClient):
+        (NotificationPermissionCallbackClient):
+        (WebKit::NotificationPermissionCallbackClient::NotificationPermissionCallbackClient):
+        (WebKit::NotificationPermissionCallbackClient::permissionRequestComplete):
+        (WebKit::NotificationPermissionCallbackClient::~NotificationPermissionCallbackClient):
+        (WebKit::NotificationPresenterImpl::requestPermission):
+        * src/NotificationPresenterImpl.h:
+        (NotificationPresenterImpl):
+
 2013-01-26  James Simonsen  <[email protected]>
 
         [chromium] Export ResourceRequest's priority through WebURLRequest

Modified: trunk/Source/WebKit/chromium/src/NotificationPresenterImpl.cpp (140927 => 140928)


--- trunk/Source/WebKit/chromium/src/NotificationPresenterImpl.cpp	2013-01-27 10:58:30 UTC (rev 140927)
+++ trunk/Source/WebKit/chromium/src/NotificationPresenterImpl.cpp	2013-01-27 21:04:20 UTC (rev 140928)
@@ -49,9 +49,10 @@
 
 namespace WebKit {
 
+#if ENABLE(LEGACY_NOTIFICATIONS)
 class VoidCallbackClient : public WebNotificationPermissionCallback {
 public:
-    VoidCallbackClient(PassRefPtr<VoidCallback> callback)
+    explicit VoidCallbackClient(PassRefPtr<VoidCallback> callback)
         : m_callback(callback)
     {
     }
@@ -68,7 +69,34 @@
 
     RefPtr<VoidCallback> m_callback;
 };
+#endif // ENABLE(LEGACY_NOTIFICATIONS)
 
+#if ENABLE(NOTIFICATIONS)
+class NotificationPermissionCallbackClient : public WebNotificationPermissionCallback {
+public:
+    NotificationPermissionCallbackClient(WebNotificationPresenter* presenter, PassRefPtr<SecurityOrigin> securityOrigin, PassRefPtr<NotificationPermissionCallback> callback)
+        : m_presenter(presenter)
+        , m_securityOrigin(securityOrigin)
+        , m_callback(callback)
+    {
+    }
+
+    virtual void permissionRequestComplete()
+    {
+        if (m_callback)
+            m_callback->handleEvent(Notification::permissionString(static_cast<NotificationClient::Permission>(m_presenter->checkPermission(WebSecurityOrigin(m_securityOrigin)))));
+        delete this;
+    }
+
+private:
+    virtual ~NotificationPermissionCallbackClient() { }
+
+    WebNotificationPresenter* m_presenter;
+    RefPtr<SecurityOrigin> m_securityOrigin;
+    RefPtr<NotificationPermissionCallback> m_callback;
+};
+#endif // ENABLE(NOTIFICATIONS)
+
 void NotificationPresenterImpl::initialize(WebNotificationPresenter* presenter)
 {
     m_presenter = presenter;
@@ -104,11 +132,20 @@
     return static_cast<NotificationClient::Permission>(result);
 }
 
+#if ENABLE(LEGACY_NOTIFICATIONS)
 void NotificationPresenterImpl::requestPermission(ScriptExecutionContext* context, PassRefPtr<VoidCallback> callback)
 {
     m_presenter->requestPermission(WebSecurityOrigin(context->securityOrigin()), new VoidCallbackClient(callback));
 }
+#endif // ENABLE(LEGACY_NOTIFICATIONS)
 
+#if ENABLE(NOTIFICATIONS)
+void NotificationPresenterImpl::requestPermission(ScriptExecutionContext* context, WTF::PassRefPtr<NotificationPermissionCallback> callback)
+{
+    m_presenter->requestPermission(WebSecurityOrigin(context->securityOrigin()), new NotificationPermissionCallbackClient(m_presenter, context->securityOrigin(), callback));
+}
+#endif // ENABLE(NOTIFICATIONS)
+
 } // namespace WebKit
 
 #endif // ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)

Modified: trunk/Source/WebKit/chromium/src/NotificationPresenterImpl.h (140927 => 140928)


--- trunk/Source/WebKit/chromium/src/NotificationPresenterImpl.h	2013-01-27 10:58:30 UTC (rev 140927)
+++ trunk/Source/WebKit/chromium/src/NotificationPresenterImpl.h	2013-01-27 21:04:20 UTC (rev 140928)
@@ -60,7 +60,7 @@
     virtual void requestPermission(WebCore::ScriptExecutionContext*, WTF::PassRefPtr<WebCore::VoidCallback> callback);
 #endif
 #if ENABLE(NOTIFICATIONS)
-    virtual void requestPermission(WebCore::ScriptExecutionContext*, WTF::PassRefPtr<WebCore::NotificationPermissionCallback> callback) { }
+    virtual void requestPermission(WebCore::ScriptExecutionContext*, WTF::PassRefPtr<WebCore::NotificationPermissionCallback>);
 #endif
     virtual void cancelRequestsForPermission(WebCore::ScriptExecutionContext*) {}
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to