Title: [169962] trunk/Source/WebKit2
Revision
169962
Author
m...@apple.com
Date
2014-06-13 22:32:07 -0700 (Fri, 13 Jun 2014)

Log Message

Make GenericCallback variadic
https://bugs.webkit.org/show_bug.cgi?id=133897

Reviewed by Sam Weinig.

Also eliminated legacy callback functions and all CallbackBase derived classes outside of
GenericCallback.h.

* UIProcess/API/C/WKPage.cpp:
(WKPageValidateCommand): Changed legacy callback (with leading bool parameter) into modern
callback (with trailing error parameter).
(WKPageComputePagesForPrinting): Ditto.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _getWebArchiveDataWithCompletionHandler:]): Ditto.
(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]): Ditto.

* UIProcess/API/Cocoa/_WKThumbnailView.mm:
(-[_WKThumbnailView _requestSnapshotIfNeeded]): Ditto.

* UIProcess/API/mac/WKView.mm:
(-[WKView validateUserInterfaceItem:]): Ditto.
(-[WKView startSpeaking:]): Ditto.

* UIProcess/AutoCorrectionCallback.h: Replaced CallbackBase derived classes with
GenericCallback specializations.

* UIProcess/GenericCallback.h:
- Made GenericCallback variadic:
(WebKit::GenericCallback::performCallbackWithReturnValue):
(WebKit::GenericCallback::invalidate):
(WebKit::GenericAPICallback::create):

- Replaced CallbackBase derived classes with GenericCallback specializations:
(WebKit::GenericCallback::create): Deleted.
(WebKit::ComputedPagesCallback::create): Deleted.
(WebKit::ComputedPagesCallback::~ComputedPagesCallback): Deleted.
(WebKit::ComputedPagesCallback::performCallbackWithReturnValue): Deleted.
(WebKit::ComputedPagesCallback::invalidate): Deleted.
(WebKit::ComputedPagesCallback::ComputedPagesCallback): Deleted.
(WebKit::ImageCallback::create): Deleted.
(WebKit::ImageCallback::~ImageCallback): Deleted.
(WebKit::ImageCallback::performCallbackWithReturnValue): Deleted.
(WebKit::ImageCallback::invalidate): Deleted.
(WebKit::ImageCallback::ImageCallback): Deleted.

* UIProcess/WebPageProxy.h: Replaced CallbackBase derived classes with GenericCallback
specializations.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]): Changed
legacy callback (with leading bool parameter) into modern callback (with trailing error
parameter).
(-[WKContentView requestDictationContext:]): Ditto.
(-[WKContentView requestAutocorrectionContextWithCompletionHandler:]): Ditto.

* UIProcess/mac/WKPrintingView.mm:
(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]): Ditto.
(-[WKPrintingView _askPageToComputePageRects]): Ditto.
(-[WKPrintingView _drawPreview:]): Ditto.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (169961 => 169962)


--- trunk/Source/WebKit2/ChangeLog	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/ChangeLog	2014-06-14 05:32:07 UTC (rev 169962)
@@ -1,3 +1,66 @@
+2014-06-13  Dan Bernstein  <m...@apple.com>
+
+        Make GenericCallback variadic
+        https://bugs.webkit.org/show_bug.cgi?id=133897
+
+        Reviewed by Sam Weinig.
+
+        Also eliminated legacy callback functions and all CallbackBase derived classes outside of
+        GenericCallback.h.
+
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageValidateCommand): Changed legacy callback (with leading bool parameter) into modern
+        callback (with trailing error parameter).
+        (WKPageComputePagesForPrinting): Ditto.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _getWebArchiveDataWithCompletionHandler:]): Ditto.
+        (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]): Ditto.
+
+        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
+        (-[_WKThumbnailView _requestSnapshotIfNeeded]): Ditto.
+
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView validateUserInterfaceItem:]): Ditto.
+        (-[WKView startSpeaking:]): Ditto.
+
+        * UIProcess/AutoCorrectionCallback.h: Replaced CallbackBase derived classes with
+        GenericCallback specializations.
+
+        * UIProcess/GenericCallback.h:
+        - Made GenericCallback variadic:
+        (WebKit::GenericCallback::performCallbackWithReturnValue):
+        (WebKit::GenericCallback::invalidate):
+        (WebKit::GenericAPICallback::create):
+
+        - Replaced CallbackBase derived classes with GenericCallback specializations:
+        (WebKit::GenericCallback::create): Deleted.
+        (WebKit::ComputedPagesCallback::create): Deleted.
+        (WebKit::ComputedPagesCallback::~ComputedPagesCallback): Deleted.
+        (WebKit::ComputedPagesCallback::performCallbackWithReturnValue): Deleted.
+        (WebKit::ComputedPagesCallback::invalidate): Deleted.
+        (WebKit::ComputedPagesCallback::ComputedPagesCallback): Deleted.
+        (WebKit::ImageCallback::create): Deleted.
+        (WebKit::ImageCallback::~ImageCallback): Deleted.
+        (WebKit::ImageCallback::performCallbackWithReturnValue): Deleted.
+        (WebKit::ImageCallback::invalidate): Deleted.
+        (WebKit::ImageCallback::ImageCallback): Deleted.
+
+        * UIProcess/WebPageProxy.h: Replaced CallbackBase derived classes with GenericCallback
+        specializations.
+
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]): Changed
+        legacy callback (with leading bool parameter) into modern callback (with trailing error
+        parameter).
+        (-[WKContentView requestDictationContext:]): Ditto.
+        (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]): Ditto.
+
+        * UIProcess/mac/WKPrintingView.mm:
+        (-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]): Ditto.
+        (-[WKPrintingView _askPageToComputePageRects]): Ditto.
+        (-[WKPrintingView _drawPreview:]): Ditto.
+
 2014-06-13  Tim Horton  <timothy_hor...@apple.com>
 
         Unreviewed; fix the build.

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (169961 => 169962)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2014-06-14 05:32:07 UTC (rev 169962)
@@ -1657,8 +1657,8 @@
 
 void WKPageValidateCommand(WKPageRef pageRef, WKStringRef command, void* context, WKPageValidateCommandCallback callback)
 {
-    toImpl(pageRef)->validateCommand(toImpl(command)->string(), ValidateCommandCallback::create([context, callback](bool error, StringImpl* commandName, bool isEnabled, int32_t state) {
-        callback(toAPI(commandName), isEnabled, state, error ? toAPI(API::Error::create().get()) : 0, context);
+    toImpl(pageRef)->validateCommand(toImpl(command)->string(), ValidateCommandCallback::create([context, callback](StringImpl* commandName, bool isEnabled, int32_t state, CallbackBase::Error error) {
+        callback(toAPI(commandName), isEnabled, state, error != CallbackBase::Error::None ? toAPI(API::Error::create().get()) : 0, context);
     }));
 }
 
@@ -1679,11 +1679,11 @@
 
 void WKPageComputePagesForPrinting(WKPageRef page, WKFrameRef frame, WKPrintInfo printInfo, WKPageComputePagesForPrintingFunction callback, void* context)
 {
-    toImpl(page)->computePagesForPrinting(toImpl(frame), printInfoFromWKPrintInfo(printInfo), ComputedPagesCallback::create([context, callback](bool error, const Vector<WebCore::IntRect>& rects, double scaleFactor) {
+    toImpl(page)->computePagesForPrinting(toImpl(frame), printInfoFromWKPrintInfo(printInfo), ComputedPagesCallback::create([context, callback](const Vector<WebCore::IntRect>& rects, double scaleFactor, CallbackBase::Error error) {
         Vector<WKRect> wkRects(rects.size());
         for (size_t i = 0; i < rects.size(); ++i)
             wkRects[i] = toAPI(rects[i]);
-        callback(wkRects.data(), wkRects.size(), scaleFactor, error ? toAPI(API::Error::create().get()) : 0, context);
+        callback(wkRects.data(), wkRects.size(), scaleFactor, error != CallbackBase::Error::None ? toAPI(API::Error::create().get()) : 0, context);
     }));
 }
 

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (169961 => 169962)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2014-06-14 05:32:07 UTC (rev 169962)
@@ -1520,9 +1520,9 @@
 {
     auto handler = adoptNS([completionHandler copy]);
 
-    _page->getWebArchiveOfFrame(_page->mainFrame(), WebKit::DataCallback::create([handler](bool isError, API::Data* data) {
+    _page->getWebArchiveOfFrame(_page->mainFrame(), WebKit::DataCallback::create([handler](API::Data* data, WebKit::CallbackBase::Error error) {
         void (^completionHandlerBlock)(NSData *, NSError *) = (void (^)(NSData *, NSError *))handler.get();
-        if (isError) {
+        if (error != WebKit::CallbackBase::Error::None) {
             // FIXME: Pipe a proper error in from the WebPageProxy.
             RetainPtr<NSError> error = adoptNS([[NSError alloc] init]);
             completionHandlerBlock(nil, error.get());
@@ -2030,7 +2030,7 @@
 #endif
     
     void(^copiedCompletionHandler)(CGImageRef) = [completionHandler copy];
-    _page->takeSnapshot(WebCore::enclosingIntRect(snapshotRectInContentCoordinates), WebCore::expandedIntSize(WebCore::FloatSize(imageSize)), WebKit::SnapshotOptionsExcludeDeviceScaleFactor, [=](bool, const WebKit::ShareableBitmap::Handle& imageHandle) {
+    _page->takeSnapshot(WebCore::enclosingIntRect(snapshotRectInContentCoordinates), WebCore::expandedIntSize(WebCore::FloatSize(imageSize)), WebKit::SnapshotOptionsExcludeDeviceScaleFactor, [=](const WebKit::ShareableBitmap::Handle& imageHandle, CallbackBase::Error) {
 #if PLATFORM(IOS)
         // Automatically delete when this goes out of scope.
         auto uniqueActivityToken = std::unique_ptr<WebKit::ProcessThrottler::BackgroundActivityToken>(activityToken);

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKThumbnailView.mm (169961 => 169962)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKThumbnailView.mm	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKThumbnailView.mm	2014-06-14 05:32:07 UTC (rev 169962)
@@ -129,7 +129,7 @@
     IntSize bitmapSize = snapshotRect.size();
     bitmapSize.scale(_scale * _webPageProxy->deviceScaleFactor());
     _lastSnapshotScale = _scale;
-    _webPageProxy->takeSnapshot(snapshotRect, bitmapSize, options, [thumbnailView](bool, const ShareableBitmap::Handle& imageHandle) {
+    _webPageProxy->takeSnapshot(snapshotRect, bitmapSize, options, [thumbnailView](const ShareableBitmap::Handle& imageHandle, CallbackBase::Error) {
         RefPtr<ShareableBitmap> bitmap = ShareableBitmap::create(imageHandle, SharedMemory::ReadOnly);
         RetainPtr<CGImageRef> cgImage = bitmap ? bitmap->makeCGImage() : nullptr;
         [thumbnailView _didTakeSnapshot:cgImage.get()];

Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (169961 => 169962)


--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm	2014-06-14 05:32:07 UTC (rev 169962)
@@ -835,9 +835,9 @@
         // If we are not already awaiting validation for this command, start the asynchronous validation process.
         // FIXME: Theoretically, there is a race here; when we get the answer it might be old, from a previous time
         // we asked for the same command; there is no guarantee the answer is still valid.
-        _data->_page->validateCommand(commandName, ValidateCommandCallback::create([self](bool error, StringImpl* commandName, bool isEnabled, int32_t state) {
+        _data->_page->validateCommand(commandName, ValidateCommandCallback::create([self](StringImpl* commandName, bool isEnabled, int32_t state, CallbackBase::Error error) {
             // If the process exits before the command can be validated, we'll be called back with an error.
-            if (error)
+            if (error != CallbackBase::Error::None)
                 return;
             
             [self _setUserInterfaceItemState:nsStringFromWebCoreString(commandName) enabled:isEnabled state:state];
@@ -852,8 +852,8 @@
 
 - (IBAction)startSpeaking:(id)sender
 {
-    _data->_page->getSelectionOrContentsAsString(StringCallback::create([self](bool error, StringImpl* string) {
-        if (error)
+    _data->_page->getSelectionOrContentsAsString(StringCallback::create([self](StringImpl* string, CallbackBase::Error error) {
+        if (error != CallbackBase::Error::None)
             return;
         if (!string)
             return;

Modified: trunk/Source/WebKit2/UIProcess/AutoCorrectionCallback.h (169961 => 169962)


--- trunk/Source/WebKit2/UIProcess/AutoCorrectionCallback.h	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/UIProcess/AutoCorrectionCallback.h	2014-06-14 05:32:07 UTC (rev 169962)
@@ -35,130 +35,10 @@
 
 namespace WebKit {
 
-class AutocorrectionDataCallback : public CallbackBase {
-public:
-    typedef std::function<void (bool, const Vector<WebCore::FloatRect>&, const String&, double, uint64_t)> CallbackFunction;
+typedef GenericCallback<const Vector<WebCore::FloatRect>&, const String&, double, uint64_t> AutocorrectionDataCallback;
+typedef GenericCallback<const String&, const String&, const String&, const String&, uint64_t, uint64_t> AutocorrectionContextCallback;
+typedef GenericCallback<const String&, const String&, const String&> DictationContextCallback;
 
-    static PassRefPtr<AutocorrectionDataCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new AutocorrectionDataCallback(callback));
-    }
-
-    virtual ~AutocorrectionDataCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(const Vector<WebCore::FloatRect>& returnValue1, const String& returnValue2, double returnValue3, uint64_t returnValue4)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, returnValue1, returnValue2, returnValue3, returnValue4);
-
-        m_callback = 0;
-    }
-
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        m_callback(true, Vector<WebCore::FloatRect>(), String(), 0, 0);
-
-        m_callback = 0;
-    }
-
-private:
-    AutocorrectionDataCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-        ASSERT(m_callback);
-    }
-    
-    CallbackFunction m_callback;
-};
-
-class AutocorrectionContextCallback : public CallbackBase {
-public:
-    typedef std::function<void (bool, const String&, const String&, const String&, const String&, uint64_t, uint64_t)> CallbackFunction;
-
-    static PassRefPtr<AutocorrectionContextCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new AutocorrectionContextCallback(callback));
-    }
-
-    virtual ~AutocorrectionContextCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(const String& returnValue1, const String& returnValue2, const String& returnValue3, const String& returnValue4, uint64_t returnValue5, uint64_t returnValue6)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, returnValue1, returnValue2, returnValue3, returnValue4, returnValue5, returnValue6);
-
-        m_callback = 0;
-    }
-
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        m_callback(true, String(), String(), String(), String(), 0, 0);
-
-        m_callback = 0;
-    }
-
-private:
-    AutocorrectionContextCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-        ASSERT(m_callback);
-    }
-    
-    CallbackFunction m_callback;
-};
-
-class DictationContextCallback : public CallbackBase {
-public:
-    typedef std::function<void (bool, const String&, const String&, const String&)> CallbackFunction;
-
-    static PassRefPtr<DictationContextCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new DictationContextCallback(callback));
-    }
-
-    virtual ~DictationContextCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(const String& returnValue1, const String& returnValue2, const String& returnValue3)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, returnValue1, returnValue2, returnValue3);
-        m_callback = nullptr;
-    }
-
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        m_callback(true, String(), String(), String());
-        m_callback = nullptr;
-    }
-    
-private:
-    DictationContextCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-        ASSERT(m_callback);
-    }
-    
-    CallbackFunction m_callback;
-};
-
 } // namespace WebKit
 
 #endif // AutoCorrectionCallback_h

Modified: trunk/Source/WebKit2/UIProcess/GenericCallback.h (169961 => 169962)


--- trunk/Source/WebKit2/UIProcess/GenericCallback.h	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/UIProcess/GenericCallback.h	2014-06-14 05:32:07 UTC (rev 169962)
@@ -124,36 +124,27 @@
     }
 };
 
-template<typename T>
+template<typename... T>
 class GenericCallback : public CallbackBase {
 public:
-    typedef std::function<void (T, Error)> CallbackFunction;
+    typedef std::function<void (T..., Error)> CallbackFunction;
 
     static PassRefPtr<GenericCallback> create(CallbackFunction callback)
     {
         return adoptRef(new GenericCallback(callback));
     }
 
-    // FIXME: Get rid of this legacy version.
-    typedef std::function<void (bool, T)> LegacyCallbackFunction;
-    static PassRefPtr<GenericCallback> create(LegacyCallbackFunction callback)
-    {
-        return adoptRef(new GenericCallback([callback](T t, Error error) {
-            callback(error != Error::None, std::move(t));
-        }));
-    }
-
     virtual ~GenericCallback()
     {
         ASSERT(!m_callback);
     }
 
-    void performCallbackWithReturnValue(T returnValue)
+    void performCallbackWithReturnValue(T... returnValue)
     {
         if (!m_callback)
             return;
 
-        m_callback(returnValue, Error::None);
+        m_callback(returnValue..., Error::None);
 
         m_callback = nullptr;
     }
@@ -163,7 +154,7 @@
         if (!m_callback)
             return;
 
-        m_callback(T(), error);
+        m_callback(typename std::remove_reference<T>::type()..., error);
 
         m_callback = nullptr;
     }
@@ -184,99 +175,15 @@
 
     static PassRefPtr<GenericCallback<InternalReturnValueType>> create(void* context, CallbackFunction callback)
     {
-        return GenericCallback<InternalReturnValueType>::create([context, callback](bool error, InternalReturnValueType returnValue) {
-            callback(toAPI(returnValue), error ? toAPI(API::Error::create().get()) : 0, context);
+        return GenericCallback<InternalReturnValueType>::create([context, callback](InternalReturnValueType returnValue, CallbackBase::Error error) {
+            callback(toAPI(returnValue), error != CallbackBase::Error::None ? toAPI(API::Error::create().get()) : 0, context);
         });
     }
 };
 
-// FIXME: Make a version of GenericCallback with two arguments, and define ComputedPagesCallback as a specialization.
-class ComputedPagesCallback : public CallbackBase {
-public:
-    typedef std::function<void (bool, const Vector<WebCore::IntRect>&, double)> CallbackFunction;
+typedef GenericCallback<const Vector<WebCore::IntRect>&, double> ComputedPagesCallback;
+typedef GenericCallback<const ShareableBitmap::Handle&> ImageCallback;
 
-    static PassRefPtr<ComputedPagesCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new ComputedPagesCallback(callback));
-    }
-
-    virtual ~ComputedPagesCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(const Vector<WebCore::IntRect>& returnValue1, double returnValue2)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, returnValue1, returnValue2);
-
-        m_callback = 0;
-    }
-    
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        m_callback(true, Vector<WebCore::IntRect>(), 0);
-        
-        m_callback = 0;
-    }
-
-private:
-
-    ComputedPagesCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-    }
-
-    CallbackFunction m_callback;
-};
-
-class ImageCallback : public CallbackBase {
-public:
-    typedef std::function<void (bool, const ShareableBitmap::Handle&)> CallbackFunction;
-
-    static PassRefPtr<ImageCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new ImageCallback(callback));
-    }
-
-    virtual ~ImageCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(const ShareableBitmap::Handle& returnValue1)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, returnValue1);
-
-        m_callback = 0;
-    }
-
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        RefPtr<API::Error> error = API::Error::create();
-        ShareableBitmap::Handle handle;
-        m_callback(true, handle);
-
-        m_callback = 0;
-    }
-
-private:
-
-    ImageCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-    }
-    
-    CallbackFunction m_callback;
-};
-
 template<typename T>
 void invalidateCallbackMap(HashMap<uint64_t, T>& map, CallbackBase::Error error = CallbackBase::Error::Unknown)
 {

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (169961 => 169962)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2014-06-14 05:32:07 UTC (rev 169962)
@@ -204,226 +204,16 @@
 };
 #endif
 
-// FIXME: Make a version of CallbackBase with three arguments, and define ValidateCommandCallback as a specialization.
-class ValidateCommandCallback : public CallbackBase {
-public:
-    typedef std::function<void (bool, StringImpl*, bool, int32_t)> CallbackFunction;
+typedef GenericCallback<StringImpl*, bool, int32_t> ValidateCommandCallback;
+typedef GenericCallback<const WebCore::IntRect&, const EditingRange&> RectForCharacterRangeCallback;
 
-    static PassRefPtr<ValidateCommandCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new ValidateCommandCallback(callback));
-    }
-
-    virtual ~ValidateCommandCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(StringImpl* returnValue1, bool returnValue2, int returnValue3)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, returnValue1, returnValue2, returnValue3);
-
-        m_callback = 0;
-    }
-    
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        m_callback(true, 0, 0, 0);
-        
-        m_callback = 0;
-    }
-
-private:
-
-    ValidateCommandCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-    }
-
-    CallbackFunction m_callback;
-};
-
-// FIXME: Make a version of CallbackBase with two arguments, and define RectForCharacterRangeCallback as a specialization.
-class RectForCharacterRangeCallback : public CallbackBase {
-public:
-    typedef std::function<void (bool, const WebCore::IntRect&, const EditingRange&)> CallbackFunction;
-
-    static PassRefPtr<RectForCharacterRangeCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new RectForCharacterRangeCallback(callback));
-    }
-
-    virtual ~RectForCharacterRangeCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(const WebCore::IntRect& rect, const EditingRange& range)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, rect, range);
-
-        m_callback = 0;
-    }
-    
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        m_callback(true, WebCore::IntRect(), EditingRange());
-
-        m_callback = 0;
-    }
-
-private:
-
-    RectForCharacterRangeCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-    }
-
-    CallbackFunction m_callback;
-};
-
 #if PLATFORM(MAC)
-
-// FIXME: Make a version of CallbackBase with two arguments, and define AttributedStringForCharacterRangeCallback as a specialization.
-class AttributedStringForCharacterRangeCallback : public CallbackBase {
-public:
-    typedef std::function<void (bool, const AttributedString&, const EditingRange&)> CallbackFunction;
-
-    static PassRefPtr<AttributedStringForCharacterRangeCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new AttributedStringForCharacterRangeCallback(callback));
-    }
-
-    virtual ~AttributedStringForCharacterRangeCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(const AttributedString& string, const EditingRange& range)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, string, range);
-
-        m_callback = 0;
-    }
-    
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        m_callback(true, AttributedString(), EditingRange());
-
-        m_callback = 0;
-    }
-
-private:
-
-    AttributedStringForCharacterRangeCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-    }
-
-    CallbackFunction m_callback;
-};
-
+typedef GenericCallback<const AttributedString&, const EditingRange&> AttributedStringForCharacterRangeCallback;
 #endif
 
 #if PLATFORM(IOS)
-class GestureCallback : public CallbackBase {
-public:
-    typedef std::function<void (bool, const WebCore::IntPoint&, uint32_t, uint32_t, uint32_t)> CallbackFunction;
-
-    static PassRefPtr<GestureCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new GestureCallback(callback));
-    }
-
-    virtual ~GestureCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(const WebCore::IntPoint& returnValue1, uint32_t returnValue2, uint32_t returnValue3, uint32_t returnValue4)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, returnValue1, returnValue2, returnValue3, returnValue4);
-
-        m_callback = 0;
-    }
-
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        m_callback(true, WebCore::IntPoint(), 0, 0, 0);
-
-        m_callback = 0;
-    }
-
-private:
-
-    GestureCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-        ASSERT(m_callback);
-    }
-
-    CallbackFunction m_callback;
-};
-
-class TouchesCallback : public CallbackBase {
-public:
-    typedef std::function<void(bool, const WebCore::IntPoint&, uint32_t)> CallbackFunction;
-
-    static PassRefPtr<TouchesCallback> create(CallbackFunction callback)
-    {
-        return adoptRef(new TouchesCallback(callback));
-    }
-
-    virtual ~TouchesCallback()
-    {
-        ASSERT(!m_callback);
-    }
-
-    void performCallbackWithReturnValue(const WebCore::IntPoint& returnValue1, uint32_t returnValue2)
-    {
-        ASSERT(m_callback);
-
-        m_callback(false, returnValue1, returnValue2);
-
-        m_callback = 0;
-    }
-
-    void invalidate()
-    {
-        ASSERT(m_callback);
-
-        RefPtr<API::Error> error = API::Error::create();
-        m_callback(true, WebCore::IntPoint(), 0);
-        
-        m_callback = 0;
-    }
-    
-private:
-    
-    TouchesCallback(CallbackFunction callback)
-        : m_callback(callback)
-    {
-        ASSERT(m_callback);
-    }
-    
-    CallbackFunction m_callback;
-};
+typedef GenericCallback<const WebCore::IntPoint&, uint32_t, uint32_t, uint32_t> GestureCallback;
+typedef GenericCallback<const WebCore::IntPoint&, uint32_t> TouchesCallback;
 #endif
 
 struct WebPageConfiguration {

Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (169961 => 169962)


--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm	2014-06-14 05:32:07 UTC (rev 169962)
@@ -1477,7 +1477,7 @@
     }
 
     _autocorrectionData.autocorrectionHandler = [completionHandler copy];
-    _page->requestAutocorrectionData(input, AutocorrectionDataCallback::create([self](bool, const Vector<FloatRect>& rects, const String& fontName, double fontSize, uint64_t traits) {
+    _page->requestAutocorrectionData(input, AutocorrectionDataCallback::create([self](const Vector<FloatRect>& rects, const String& fontName, double fontSize, uint64_t traits, CallbackBase::Error) {
         CGRect firstRect = CGRectZero;
         CGRect lastRect = CGRectZero;
         if (rects.size()) {
@@ -1540,7 +1540,7 @@
 {
     UIWKDictationContextHandler dictationHandler = [completionHandler copy];
 
-    _page->requestDictationContext(DictationContextCallback::create([dictationHandler](bool /*error*/, const String& selectedText, const String& beforeText, const String& afterText) {
+    _page->requestDictationContext(DictationContextCallback::create([dictationHandler](const String& selectedText, const String& beforeText, const String& afterText, CallbackBase::Error) {
         dictationHandler(selectedText, beforeText, afterText);
         [dictationHandler release];
     }));
@@ -1580,7 +1580,7 @@
         completionHandler([WKAutocorrectionContext autocorrectionContextWithData:beforeText markedText:markedText selectedText:selectedText afterText:afterText selectedRangeInMarkedText:NSMakeRange(location, length)]);
     } else {
         _autocorrectionData.autocorrectionContextHandler = [completionHandler copy];
-        _page->requestAutocorrectionContext(AutocorrectionContextCallback::create([self](bool /*error*/, const String& beforeText, const String& markedText, const String& selectedText, const String& afterText, uint64_t location, uint64_t length) {
+        _page->requestAutocorrectionContext(AutocorrectionContextCallback::create([self](const String& beforeText, const String& markedText, const String& selectedText, const String& afterText, uint64_t location, uint64_t length, CallbackBase::Error) {
             _autocorrectionData.autocorrectionContextHandler([WKAutocorrectionContext autocorrectionContextWithData:beforeText markedText:markedText selectedText:selectedText afterText:afterText selectedRangeInMarkedText:NSMakeRange(location, length)]);
         }));
     }

Modified: trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.mm (169961 => 169962)


--- trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.mm	2014-06-14 05:09:37 UTC (rev 169961)
+++ trunk/Source/WebKit2/UIProcess/mac/WKPrintingView.mm	2014-06-14 05:32:07 UTC (rev 169962)
@@ -265,7 +265,7 @@
     _webFrame->page()->beginPrinting(_webFrame.get(), printInfo);
 
     IPCCallbackContext* context = new IPCCallbackContext;
-    RefPtr<DataCallback> callback = DataCallback::create([context](bool, API::Data* data) {
+    RefPtr<DataCallback> callback = DataCallback::create([context](API::Data* data, CallbackBase::Error) {
         ASSERT(RunLoop::isMain());
 
         OwnPtr<IPCCallbackContext> contextDeleter = adoptPtr(context);
@@ -340,7 +340,7 @@
     ASSERT(!_expectedComputedPagesCallback);
 
     IPCCallbackContext* context = new IPCCallbackContext;
-    RefPtr<ComputedPagesCallback> callback = ComputedPagesCallback::create([context](bool, const Vector<WebCore::IntRect>& pageRects, double totalScaleFactorForPrinting) {
+    RefPtr<ComputedPagesCallback> callback = ComputedPagesCallback::create([context](const Vector<WebCore::IntRect>& pageRects, double totalScaleFactorForPrinting, CallbackBase::Error) {
         OwnPtr<IPCCallbackContext> contextDeleter = adoptPtr(context);
         pageDidComputePageRects(pageRects, totalScaleFactorForPrinting, context);
     });
@@ -492,7 +492,7 @@
                 _webFrame->page()->beginPrinting(_webFrame.get(), PrintInfo([_printOperation printInfo]));
 
                 IPCCallbackContext* context = new IPCCallbackContext;
-                RefPtr<ImageCallback> callback = ImageCallback::create([context](bool, const ShareableBitmap::Handle& imageHandle) {
+                RefPtr<ImageCallback> callback = ImageCallback::create([context](const ShareableBitmap::Handle& imageHandle, CallbackBase::Error) {
                     OwnPtr<IPCCallbackContext> contextDeleter = adoptPtr(context);
                     pageDidDrawToImage(imageHandle, context);
                 });
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to