diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/Notifications')
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 |