Diff
Modified: trunk/Source/WebKit2/ChangeLog (213776 => 213777)
--- trunk/Source/WebKit2/ChangeLog 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/ChangeLog 2017-03-13 01:37:36 UTC (rev 213777)
@@ -1,3 +1,38 @@
+2017-03-12 Brady Eidson <[email protected]>
+
+ Transition GenericCallback from std::function to WTF::Function.
+ https://bugs.webkit.org/show_bug.cgi?id=169530
+
+ Reviewed by Dean Jackson.
+
+ * UIProcess/GenericCallback.h:
+ (WebKit::GenericCallback::create):
+ (WebKit::GenericCallback::performCallbackWithReturnValue):
+ (WebKit::GenericCallback::GenericCallback):
+ (WebKit::CallbackMap::put):
+
+ * UIProcess/WebCookieManagerProxy.cpp:
+ (WebKit::WebCookieManagerProxy::getHostnamesWithCookies):
+ (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy):
+ * UIProcess/WebCookieManagerProxy.h:
+
+ * UIProcess/WebFrameProxy.cpp:
+ (WebKit::WebFrameProxy::getWebArchive):
+ (WebKit::WebFrameProxy::getMainResourceData):
+ (WebKit::WebFrameProxy::getResourceData):
+ * UIProcess/WebFrameProxy.h:
+
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::getSelectionAsWebArchiveData):
+ (WebKit::WebPageProxy::getMainResourceDataOfFrame):
+ (WebKit::WebPageProxy::getResourceDataFromFrame):
+ (WebKit::WebPageProxy::getWebArchiveOfFrame):
+ * UIProcess/WebPageProxy.h:
+
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::getStatistics):
+ * UIProcess/WebProcessPool.h:
+
2017-03-12 Adrian Perez de Castro <[email protected]>
[GTK] Unbreak build with GTK+ >=3.20 after r213772
Modified: trunk/Source/WebKit2/UIProcess/GenericCallback.h (213776 => 213777)
--- trunk/Source/WebKit2/UIProcess/GenericCallback.h 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/UIProcess/GenericCallback.h 2017-03-13 01:37:36 UTC (rev 213777)
@@ -32,6 +32,7 @@
#include "ShareableBitmap.h"
#include "WKAPICast.h"
#include <functional>
+#include <wtf/Function.h>
#include <wtf/HashMap.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
@@ -92,11 +93,11 @@
template<typename... T>
class GenericCallback : public CallbackBase {
public:
- typedef std::function<void (T..., Error)> CallbackFunction;
+ typedef Function<void (T..., Error)> CallbackFunction;
- static PassRefPtr<GenericCallback> create(CallbackFunction callback, const ProcessThrottler::BackgroundActivityToken& activityToken = nullptr)
+ static PassRefPtr<GenericCallback> create(CallbackFunction&& callback, const ProcessThrottler::BackgroundActivityToken& activityToken = nullptr)
{
- return adoptRef(new GenericCallback(callback, activityToken));
+ return adoptRef(new GenericCallback(WTFMove(callback), activityToken));
}
virtual ~GenericCallback()
@@ -109,9 +110,9 @@
if (!m_callback)
return;
- m_callback(returnValue..., Error::None);
+ m_callback.value()(returnValue..., Error::None);
- m_callback = nullptr;
+ m_callback = std::nullopt;
}
void performCallback()
@@ -124,15 +125,15 @@
if (!m_callback)
return;
- m_callback(typename std::remove_reference<T>::type()..., error);
+ m_callback.value()(typename std::remove_reference<T>::type()..., error);
- m_callback = nullptr;
+ m_callback = std::nullopt;
}
private:
- GenericCallback(CallbackFunction callback, const ProcessThrottler::BackgroundActivityToken& activityToken)
+ GenericCallback(CallbackFunction&& callback, const ProcessThrottler::BackgroundActivityToken& activityToken)
: CallbackBase(type(), activityToken)
- , m_callback(callback)
+ , m_callback(WTFMove(callback))
{
}
@@ -143,7 +144,7 @@
return &tag;
}
- CallbackFunction m_callback;
+ std::optional<CallbackFunction> m_callback;
};
template<typename APIReturnValueType, typename InternalReturnValueType = typename APITypeInfo<APIReturnValueType>::ImplType*>
@@ -197,6 +198,13 @@
return put(callback);
}
+ template<typename... T>
+ uint64_t put(Function<void (T...)>&& function, const ProcessThrottler::BackgroundActivityToken& activityToken)
+ {
+ auto callback = GenericCallbackType<sizeof...(T), T...>::type::create(WTFMove(function), activityToken);
+ return put(callback);
+ }
+
template<class T>
RefPtr<T> take(uint64_t callbackID)
{
Modified: trunk/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp (213776 => 213777)
--- trunk/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp 2017-03-13 01:37:36 UTC (rev 213777)
@@ -94,7 +94,7 @@
API::Object::deref();
}
-void WebCookieManagerProxy::getHostnamesWithCookies(WebCore::SessionID sessionID, std::function<void (API::Array*, CallbackBase::Error)> callbackFunction)
+void WebCookieManagerProxy::getHostnamesWithCookies(WebCore::SessionID sessionID, Function<void (API::Array*, CallbackBase::Error)>&& callbackFunction)
{
auto callback = ArrayCallback::create(WTFMove(callbackFunction));
uint64_t callbackID = callback->callbackID();
@@ -176,7 +176,7 @@
processPool()->sendToNetworkingProcess(Messages::WebCookieManager::SetHTTPCookieAcceptPolicy(policy));
}
-void WebCookieManagerProxy::getHTTPCookieAcceptPolicy(std::function<void (HTTPCookieAcceptPolicy, CallbackBase::Error)> callbackFunction)
+void WebCookieManagerProxy::getHTTPCookieAcceptPolicy(Function<void (HTTPCookieAcceptPolicy, CallbackBase::Error)> callbackFunction)
{
auto callback = HTTPCookieAcceptPolicyCallback::create(WTFMove(callbackFunction));
Modified: trunk/Source/WebKit2/UIProcess/WebCookieManagerProxy.h (213776 => 213777)
--- trunk/Source/WebKit2/UIProcess/WebCookieManagerProxy.h 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/UIProcess/WebCookieManagerProxy.h 2017-03-13 01:37:36 UTC (rev 213777)
@@ -65,7 +65,7 @@
void initializeClient(const WKCookieManagerClientBase*);
- void getHostnamesWithCookies(WebCore::SessionID, std::function<void (API::Array*, CallbackBase::Error)>);
+ void getHostnamesWithCookies(WebCore::SessionID, Function<void (API::Array*, CallbackBase::Error)>&&);
void deleteCookiesForHostname(WebCore::SessionID, const String& hostname);
void deleteAllCookies(WebCore::SessionID);
void deleteAllCookiesModifiedSince(WebCore::SessionID, std::chrono::system_clock::time_point);
@@ -73,7 +73,7 @@
void setCookies(WebCore::SessionID, const Vector<WebCore::Cookie>&, const WebCore::URL&, const WebCore::URL& mainDocumentURL);
void setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy);
- void getHTTPCookieAcceptPolicy(std::function<void (HTTPCookieAcceptPolicy, CallbackBase::Error)>);
+ void getHTTPCookieAcceptPolicy(Function<void (HTTPCookieAcceptPolicy, CallbackBase::Error)>);
void setCookieStoragePartitioningEnabled(bool);
void startObservingCookieChanges(WebCore::SessionID);
Modified: trunk/Source/WebKit2/UIProcess/WebFrameProxy.cpp (213776 => 213777)
--- trunk/Source/WebKit2/UIProcess/WebFrameProxy.cpp 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/UIProcess/WebFrameProxy.cpp 2017-03-13 01:37:36 UTC (rev 213777)
@@ -202,7 +202,7 @@
return *static_cast<WebFormSubmissionListenerProxy*>(m_activeListener.get());
}
-void WebFrameProxy::getWebArchive(std::function<void (API::Data*, CallbackBase::Error)> callbackFunction)
+void WebFrameProxy::getWebArchive(Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
{
if (!m_page) {
callbackFunction(nullptr, CallbackBase::Error::Unknown);
@@ -209,10 +209,10 @@
return;
}
- m_page->getWebArchiveOfFrame(this, callbackFunction);
+ m_page->getWebArchiveOfFrame(this, WTFMove(callbackFunction));
}
-void WebFrameProxy::getMainResourceData(std::function<void (API::Data*, CallbackBase::Error)> callbackFunction)
+void WebFrameProxy::getMainResourceData(Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
{
if (!m_page) {
callbackFunction(nullptr, CallbackBase::Error::Unknown);
@@ -219,10 +219,10 @@
return;
}
- m_page->getMainResourceDataOfFrame(this, callbackFunction);
+ m_page->getMainResourceDataOfFrame(this, WTFMove(callbackFunction));
}
-void WebFrameProxy::getResourceData(API::URL* resourceURL, std::function<void (API::Data*, CallbackBase::Error)> callbackFunction)
+void WebFrameProxy::getResourceData(API::URL* resourceURL, Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
{
if (!m_page) {
callbackFunction(nullptr, CallbackBase::Error::Unknown);
@@ -229,7 +229,7 @@
return;
}
- m_page->getResourceDataFromFrame(this, resourceURL, callbackFunction);
+ m_page->getResourceDataFromFrame(this, resourceURL, WTFMove(callbackFunction));
}
void WebFrameProxy::setUnreachableURL(const String& unreachableURL)
Modified: trunk/Source/WebKit2/UIProcess/WebFrameProxy.h (213776 => 213777)
--- trunk/Source/WebKit2/UIProcess/WebFrameProxy.h 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/UIProcess/WebFrameProxy.h 2017-03-13 01:37:36 UTC (rev 213777)
@@ -101,9 +101,9 @@
bool isDisplayingMarkupDocument() const;
bool isDisplayingPDFDocument() const;
- void getWebArchive(std::function<void (API::Data*, CallbackBase::Error)>);
- void getMainResourceData(std::function<void (API::Data*, CallbackBase::Error)>);
- void getResourceData(API::URL*, std::function<void (API::Data*, CallbackBase::Error)>);
+ void getWebArchive(Function<void (API::Data*, CallbackBase::Error)>&&);
+ void getMainResourceData(Function<void (API::Data*, CallbackBase::Error)>&&);
+ void getResourceData(API::URL*, Function<void (API::Data*, CallbackBase::Error)>&&);
void didStartProvisionalLoad(const String& url);
void didReceiveServerRedirectForProvisionalLoad(const String& url);
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (213776 => 213777)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2017-03-13 01:37:36 UTC (rev 213777)
@@ -2974,7 +2974,7 @@
m_process->send(Messages::WebPage::GetSelectionOrContentsAsString(callbackID), m_pageID);
}
-void WebPageProxy::getSelectionAsWebArchiveData(std::function<void (API::Data*, CallbackBase::Error)> callbackFunction)
+void WebPageProxy::getSelectionAsWebArchiveData(Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
{
if (!isValid()) {
callbackFunction(nullptr, CallbackBase::Error::Unknown);
@@ -2985,7 +2985,7 @@
m_process->send(Messages::WebPage::GetSelectionAsWebArchiveData(callbackID), m_pageID);
}
-void WebPageProxy::getMainResourceDataOfFrame(WebFrameProxy* frame, std::function<void (API::Data*, CallbackBase::Error)> callbackFunction)
+void WebPageProxy::getMainResourceDataOfFrame(WebFrameProxy* frame, Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
{
if (!isValid() || !frame) {
callbackFunction(nullptr, CallbackBase::Error::Unknown);
@@ -2996,7 +2996,7 @@
m_process->send(Messages::WebPage::GetMainResourceDataOfFrame(frame->frameID(), callbackID), m_pageID);
}
-void WebPageProxy::getResourceDataFromFrame(WebFrameProxy* frame, API::URL* resourceURL, std::function<void (API::Data*, CallbackBase::Error)> callbackFunction)
+void WebPageProxy::getResourceDataFromFrame(WebFrameProxy* frame, API::URL* resourceURL, Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
{
if (!isValid()) {
callbackFunction(nullptr, CallbackBase::Error::Unknown);
@@ -3007,7 +3007,7 @@
m_process->send(Messages::WebPage::GetResourceDataFromFrame(frame->frameID(), resourceURL->string(), callbackID), m_pageID);
}
-void WebPageProxy::getWebArchiveOfFrame(WebFrameProxy* frame, std::function<void (API::Data*, CallbackBase::Error)> callbackFunction)
+void WebPageProxy::getWebArchiveOfFrame(WebFrameProxy* frame, Function<void (API::Data*, CallbackBase::Error)>&& callbackFunction)
{
if (!isValid()) {
callbackFunction(nullptr, CallbackBase::Error::Unknown);
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (213776 => 213777)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2017-03-13 01:37:36 UTC (rev 213777)
@@ -800,13 +800,13 @@
#if ENABLE(MHTML)
void getContentsAsMHTMLData(std::function<void (API::Data*, CallbackBase::Error)>);
#endif
- void getMainResourceDataOfFrame(WebFrameProxy*, std::function<void (API::Data*, CallbackBase::Error)>);
- void getResourceDataFromFrame(WebFrameProxy*, API::URL*, std::function<void (API::Data*, CallbackBase::Error)>);
+ void getMainResourceDataOfFrame(WebFrameProxy*, Function<void (API::Data*, CallbackBase::Error)>&&);
+ void getResourceDataFromFrame(WebFrameProxy*, API::URL*, Function<void (API::Data*, CallbackBase::Error)>&&);
void getRenderTreeExternalRepresentation(std::function<void (const String&, CallbackBase::Error)>);
void getSelectionOrContentsAsString(std::function<void (const String&, CallbackBase::Error)>);
- void getSelectionAsWebArchiveData(std::function<void (API::Data*, CallbackBase::Error)>);
+ void getSelectionAsWebArchiveData(Function<void (API::Data*, CallbackBase::Error)>&&);
void getSourceForFrame(WebFrameProxy*, std::function<void (const String&, CallbackBase::Error)>);
- void getWebArchiveOfFrame(WebFrameProxy*, std::function<void (API::Data*, CallbackBase::Error)>);
+ void getWebArchiveOfFrame(WebFrameProxy*, Function<void (API::Data*, CallbackBase::Error)>&&);
void runJavaScriptInMainFrame(const String&, std::function<void (API::SerializedScriptValue*, bool hadException, const WebCore::ExceptionDetails&, CallbackBase::Error)> callbackFunction);
void forceRepaint(PassRefPtr<VoidCallback>);
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (213776 => 213777)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2017-03-13 01:37:36 UTC (rev 213777)
@@ -1227,7 +1227,7 @@
#endif
}
-void WebProcessPool::getStatistics(uint32_t statisticsMask, std::function<void (API::Dictionary*, CallbackBase::Error)> callbackFunction)
+void WebProcessPool::getStatistics(uint32_t statisticsMask, Function<void (API::Dictionary*, CallbackBase::Error)>&& callbackFunction)
{
if (!statisticsMask) {
callbackFunction(nullptr, CallbackBase::Error::Unknown);
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (213776 => 213777)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2017-03-13 00:34:38 UTC (rev 213776)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2017-03-13 01:37:36 UTC (rev 213777)
@@ -274,7 +274,7 @@
void setHTTPPipeliningEnabled(bool);
bool httpPipeliningEnabled() const;
- void getStatistics(uint32_t statisticsMask, std::function<void (API::Dictionary*, CallbackBase::Error)>);
+ void getStatistics(uint32_t statisticsMask, Function<void (API::Dictionary*, CallbackBase::Error)>&&);
bool _javascript_ConfigurationFileEnabled() { return m_javaScriptConfigurationFileEnabled; }
void setJavaScriptConfigurationFileEnabled(bool flag);