[Webkit-unassigned] [Bug 135727] New: Cached file backed resources don't make it to the Web Process when NETWORK_CFDATA_ARRAY_CALLBACK is enabled

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Aug 7 15:08:46 PDT 2014


https://bugs.webkit.org/show_bug.cgi?id=135727

           Summary: Cached file backed resources don't make it to the Web
                    Process when NETWORK_CFDATA_ARRAY_CALLBACK is enabled
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Unspecified
        OS/Version: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebKit2
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: psolanki at apple.com


If we have a resource that is file backed in CFNetwork, then we try to send that data over to the web process so that the web process uses file backed memory. Unfortunately, this is not working on iOS because iOS uses the data array calbacks. We have this check in NetworkResourceLoader::tryGetShareableHandleFromSharedBuffer().

    if (!buffer->hasPlatformData())
        return;

For data array callbacks, hasPlatformData() will return false since SharedBuffer has a data array and not a single CFDataRef. This breaks the optimization. If I comment out the above code and fall through, the code does

    RetainPtr<CFDataRef> data = buffer->createCFData();
    if (_CFURLCacheIsResponseDataMemMapped(cache, data.get()) == kCFBooleanFalse)
        return;


createCFData() will do the right thing and the CFNetwork SPI will return true which will make our optimization work again.

The second mechanism - the disk cache notification works fine.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list