Title: [141076] branches/chromium/1364
Revision
141076
Author
joc...@chromium.org
Date
2013-01-29 00:39:51 -0800 (Tue, 29 Jan 2013)

Log Message

Merge 140928
> [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.
> 

TBR=joc...@chromium.org
Review URL: https://codereview.chromium.org/12086041

Modified Paths

Added Paths

Diff

Copied: branches/chromium/1364/LayoutTests/fast/notifications/notifications-constructor-request-permission-expected.txt (from rev 140928, trunk/LayoutTests/fast/notifications/notifications-constructor-request-permission-expected.txt) (0 => 141076)


--- branches/chromium/1364/LayoutTests/fast/notifications/notifications-constructor-request-permission-expected.txt	                        (rev 0)
+++ branches/chromium/1364/LayoutTests/fast/notifications/notifications-constructor-request-permission-expected.txt	2013-01-29 08:39:51 UTC (rev 141076)
@@ -0,0 +1,5 @@
+DESKTOP NOTIFICATION PERMISSION REQUESTED: file://
+Requesting notification permission...
+
+PASS: Permission callback invoked.
+

Copied: branches/chromium/1364/LayoutTests/fast/notifications/notifications-constructor-request-permission.html (from rev 140928, trunk/LayoutTests/fast/notifications/notifications-constructor-request-permission.html) (0 => 141076)


--- branches/chromium/1364/LayoutTests/fast/notifications/notifications-constructor-request-permission.html	                        (rev 0)
+++ branches/chromium/1364/LayoutTests/fast/notifications/notifications-constructor-request-permission.html	2013-01-29 08:39:51 UTC (rev 141076)
@@ -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: branches/chromium/1364/Source/WebKit/chromium/src/NotificationPresenterImpl.cpp (141075 => 141076)


--- branches/chromium/1364/Source/WebKit/chromium/src/NotificationPresenterImpl.cpp	2013-01-29 08:33:33 UTC (rev 141075)
+++ branches/chromium/1364/Source/WebKit/chromium/src/NotificationPresenterImpl.cpp	2013-01-29 08:39:51 UTC (rev 141076)
@@ -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: branches/chromium/1364/Source/WebKit/chromium/src/NotificationPresenterImpl.h (141075 => 141076)


--- branches/chromium/1364/Source/WebKit/chromium/src/NotificationPresenterImpl.h	2013-01-29 08:33:33 UTC (rev 141075)
+++ branches/chromium/1364/Source/WebKit/chromium/src/NotificationPresenterImpl.h	2013-01-29 08:39:51 UTC (rev 141076)
@@ -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
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to