Changeset 159089 in webkit
- Timestamp:
- Nov 11, 2013 5:51:39 PM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r159082 r159089 1 2013-11-11 Anders Carlsson <andersca@apple.com> 2 3 FrameFilter can just be an std::function instead 4 https://bugs.webkit.org/show_bug.cgi?id=124176 5 6 Reviewed by Tim Horton. 7 8 * WebCore.exp.in: 9 * loader/archive/cf/LegacyWebArchive.cpp: 10 (WebCore::LegacyWebArchive::create): 11 * loader/archive/cf/LegacyWebArchive.h: 12 1 13 2013-11-11 Simon Fraser <simon.fraser@apple.com> 2 14 -
trunk/Source/WebCore/WebCore.exp.in
r159001 r159089 625 625 __ZN7WebCore16LegacyWebArchive6createEN3WTF10PassRefPtrINS_15ArchiveResourceEEERNS1_6VectorIS4_Lm0ENS1_15CrashOnOverflowEEERNS5_INS2_IS0_EELm0ES6_EE 626 626 __ZN7WebCore16LegacyWebArchive6createEPNS_12SharedBufferE 627 __ZN7WebCore16LegacyWebArchive6createEPNS_4NodeE PNS_11FrameFilterE627 __ZN7WebCore16LegacyWebArchive6createEPNS_4NodeENSt3__18functionIFbRNS_5FrameEEEE 628 628 __ZN7WebCore16LegacyWebArchive6createEPNS_5FrameE 629 629 __ZN7WebCore16LegacyWebArchive6createEPNS_5RangeE -
trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp
r157653 r159089 423 423 #endif 424 424 425 PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(Node* node, FrameFilter* filter)425 PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(Node* node, std::function<bool (Frame&)> frameFilter) 426 426 { 427 427 ASSERT(node); … … 448 448 markupString = documentTypeString(node->document()) + markupString; 449 449 450 return create(markupString, frame, nodeList, filter);450 return create(markupString, frame, nodeList, std::move(frameFilter)); 451 451 } 452 452 … … 497 497 } 498 498 499 PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(const String& markupString, Frame* frame, const Vector<Node*>& nodes, FrameFilter*frameFilter)499 PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(const String& markupString, Frame* frame, const Vector<Node*>& nodes, std::function<bool (Frame&)> frameFilter) 500 500 { 501 501 ASSERT(frame); … … 521 521 if ((isHTMLFrameElement(node) || isHTMLIFrameElement(node) || isHTMLObjectElement(node)) 522 522 && (childFrame = toHTMLFrameOwnerElement(node).contentFrame())) { 523 if (frameFilter && !frameFilter ->shouldIncludeSubframe(childFrame))523 if (frameFilter && !frameFilter(*childFrame)) 524 524 continue; 525 525 -
trunk/Source/WebCore/loader/archive/cf/LegacyWebArchive.h
r157653 r159089 31 31 32 32 #include "Archive.h" 33 #include <functional> 33 34 34 35 namespace WebCore { … … 38 39 class Range; 39 40 40 class FrameFilter {41 public:42 virtual ~FrameFilter() { }43 virtual bool shouldIncludeSubframe(Frame*) const = 0;44 };45 46 41 class LegacyWebArchive : public Archive { 47 42 public: … … 50 45 static PassRefPtr<LegacyWebArchive> create(const URL&, SharedBuffer*); 51 46 static PassRefPtr<LegacyWebArchive> create(PassRefPtr<ArchiveResource> mainResource, Vector<PassRefPtr<ArchiveResource>>& subresources, Vector<PassRefPtr<LegacyWebArchive>>& subframeArchives); 52 static PassRefPtr<LegacyWebArchive> create(Node*, FrameFilter* = 0);47 static PassRefPtr<LegacyWebArchive> create(Node*, std::function<bool (Frame&)> frameFilter = nullptr); 53 48 static PassRefPtr<LegacyWebArchive> create(Frame*); 54 49 static PassRefPtr<LegacyWebArchive> createFromSelection(Frame*); … … 64 59 enum MainResourceStatus { Subresource, MainResource }; 65 60 66 static PassRefPtr<LegacyWebArchive> create(const String& markupString, Frame*, const Vector<Node*>& nodes, FrameFilter*);61 static PassRefPtr<LegacyWebArchive> create(const String& markupString, Frame*, const Vector<Node*>& nodes, std::function<bool (Frame&)> frameFilter); 67 62 static PassRefPtr<ArchiveResource> createResource(CFDictionaryRef); 68 63 static ResourceResponse createResourceResponseFromMacArchivedData(CFDataRef); -
trunk/Source/WebKit/mac/ChangeLog
r159054 r159089 1 2013-11-11 Anders Carlsson <andersca@apple.com> 2 3 FrameFilter can just be an std::function instead 4 https://bugs.webkit.org/show_bug.cgi?id=124176 5 6 Reviewed by Tim Horton. 7 8 * DOM/WebDOMOperations.mm: 9 (-[DOMNode webArchiveByFilteringSubframes:]): 10 1 11 2013-11-11 Dan Bernstein <mitz@apple.com> 2 12 -
trunk/Source/WebKit/mac/DOM/WebDOMOperations.mm
r157002 r159089 76 76 @end 77 77 78 class WebFrameFilter : public WebCore::FrameFilter {79 public:80 WebFrameFilter(WebArchiveSubframeFilter filterBlock);81 ~WebFrameFilter();82 private:83 virtual bool shouldIncludeSubframe(Frame*) const OVERRIDE;84 85 WebArchiveSubframeFilter m_filterBlock;86 };87 88 WebFrameFilter::WebFrameFilter(WebArchiveSubframeFilter filterBlock)89 : m_filterBlock(Block_copy(filterBlock))90 {91 }92 93 WebFrameFilter::~WebFrameFilter()94 {95 Block_release(m_filterBlock);96 }97 98 bool WebFrameFilter::shouldIncludeSubframe(Frame* frame) const99 {100 if (!m_filterBlock)101 return true;102 103 return m_filterBlock(kit(frame));104 }105 106 78 @implementation DOMNode (WebDOMNodeOperations) 107 79 … … 113 85 - (WebArchive *)webArchiveByFilteringSubframes:(WebArchiveSubframeFilter)webArchiveSubframeFilter 114 86 { 115 WebFrameFilter filter(webArchiveSubframeFilter); 116 return [[[WebArchive alloc] _initWithCoreLegacyWebArchive:LegacyWebArchive::create(core(self), &filter)] autorelease]; 87 WebArchive *webArchive = [[WebArchive alloc] _initWithCoreLegacyWebArchive:LegacyWebArchive::create(core(self), [webArchiveSubframeFilter](Frame& subframe) -> bool { 88 return webArchiveSubframeFilter(kit(&subframe)); 89 })]; 90 91 return [webArchive autorelease]; 117 92 } 118 93 -
trunk/Source/WebKit2/ChangeLog
r159088 r159089 1 2013-11-11 Anders Carlsson <andersca@apple.com> 2 3 FrameFilter can just be an std::function instead 4 https://bugs.webkit.org/show_bug.cgi?id=124176 5 6 Reviewed by Tim Horton. 7 8 * WebProcess/WebPage/WebFrame.cpp: 9 (WebKit::WebFrame::webArchiveData): 10 1 11 2013-11-11 Anders Carlsson <andersca@apple.com> 2 12 -
trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp
r157215 r159089 735 735 736 736 #if PLATFORM(MAC) 737 738 class WebFrameFilter : public FrameFilter {739 public:740 WebFrameFilter(WebFrame*, WebFrame::FrameFilterFunction, void* context);741 742 private:743 virtual bool shouldIncludeSubframe(Frame*) const OVERRIDE;744 745 WebFrame* m_topLevelWebFrame;746 WebFrame::FrameFilterFunction m_callback;747 void* m_context;748 };749 750 WebFrameFilter::WebFrameFilter(WebFrame* topLevelWebFrame, WebFrame::FrameFilterFunction callback, void* context)751 : m_topLevelWebFrame(topLevelWebFrame)752 , m_callback(callback)753 , m_context(context)754 {755 }756 757 bool WebFrameFilter::shouldIncludeSubframe(Frame* frame) const758 {759 if (!m_callback)760 return true;761 762 WebFrameLoaderClient* webFrameLoaderClient = toWebFrameLoaderClient(frame->loader().client());763 WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : 0;764 ASSERT(webFrame);765 766 return m_callback(toAPI(m_topLevelWebFrame), toAPI(webFrame), m_context);767 }768 769 737 RetainPtr<CFDataRef> WebFrame::webArchiveData(FrameFilterFunction callback, void* context) 770 738 { 771 WebFrameFilter filter(this, callback, context); 772 773 if (RefPtr<LegacyWebArchive> archive = LegacyWebArchive::create(coreFrame()->document(), &filter)) 774 return archive->rawDataRepresentation(); 775 776 return 0; 739 RefPtr<LegacyWebArchive> archive = LegacyWebArchive::create(coreFrame()->document(), [this, callback, context](Frame& frame) -> bool { 740 if (!callback) 741 return true; 742 743 WebFrameLoaderClient* webFrameLoaderClient = toWebFrameLoaderClient(frame.loader().client()); 744 WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : 0; 745 ASSERT(webFrame); 746 747 return callback(toAPI(this), toAPI(webFrame), context); 748 }); 749 750 if (!archive) 751 return nullptr; 752 753 return archive->rawDataRepresentation(); 777 754 } 778 755 #endif
Note: See TracChangeset
for help on using the changeset viewer.