⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 170644 in webkit


Ignore:
Timestamp:
Jul 1, 2014, 10:04:30 AM (12 years ago)
Author:
andersca@apple.com
Message:

Use an std::function for filtering session state data
​https://bugs.webkit.org/show_bug.cgi?id=134481

Reviewed by Sam Weinig.

  • UIProcess/API/C/WKPage.cpp:

(WKPageCopySessionState):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _sessionState]):

  • UIProcess/WebBackForwardList.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::sessionStateData):

  • UIProcess/WebPageProxy.h:
  • UIProcess/cf/WebBackForwardListCF.cpp:

(WebKit::WebBackForwardList::createCFDictionaryRepresentation):

  • UIProcess/cf/WebPageProxyCF.cpp:

(WebKit::WebPageProxy::sessionStateData):

Location:
trunk/Source/WebKit2
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r170643 r170644  
     12014-06-30  Anders Carlsson  <andersca@apple.com>
     2
     3        Use an std::function for filtering session state data
     4        https://bugs.webkit.org/show_bug.cgi?id=134481
     5
     6        Reviewed by Sam Weinig.
     7
     8        * UIProcess/API/C/WKPage.cpp:
     9        (WKPageCopySessionState):
     10        * UIProcess/API/Cocoa/WKWebView.mm:
     11        (-[WKWebView _sessionState]):
     12        * UIProcess/WebBackForwardList.h:
     13        * UIProcess/WebPageProxy.cpp:
     14        (WebKit::WebPageProxy::sessionStateData):
     15        * UIProcess/WebPageProxy.h:
     16        * UIProcess/cf/WebBackForwardListCF.cpp:
     17        (WebKit::WebBackForwardList::createCFDictionaryRepresentation):
     18        * UIProcess/cf/WebPageProxyCF.cpp:
     19        (WebKit::WebPageProxy::sessionStateData):
     20
    1212014-07-01  Rohit Kumar  <kumar.rohit@samsung.com>
    222
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp

    r170303 r170644  
    352352WKDataRef WKPageCopySessionState(WKPageRef pageRef, void *context, WKPageSessionStateFilterCallback filter)
    353353{
    354     return toAPI(toImpl(pageRef)->sessionStateData(filter, context).leakRef());
     354    return toAPI(toImpl(pageRef)->sessionStateData([pageRef, context, filter](WebBackForwardListItem& item) {
     355        if (!filter(pageRef, WKPageGetSessionBackForwardListItemValueType(), toAPI(&item), context))
     356            return false;
     357
     358        if (!filter(pageRef, WKPageGetSessionHistoryURLValueType(), toURLRef(item.originalURL().impl()), context))
     359            return false;
     360
     361        return true;
     362    }).leakRef());
    355363}
    356364
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r170600 r170644  
    15611561- (NSData *)_sessionState
    15621562{
    1563     return [wrapper(*_page->sessionStateData(nullptr, nullptr).leakRef()) autorelease];
     1563    return [wrapper(*_page->sessionStateData(nullptr).leakRef()) autorelease];
    15641564}
    15651565
  • trunk/Source/WebKit2/UIProcess/WebBackForwardList.h

    r170626 r170644  
    7474
    7575#if USE(CF)
    76     CFDictionaryRef createCFDictionaryRepresentation(WebPageProxy::WebPageProxySessionStateFilterCallback, void* context) const;
     76    CFDictionaryRef createCFDictionaryRepresentation(std::function<bool (WebBackForwardListItem&)>) const;
    7777    bool restoreFromCFDictionaryRepresentation(CFDictionaryRef);
    7878    bool restoreFromV0CFDictionaryRepresentation(CFDictionaryRef);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r170632 r170644  
    18351835
    18361836#if !USE(CF)
    1837 PassRefPtr<API::Data> WebPageProxy::sessionStateData(WebPageProxySessionStateFilterCallback, void* /*context*/) const
     1837PassRefPtr<API::Data> WebPageProxy::sessionStateData(std::function<bool (WebBackForwardListItem&)>) const
    18381838{
    18391839    // FIXME: Return session state data for saving Page state.
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r170627 r170644  
    551551    void terminateProcess();
    552552
    553     typedef bool (*WebPageProxySessionStateFilterCallback)(WKPageRef, WKStringRef type, WKTypeRef object, void* context);
    554     PassRefPtr<API::Data> sessionStateData(WebPageProxySessionStateFilterCallback, void* context) const;
     553    PassRefPtr<API::Data> sessionStateData(std::function<bool (WebBackForwardListItem&)>) const;
    555554    void restoreFromSessionStateData(API::Data*);
    556555    void restoreFromState(SessionState);
  • trunk/Source/WebKit2/UIProcess/cf/WebBackForwardListCF.cpp

    r170626 r170644  
    6464}
    6565
    66 CFDictionaryRef WebBackForwardList::createCFDictionaryRepresentation(WebPageProxy::WebPageProxySessionStateFilterCallback filter, void* context) const
     66CFDictionaryRef WebBackForwardList::createCFDictionaryRepresentation(std::function<bool (WebBackForwardListItem&)> filter) const
    6767{
    6868    ASSERT(!m_hasCurrentIndex || m_currentIndex < m_entries.size());
    … …  
    8787        }
    8888
    89         if (filter) {
    90             if (!filter(toAPI(m_page), WKPageGetSessionBackForwardListItemValueType(), toAPI(m_entries[i].get()), context)
    91                 || !filter(toAPI(m_page), WKPageGetSessionHistoryURLValueType(), toURLRef(m_entries[i]->originalURL().impl()), context)) {
    92                 if (i <= m_currentIndex)
    93                     currentIndex--;
    94                 continue;
    95             }
     89        if (filter && !filter(*m_entries[i])) {
     90            if (i <= m_currentIndex)
     91                currentIndex--;
     92            continue;
    9693        }
    9794       
  • trunk/Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp

    r170188 r170644  
    4747static const UInt32 CurrentSessionStateDataVersion = 2;
    4848
    49 PassRefPtr<API::Data> WebPageProxy::sessionStateData(WebPageProxySessionStateFilterCallback filter, void* context) const
     49PassRefPtr<API::Data> WebPageProxy::sessionStateData(std::function<bool (WebBackForwardListItem&)> filter) const
    5050{
    5151    const void* keys[2];
    … …  
    5353    CFIndex numValues = 0;
    5454
    55     RetainPtr<CFDictionaryRef> sessionHistoryDictionary = adoptCF(m_backForwardList->createCFDictionaryRepresentation(filter, context));
     55    RetainPtr<CFDictionaryRef> sessionHistoryDictionary = adoptCF(m_backForwardList->createCFDictionaryRepresentation(std::move(filter)));
    5656    if (sessionHistoryDictionary) {
    5757        keys[numValues] = sessionHistoryKey;
Note: See TracChangeset for help on using the changeset viewer.