summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/Notifications
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/Notifications')
-rw-r--r--Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.cpp4
-rw-r--r--Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h3
-rw-r--r--Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp8
-rw-r--r--Source/WebKit2/UIProcess/Notifications/WebNotification.cpp7
-rw-r--r--Source/WebKit2/UIProcess/Notifications/WebNotification.h18
-rw-r--r--Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp48
-rw-r--r--Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h20
-rw-r--r--Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp11
-rw-r--r--Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.h7
9 files changed, 62 insertions, 64 deletions
diff --git a/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.cpp b/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.cpp
index 25d37da4b..2128627c5 100644
--- a/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.cpp
+++ b/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.cpp
@@ -30,9 +30,9 @@
namespace WebKit {
-PassRefPtr<NotificationPermissionRequest> NotificationPermissionRequest::create(WebKit::NotificationPermissionRequestManagerProxy *manager, uint64_t notificationID)
+Ref<NotificationPermissionRequest> NotificationPermissionRequest::create(WebKit::NotificationPermissionRequestManagerProxy *manager, uint64_t notificationID)
{
- return adoptRef(new NotificationPermissionRequest(manager, notificationID));
+ return adoptRef(*new NotificationPermissionRequest(manager, notificationID));
}
NotificationPermissionRequest::NotificationPermissionRequest(NotificationPermissionRequestManagerProxy* manager, uint64_t notificationID)
diff --git a/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h b/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h
index fdc5294ec..e34199792 100644
--- a/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h
+++ b/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequest.h
@@ -27,7 +27,6 @@
#define NotificationPermissionRequest_h
#include "APIObject.h"
-#include <wtf/PassRefPtr.h>
namespace WebKit {
@@ -35,7 +34,7 @@ class NotificationPermissionRequestManagerProxy;
class NotificationPermissionRequest : public API::ObjectImpl<API::Object::Type::NotificationPermissionRequest> {
public:
- static PassRefPtr<NotificationPermissionRequest> create(NotificationPermissionRequestManagerProxy*, uint64_t notificationID);
+ static Ref<NotificationPermissionRequest> create(NotificationPermissionRequestManagerProxy*, uint64_t notificationID);
void allow();
void deny();
diff --git a/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp b/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp
index e9b8d8ceb..818a52541 100644
--- a/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp
+++ b/Source/WebKit2/UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp
@@ -40,7 +40,7 @@ NotificationPermissionRequestManagerProxy::NotificationPermissionRequestManagerP
void NotificationPermissionRequestManagerProxy::invalidateRequests()
{
- for (auto request : m_pendingRequests.values())
+ for (auto& request : m_pendingRequests.values())
request->invalidate();
m_pendingRequests.clear();
@@ -48,9 +48,9 @@ void NotificationPermissionRequestManagerProxy::invalidateRequests()
PassRefPtr<NotificationPermissionRequest> NotificationPermissionRequestManagerProxy::createRequest(uint64_t notificationID)
{
- RefPtr<NotificationPermissionRequest> request = NotificationPermissionRequest::create(this, notificationID);
- m_pendingRequests.add(notificationID, request.get());
- return request.release();
+ auto request = NotificationPermissionRequest::create(this, notificationID);
+ m_pendingRequests.add(notificationID, request.ptr());
+ return WTFMove(request);
}
void NotificationPermissionRequestManagerProxy::didReceiveNotificationPermissionDecision(uint64_t notificationID, bool allow)
diff --git a/Source/WebKit2/UIProcess/Notifications/WebNotification.cpp b/Source/WebKit2/UIProcess/Notifications/WebNotification.cpp
index 3705fb064..0a6736aa3 100644
--- a/Source/WebKit2/UIProcess/Notifications/WebNotification.cpp
+++ b/Source/WebKit2/UIProcess/Notifications/WebNotification.cpp
@@ -26,11 +26,6 @@
#include "config.h"
#include "WebNotification.h"
-#include "ArgumentCoders.h"
-#include "ArgumentDecoder.h"
-#include "ArgumentEncoder.h"
-#include "Arguments.h"
-
namespace WebKit {
WebNotification::WebNotification(const String& title, const String& body, const String& iconURL, const String& tag, const String& lang, const String& dir, const String& originString, uint64_t notificationID)
@@ -40,7 +35,7 @@ WebNotification::WebNotification(const String& title, const String& body, const
, m_tag(tag)
, m_lang(lang)
, m_dir(dir)
- , m_origin(WebSecurityOrigin::createFromString(originString))
+ , m_origin(API::SecurityOrigin::createFromString(originString))
, m_notificationID(notificationID)
{
}
diff --git a/Source/WebKit2/UIProcess/Notifications/WebNotification.h b/Source/WebKit2/UIProcess/Notifications/WebNotification.h
index 3682b4f9d..fa4c494d1 100644
--- a/Source/WebKit2/UIProcess/Notifications/WebNotification.h
+++ b/Source/WebKit2/UIProcess/Notifications/WebNotification.h
@@ -27,25 +27,17 @@
#define WebNotification_h
#include "APIObject.h"
-#include "WebSecurityOrigin.h"
-#include <wtf/PassRefPtr.h>
+#include "APISecurityOrigin.h"
#include <wtf/RefPtr.h>
#include <wtf/text/WTFString.h>
-namespace IPC {
-
-class ArgumentDecoder;
-class ArgumentEncoder;
-
-} // namespace IPC
-
namespace WebKit {
class WebNotification : public API::ObjectImpl<API::Object::Type::Notification> {
public:
- static PassRefPtr<WebNotification> create(const String& title, const String& body, const String& iconURL, const String& tag, const String& lang, const String& dir, const String& originString, uint64_t notificationID)
+ static Ref<WebNotification> create(const String& title, const String& body, const String& iconURL, const String& tag, const String& lang, const String& dir, const String& originString, uint64_t notificationID)
{
- return adoptRef(new WebNotification(title, body, iconURL, tag, lang, dir, originString, notificationID));
+ return adoptRef(*new WebNotification(title, body, iconURL, tag, lang, dir, originString, notificationID));
}
const String& title() const { return m_title; }
@@ -54,7 +46,7 @@ public:
const String& tag() const { return m_tag; }
const String& lang() const { return m_lang; }
const String& dir() const { return m_dir; }
- WebSecurityOrigin* origin() const { return m_origin.get(); }
+ API::SecurityOrigin* origin() const { return m_origin.get(); }
uint64_t notificationID() const { return m_notificationID; }
@@ -67,7 +59,7 @@ private:
String m_tag;
String m_lang;
String m_dir;
- RefPtr<WebSecurityOrigin> m_origin;
+ RefPtr<API::SecurityOrigin> m_origin;
uint64_t m_notificationID;
};
diff --git a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp
index 39809fd50..a034007d7 100644
--- a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp
+++ b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp
@@ -27,16 +27,14 @@
#include "WebNotificationManagerProxy.h"
#include "APIArray.h"
-#include "ImmutableDictionary.h"
-#include "WebContext.h"
+#include "APIDictionary.h"
+#include "APISecurityOrigin.h"
#include "WebNotification.h"
#include "WebNotificationManagerMessages.h"
#include "WebPageProxy.h"
+#include "WebProcessPool.h"
#include "WebProcessProxy.h"
-#include "WebSecurityOrigin.h"
-using namespace std;
-using namespace WTF;
using namespace WebCore;
namespace WebKit {
@@ -52,13 +50,13 @@ const char* WebNotificationManagerProxy::supplementName()
return "WebNotificationManagerProxy";
}
-PassRefPtr<WebNotificationManagerProxy> WebNotificationManagerProxy::create(WebContext* context)
+Ref<WebNotificationManagerProxy> WebNotificationManagerProxy::create(WebProcessPool* processPool)
{
- return adoptRef(new WebNotificationManagerProxy(context));
+ return adoptRef(*new WebNotificationManagerProxy(processPool));
}
-WebNotificationManagerProxy::WebNotificationManagerProxy(WebContext* context)
- : WebContextSupplement(context)
+WebNotificationManagerProxy::WebNotificationManagerProxy(WebProcessPool* processPool)
+ : WebContextSupplement(processPool)
{
}
@@ -70,7 +68,7 @@ void WebNotificationManagerProxy::initializeProvider(const WKNotificationProvide
// WebContextSupplement
-void WebNotificationManagerProxy::contextDestroyed()
+void WebNotificationManagerProxy::processPoolDestroyed()
{
m_provider.removeNotificationManager(this);
}
@@ -87,13 +85,13 @@ void WebNotificationManagerProxy::derefWebContextSupplement()
void WebNotificationManagerProxy::populateCopyOfNotificationPermissions(HashMap<String, bool>& permissions)
{
- RefPtr<ImmutableDictionary> knownPermissions = m_provider.notificationPermissions();
+ RefPtr<API::Dictionary> knownPermissions = m_provider.notificationPermissions();
if (!knownPermissions)
return;
permissions.clear();
- RefPtr<API::Array> knownOrigins = knownPermissions->keys();
+ Ref<API::Array> knownOrigins = knownPermissions->keys();
for (size_t i = 0; i < knownOrigins->size(); ++i) {
API::String* origin = knownOrigins->at<API::String>(i);
permissions.set(origin->string(), knownPermissions->get<API::Boolean>(origin->string())->value());
@@ -217,7 +215,7 @@ void WebNotificationManagerProxy::providerDidCloseNotifications(API::Array* glob
if (pageIt == pageNotificationIDs.end()) {
Vector<uint64_t> newVector;
newVector.reserveInitialCapacity(size);
- pageIt = pageNotificationIDs.add(webPage, newVector).iterator;
+ pageIt = pageNotificationIDs.add(webPage, WTFMove(newVector)).iterator;
}
uint64_t pageNotificationID = it->value.second;
@@ -232,17 +230,17 @@ void WebNotificationManagerProxy::providerDidCloseNotifications(API::Array* glob
it->key->process().send(Messages::WebNotificationManager::DidCloseNotifications(it->value), 0);
}
-void WebNotificationManagerProxy::providerDidUpdateNotificationPolicy(const WebSecurityOrigin* origin, bool allowed)
+void WebNotificationManagerProxy::providerDidUpdateNotificationPolicy(const API::SecurityOrigin* origin, bool allowed)
{
- if (!context())
+ if (!processPool())
return;
- context()->sendToAllProcesses(Messages::WebNotificationManager::DidUpdateNotificationDecision(origin->toString(), allowed));
+ processPool()->sendToAllProcesses(Messages::WebNotificationManager::DidUpdateNotificationDecision(origin->securityOrigin().toString(), allowed));
}
void WebNotificationManagerProxy::providerDidRemoveNotificationPolicies(API::Array* origins)
{
- if (!context())
+ if (!processPool())
return;
size_t size = origins->size();
@@ -253,9 +251,21 @@ void WebNotificationManagerProxy::providerDidRemoveNotificationPolicies(API::Arr
originStrings.reserveInitialCapacity(size);
for (size_t i = 0; i < size; ++i)
- originStrings.append(origins->at<WebSecurityOrigin>(i)->toString());
+ originStrings.append(origins->at<API::SecurityOrigin>(i)->securityOrigin().toString());
- context()->sendToAllProcesses(Messages::WebNotificationManager::DidRemoveNotificationDecisions(originStrings));
+ processPool()->sendToAllProcesses(Messages::WebNotificationManager::DidRemoveNotificationDecisions(originStrings));
+}
+
+uint64_t WebNotificationManagerProxy::notificationLocalIDForTesting(WebNotification* notification)
+{
+ if (!notification)
+ return 0;
+
+ auto it = m_globalNotificationMap.find(notification->notificationID());
+ if (it == m_globalNotificationMap.end())
+ return 0;
+
+ return it->value.second;
}
} // namespace WebKit
diff --git a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h
index 591df5b1d..edca5ccf8 100644
--- a/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h
+++ b/Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h
@@ -32,26 +32,24 @@
#include "WebNotificationProvider.h"
#include <WebCore/NotificationClient.h>
#include <wtf/HashMap.h>
-#include <wtf/OwnPtr.h>
-#include <wtf/PassRefPtr.h>
#include <wtf/text/StringHash.h>
namespace API {
class Array;
+class SecurityOrigin;
}
namespace WebKit {
-class WebContext;
class WebPageProxy;
-class WebSecurityOrigin;
+class WebProcessPool;
class WebNotificationManagerProxy : public API::ObjectImpl<API::Object::Type::NotificationManager>, public WebContextSupplement {
public:
static const char* supplementName();
- static PassRefPtr<WebNotificationManagerProxy> create(WebContext*);
+ static Ref<WebNotificationManagerProxy> create(WebProcessPool*);
void initializeProvider(const WKNotificationProviderBase*);
void populateCopyOfNotificationPermissions(HashMap<String, bool>&);
@@ -65,22 +63,24 @@ public:
void providerDidShowNotification(uint64_t notificationID);
void providerDidClickNotification(uint64_t notificationID);
void providerDidCloseNotifications(API::Array* notificationIDs);
- void providerDidUpdateNotificationPolicy(const WebSecurityOrigin*, bool allowed);
+ void providerDidUpdateNotificationPolicy(const API::SecurityOrigin*, bool allowed);
void providerDidRemoveNotificationPolicies(API::Array* origins);
+ uint64_t notificationLocalIDForTesting(WebNotification*);
+
using API::Object::ref;
using API::Object::deref;
private:
- explicit WebNotificationManagerProxy(WebContext*);
+ explicit WebNotificationManagerProxy(WebProcessPool*);
typedef bool (*NotificationFilterFunction)(uint64_t pageID, uint64_t pageNotificationID, uint64_t desiredPageID, const Vector<uint64_t>& desiredPageNotificationIDs);
void clearNotifications(WebPageProxy*, const Vector<uint64_t>& pageNotificationIDs, NotificationFilterFunction);
// WebContextSupplement
- virtual void contextDestroyed() override;
- virtual void refWebContextSupplement() override;
- virtual void derefWebContextSupplement() override;
+ void processPoolDestroyed() override;
+ void refWebContextSupplement() override;
+ void derefWebContextSupplement() override;
WebNotificationProvider m_provider;
// Pair comprised of web page ID and the web process's notification ID
diff --git a/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp b/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp
index 545e4153d..a2a83ada0 100644
--- a/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp
+++ b/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp
@@ -27,12 +27,13 @@
#include "WebNotificationProvider.h"
#include "APIArray.h"
+#include "APIDictionary.h"
#include "APINumber.h"
-#include "ImmutableDictionary.h"
+#include "APISecurityOrigin.h"
#include "WKAPICast.h"
#include "WebNotification.h"
#include "WebNotificationManagerProxy.h"
-#include "WebSecurityOrigin.h"
+#include "WebPageProxy.h"
namespace WebKit {
@@ -71,7 +72,7 @@ void WebNotificationProvider::clearNotifications(const Vector<uint64_t>& notific
for (const auto& notificationID : notificationIDs)
arrayIDs.uncheckedAppend(API::UInt64::create(notificationID));
- m_client.clearNotifications(toAPI(API::Array::create(std::move(arrayIDs)).get()), m_client.base.clientInfo);
+ m_client.clearNotifications(toAPI(API::Array::create(WTFMove(arrayIDs)).ptr()), m_client.base.clientInfo);
}
void WebNotificationProvider::addNotificationManager(WebNotificationManagerProxy* manager)
@@ -90,10 +91,10 @@ void WebNotificationProvider::removeNotificationManager(WebNotificationManagerPr
m_client.removeNotificationManager(toAPI(manager), m_client.base.clientInfo);
}
-PassRefPtr<ImmutableDictionary> WebNotificationProvider::notificationPermissions()
+PassRefPtr<API::Dictionary> WebNotificationProvider::notificationPermissions()
{
if (!m_client.notificationPermissions)
- return ImmutableDictionary::create();
+ return API::Dictionary::create();
return adoptRef(toImpl(m_client.notificationPermissions(m_client.base.clientInfo)));
}
diff --git a/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.h b/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.h
index b48d43346..14fabe16c 100644
--- a/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.h
+++ b/Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.h
@@ -32,6 +32,9 @@
#include <wtf/Vector.h>
namespace API {
+
+class Dictionary;
+
template<> struct ClientTraits<WKNotificationProviderBase> {
typedef std::tuple<WKNotificationProviderV0> Versions;
};
@@ -39,11 +42,9 @@ template<> struct ClientTraits<WKNotificationProviderBase> {
namespace WebKit {
-class ImmutableDictionary;
class WebNotification;
class WebNotificationManagerProxy;
class WebPageProxy;
-class WebSecurityOrigin;
class WebNotificationProvider : public API::Client<WKNotificationProviderBase> {
public:
@@ -55,7 +56,7 @@ public:
void addNotificationManager(WebNotificationManagerProxy*);
void removeNotificationManager(WebNotificationManagerProxy*);
- PassRefPtr<ImmutableDictionary> notificationPermissions();
+ PassRefPtr<API::Dictionary> notificationPermissions();
};
} // namespace WebKit