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