FrameFilter can just be an std::function instead
[WebKit-https.git] / Source / WebKit2 / WebProcess / WebPage / WebFrame.cpp
index 50fe0e8..e3c77ae 100644 (file)
@@ -734,46 +734,23 @@ void WebFrame::setTextDirection(const String& direction)
 }
 
 #if PLATFORM(MAC)
-
-class WebFrameFilter : public FrameFilter {
-public:
-    WebFrameFilter(WebFrame*, WebFrame::FrameFilterFunction, void* context);
-        
-private:
-    virtual bool shouldIncludeSubframe(Frame*) const OVERRIDE;
-
-    WebFrame* m_topLevelWebFrame;
-    WebFrame::FrameFilterFunction m_callback;
-    void* m_context;
-};
-
-WebFrameFilter::WebFrameFilter(WebFrame* topLevelWebFrame, WebFrame::FrameFilterFunction callback, void* context)
-    : m_topLevelWebFrame(topLevelWebFrame)
-    , m_callback(callback)
-    , m_context(context)
-{
-}
-
-bool WebFrameFilter::shouldIncludeSubframe(Frame* frame) const
+RetainPtr<CFDataRef> WebFrame::webArchiveData(FrameFilterFunction callback, void* context)
 {
-    if (!m_callback)
-        return true;
+    RefPtr<LegacyWebArchive> archive = LegacyWebArchive::create(coreFrame()->document(), [this, callback, context](Frame& frame) -> bool {
+        if (!callback)
+            return true;
 
-    WebFrameLoaderClient* webFrameLoaderClient = toWebFrameLoaderClient(frame->loader().client());
-    WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : 0;
-    ASSERT(webFrame);
+        WebFrameLoaderClient* webFrameLoaderClient = toWebFrameLoaderClient(frame.loader().client());
+        WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : 0;
+        ASSERT(webFrame);
 
-    return m_callback(toAPI(m_topLevelWebFrame), toAPI(webFrame), m_context);
-}
+        return callback(toAPI(this), toAPI(webFrame), context);
+    });
 
-RetainPtr<CFDataRef> WebFrame::webArchiveData(FrameFilterFunction callback, void* context)
-{
-    WebFrameFilter filter(this, callback, context);
+    if (!archive)
+        return nullptr;
 
-    if (RefPtr<LegacyWebArchive> archive = LegacyWebArchive::create(coreFrame()->document(), &filter))
-        return archive->rawDataRepresentation();
-    
-    return 0;
+    return archive->rawDataRepresentation();
 }
 #endif