Changeset 76756 in webkit


Ignore:
Timestamp:
Jan 26, 2011 8:57:01 PM (13 years ago)
Author:
ddkilzer@apple.com
Message:

<http://webkit.org/b/53192> Add experimental support for HTTP pipelining in CFNetwork
<rdar://problem/8821760>

Reviewed by Antti Koivisto.

Source/WebCore:

This adds support for HTTP pipelining in CFNetwork, but does not
enable it. To enable it post-SnowLeopard, use this command:

defaults write BUNDLE.ID WebKitEnableHTTPPipelining -bool YES

Once enabled, it is possible to force the same load priority
(high) to be sent to CFNetwork to allow WebCore to handle the
scheduling:

defaults write BUNDLE.ID WebKitForceHTTPPipeliningPriorityHigh -bool YES

  • WebCore.exp.in: Export _wkGetHTTPPipeliningPriority and

_wkSetHTTPPipeliningPriority.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequestWithPreflight):
Copy the priority to preflightRequest.

  • loader/ResourceLoadScheduler.cpp:

(WebCore::ResourceLoadScheduler::scheduleLoad): Refactored code
at the end of the method to use an early return.

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::load): Set the priority on the
ResourceRequest object based on the priority of the
CachedResourceRequest before calling
ResourceLoadScheduler::scheduleSubresourceLoad().

  • loader/icon/IconLoader.cpp:

(WebCore::IconLoader::startLoading): Create a ResourceRequest
object and set its priority to ResourceLoadPriorityLow before
passing it to ResourceLoadScheduler::scheduleSubresourceLoad().

  • platform/mac/WebCoreSystemInterface.h:

(wkGetHTTPPipeliningPriority): Added.
(wkSetHTTPPipeliningPriority): Added.

  • platform/mac/WebCoreSystemInterface.mm:

(wkGetHTTPPipeliningPriority): Added.
(wkSetHTTPPipeliningPriority): Added.

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::adopt): Set m_priority when
adopting a CrossThreadResourceRequestData.
(WebCore::ResourceRequestBase::copyData): Set m_priority when
creating a CrossThreadResourceRequestData.
(WebCore::ResourceRequestBase::priority): Added.
(WebCore::ResourceRequestBase::setPriority): Added.
(WebCore::equalIgnoringHeaderFields): Priorities must match when
comparing two ResourceRequest objects.

  • platform/network/ResourceRequestBase.h:

(WebCore::ResourceRequestBase::ResourceRequestBase): Set default
priority of new objects to ResourceLoadPriorityLow.
(WebCore::ResourceRequestBase::priority): Added declaration.
(WebCore::ResourceRequestBase::setPriority): Added declaration.
(WebCore::isHTTPPipeliningEnabled): Added.
(WebCore::shouldUseHTTPPipeliningPriority): Added.

  • platform/network/cf/ResourceRequestCFNet.cpp: Updated so that

Mac OS X and Windows share code.
(WebCore::initializeMaximumHTTPConnectionCountPerHost): Always
set the HTTP connection count per host, but return an
'unlimited' value when using HTTP pipelining. This method used
to be defined in ResourceRequestMac.mm for Mac OS X.
(WebCore::readBooleanPreference): Added. Helper method for
reading boolean user defaults.
(WebCore::isHTTPPipeliningEnabled): Returns value of user
default key WebKitEnableHTTPPipelining, or false if not set.
(WebCore::shouldUseHTTPPipeliningPriority): Returns value of
user default key WebKitForceHTTPPipeliningPriorityHigh, or false
if not set.

  • platform/network/cf/ResourceRequestCFNet.h: Updated so that

Mac OS X and Windows share code. Fixed indentation.
(WebCore::mapHTTPPipeliningPriorityToResourceLoadPriority): Added.
(WebCore::mapResourceLoadPriorityToHTTPPipeliningPriority): Added.

  • platform/network/mac/ResourceRequestMac.mm:

(WebCore::ResourceRequest::doUpdatePlatformRequest): Update
HTTP pipelining priority on NSMutableFURLRequest object.
(WebCore::ResourceRequest::doUpdateResourceRequest): Update
m_priority from the NSURLRequest object.
(WebCore::initializeMaximumHTTPConnectionCountPerHost): Removed.
Code is now shared with Windows in ResourceRequestCFNet.cpp.

Source/WebKit/mac:

  • WebCoreSupport/WebSystemInterface.mm:

(InitWebCoreSystemInterface): Added initialization for
GetHTTPPipeliningPriority and SetHTTPPipeliningPriority.

Source/WebKit2:

  • WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:

(InitWebCoreSystemInterface): Added initialization for
GetHTTPPipeliningPriority and SetHTTPPipeliningPriority.

WebKitLibraries:

  • WebKitSystemInterface.h:

New methods added for HTTP pipelining support.

(WKGetHTTPPipeliningPriority): Added.
(WKSetHTTPPipeliningPriority): Added.

Unrelated methods added after updating the header.

(WKMakeScrollbarPainter): Added.
(WKScrollbarPainterPaint): Added.

  • libWebKitSystemInterfaceLeopard.a: Updated.
  • libWebKitSystemInterfaceSnowLeopard.a: Updated.
Location:
trunk
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r76754 r76756  
     12011-01-26  David Kilzer  <ddkilzer@apple.com>
     2
     3        <http://webkit.org/b/53192> Add experimental support for HTTP pipelining in CFNetwork
     4        <rdar://problem/8821760>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        This adds support for HTTP pipelining in CFNetwork, but does not
     9        enable it.  To enable it post-SnowLeopard, use this command:
     10
     11            defaults write BUNDLE.ID WebKitEnableHTTPPipelining -bool YES
     12
     13        Once enabled, it is possible to force the same load priority
     14        (high) to be sent to CFNetwork to allow WebCore to handle the
     15        scheduling:
     16
     17            defaults write BUNDLE.ID WebKitForceHTTPPipeliningPriorityHigh -bool YES
     18
     19        * WebCore.exp.in: Export _wkGetHTTPPipeliningPriority and
     20        _wkSetHTTPPipeliningPriority.
     21
     22        * loader/DocumentThreadableLoader.cpp:
     23        (WebCore::DocumentThreadableLoader::makeCrossOriginAccessRequestWithPreflight):
     24        Copy the priority to preflightRequest.
     25
     26        * loader/ResourceLoadScheduler.cpp:
     27        (WebCore::ResourceLoadScheduler::scheduleLoad): Refactored code
     28        at the end of the method to use an early return.
     29
     30        * loader/cache/CachedResourceRequest.cpp:
     31        (WebCore::CachedResourceRequest::load): Set the priority on the
     32        ResourceRequest object based on the priority of the
     33        CachedResourceRequest before calling
     34        ResourceLoadScheduler::scheduleSubresourceLoad().
     35
     36        * loader/icon/IconLoader.cpp:
     37        (WebCore::IconLoader::startLoading): Create a ResourceRequest
     38        object and set its priority to ResourceLoadPriorityLow before
     39        passing it to ResourceLoadScheduler::scheduleSubresourceLoad().
     40
     41        * platform/mac/WebCoreSystemInterface.h:
     42        (wkGetHTTPPipeliningPriority): Added.
     43        (wkSetHTTPPipeliningPriority): Added.
     44        * platform/mac/WebCoreSystemInterface.mm:
     45        (wkGetHTTPPipeliningPriority): Added.
     46        (wkSetHTTPPipeliningPriority): Added.
     47
     48        * platform/network/ResourceRequestBase.cpp:
     49        (WebCore::ResourceRequestBase::adopt): Set m_priority when
     50        adopting a CrossThreadResourceRequestData.
     51        (WebCore::ResourceRequestBase::copyData): Set m_priority when
     52        creating a CrossThreadResourceRequestData.
     53        (WebCore::ResourceRequestBase::priority): Added.
     54        (WebCore::ResourceRequestBase::setPriority): Added.
     55        (WebCore::equalIgnoringHeaderFields): Priorities must match when
     56        comparing two ResourceRequest objects.
     57
     58        * platform/network/ResourceRequestBase.h:
     59        (WebCore::ResourceRequestBase::ResourceRequestBase): Set default
     60        priority of new objects to ResourceLoadPriorityLow.
     61        (WebCore::ResourceRequestBase::priority): Added declaration.
     62        (WebCore::ResourceRequestBase::setPriority): Added declaration.
     63        (WebCore::isHTTPPipeliningEnabled): Added.
     64        (WebCore::shouldUseHTTPPipeliningPriority): Added.
     65
     66        * platform/network/cf/ResourceRequestCFNet.cpp: Updated so that
     67        Mac OS X and Windows share code.
     68        (WebCore::initializeMaximumHTTPConnectionCountPerHost): Always
     69        set the HTTP connection count per host, but return an
     70        'unlimited' value when using HTTP pipelining.  This method used
     71        to be defined in ResourceRequestMac.mm for Mac OS X.
     72        (WebCore::readBooleanPreference): Added.  Helper method for
     73        reading boolean user defaults.
     74        (WebCore::isHTTPPipeliningEnabled): Returns value of user
     75        default key WebKitEnableHTTPPipelining, or false if not set.
     76        (WebCore::shouldUseHTTPPipeliningPriority): Returns value of
     77        user default key WebKitForceHTTPPipeliningPriorityHigh, or false
     78        if not set.
     79        * platform/network/cf/ResourceRequestCFNet.h: Updated so that
     80        Mac OS X and Windows share code.  Fixed indentation.
     81        (WebCore::mapHTTPPipeliningPriorityToResourceLoadPriority): Added.
     82        (WebCore::mapResourceLoadPriorityToHTTPPipeliningPriority): Added.
     83
     84        * platform/network/mac/ResourceRequestMac.mm:
     85        (WebCore::ResourceRequest::doUpdatePlatformRequest): Update
     86        HTTP pipelining priority on NSMutableFURLRequest object.
     87        (WebCore::ResourceRequest::doUpdateResourceRequest): Update
     88        m_priority from the NSURLRequest object.
     89        (WebCore::initializeMaximumHTTPConnectionCountPerHost): Removed.
     90        Code is now shared with Windows in ResourceRequestCFNet.cpp.
     91
    1922011-01-26  Beth Dakin  <bdakin@apple.com>
    293
  • trunk/Source/WebCore/WebCore.exp.in

    r76754 r76756  
    12491249_wkGetGlyphTransformedAdvances
    12501250_wkGetGlyphsForCharacters
     1251_wkGetHTTPPipeliningPriority
    12511252_wkGetHyphenationLocationBeforeIndex
    12521253_wkGetMIMETypeForExtension
     
    12791280_wkSetCookieStoragePrivateBrowsingEnabled
    12801281_wkSetDragImage
     1282_wkSetHTTPPipeliningPriority
    12811283_wkSetNSURLConnectionDefersCallbacks
    12821284_wkSetNSURLRequestShouldContentSniff
  • trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp

    r73938 r76756  
    145145    }
    146146
     147    preflightRequest.setPriority(request.priority());
     148
    147149    loadRequest(preflightRequest, DoSecurityCheck);
    148150}
  • trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp

    r73938 r76756  
    9191    return loader;
    9292}
    93    
     93
    9494PassRefPtr<NetscapePlugInStreamLoader> ResourceLoadScheduler::schedulePluginStreamLoad(Frame* frame, NetscapePlugInStreamLoaderClient* client, const ResourceRequest& request)
    9595{
     
    121121        // Try to request important resources immediately.
    122122        servePendingRequests(host, priority);
    123     } else {
    124         // Handle asynchronously so early low priority requests don't get scheduled before later high priority ones.
    125         InspectorInstrumentation::didScheduleResourceRequest(resourceLoader->frameLoader() ? resourceLoader->frameLoader()->frame()->document() : 0, resourceLoader->url());
    126         scheduleServePendingRequests();
    127     }
     123        return;
     124    }
     125
     126    // Handle asynchronously so early low priority requests don't get scheduled before later high priority ones.
     127    InspectorInstrumentation::didScheduleResourceRequest(resourceLoader->frameLoader() ? resourceLoader->frameLoader()->frame()->document() : 0, resourceLoader->url());
     128    scheduleServePendingRequests();
    128129}
    129130
  • trunk/Source/WebCore/loader/cache/CachedResourceRequest.cpp

    r75857 r76756  
    114114
    115115    ResourceLoadPriority priority = resource->loadPriority();
     116    resourceRequest.setPriority(priority);
    116117
    117118    RefPtr<SubresourceLoader> loader = resourceLoadScheduler()->scheduleSubresourceLoad(cachedResourceLoader->document()->frame(),
  • trunk/Source/WebCore/loader/icon/IconLoader.cpp

    r71562 r76756  
    7070    m_loadIsInProgress = true;
    7171
    72     RefPtr<SubresourceLoader> loader = resourceLoadScheduler()->scheduleSubresourceLoad(m_frame, this, m_frame->loader()->iconURL());
     72    ResourceRequest resourceRequest(m_frame->loader()->iconURL());
     73    resourceRequest.setPriority(ResourceLoadPriorityLow);
     74
     75    RefPtr<SubresourceLoader> loader = resourceLoadScheduler()->scheduleSubresourceLoad(m_frame, this, resourceRequest);
    7376    if (!loader)
    7477        LOG_ERROR("Failed to start load for icon at url %s", m_frame->loader()->iconURL().string().ascii().data());
  • trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h

    r76754 r76756  
    148148extern void (*wkSignalCFReadStreamHasBytes)(CFReadStreamRef stream);
    149149extern unsigned (*wkInitializeMaximumHTTPConnectionCountPerHost)(unsigned preferredConnectionCount);
     150extern int (*wkGetHTTPPipeliningPriority)(NSURLRequest *);
     151extern void (*wkSetHTTPPipeliningPriority)(NSMutableURLRequest *, int priority);
    150152extern void (*wkSetCONNECTProxyForStream)(CFReadStreamRef, CFStringRef proxyHost, CFNumberRef proxyPort);
    151153extern void (*wkSetCONNECTProxyAuthorizationForStream)(CFReadStreamRef, CFStringRef proxyAuthorizationString);
  • trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm

    r76754 r76756  
    9090id (*wkCreateNSURLConnectionDelegateProxy)(void);
    9191unsigned (*wkInitializeMaximumHTTPConnectionCountPerHost)(unsigned preferredConnectionCount);
     92int (*wkGetHTTPPipeliningPriority)(NSURLRequest *);
     93void (*wkSetHTTPPipeliningPriority)(NSMutableURLRequest *, int priority);
    9294void (*wkSetCONNECTProxyForStream)(CFReadStreamRef, CFStringRef proxyHost, CFNumberRef proxyPort);
    9395void (*wkSetCONNECTProxyAuthorizationForStream)(CFReadStreamRef, CFStringRef proxyAuthorizationString);
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp

    r74084 r76756  
    4646    request->setFirstPartyForCookies(data->m_firstPartyForCookies);
    4747    request->setHTTPMethod(data->m_httpMethod);
     48    request->setPriority(data->m_priority);
    4849    request->setTargetType(data->m_targetType);
    4950
     
    7980    data->m_httpMethod = httpMethod().crossThreadString();
    8081    data->m_httpHeaders = httpHeaderFields().copyData();
     82    data->m_priority = priority();
    8183    data->m_targetType = m_targetType;
    8284
     
    315317}
    316318
     319ResourceLoadPriority ResourceRequestBase::priority() const
     320{
     321    updateResourceRequest();
     322
     323    return m_priority;
     324}
     325
     326void ResourceRequestBase::setPriority(ResourceLoadPriority priority)
     327{
     328    updateResourceRequest();
     329
     330    m_priority = priority;
     331
     332    if (url().protocolInHTTPFamily())
     333        m_platformRequestUpdated = false;
     334}
     335
    317336void ResourceRequestBase::addHTTPHeaderField(const AtomicString& name, const String& value)
    318337{
     
    353372        return false;
    354373   
     374    if (a.priority() != b.priority())
     375        return false;
     376
    355377    FormData* formDataA = a.httpBody();
    356378    FormData* formDataB = b.httpBody();
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.h

    r76248 r76756  
    3030
    3131#include "FormData.h"
     32#include "HTTPHeaderMap.h"
    3233#include "KURL.h"
    33 #include "HTTPHeaderMap.h"
     34#include "ResourceLoadPriority.h"
    3435
    3536#include <wtf/OwnPtr.h>
     
    129130        void setAllowCookies(bool allowCookies);
    130131
     132        ResourceLoadPriority priority() const;
     133        void setPriority(ResourceLoadPriority);
     134
    131135        bool isConditional() const;
    132136
     
    158162            , m_reportLoadTiming(false)
    159163            , m_reportRawHeaders(false)
     164            , m_priority(ResourceLoadPriorityLow)
    160165            , m_targetType(TargetIsSubresource)
    161166        {
     
    173178            , m_reportLoadTiming(false)
    174179            , m_reportRawHeaders(false)
     180            , m_priority(ResourceLoadPriorityLow)
    175181            , m_targetType(TargetIsSubresource)
    176182        {
     
    198204        bool m_reportLoadTiming;
    199205        bool m_reportRawHeaders;
     206        ResourceLoadPriority m_priority;
    200207        TargetType m_targetType;
    201208
     
    224231        RefPtr<FormData> m_httpBody;
    225232        bool m_allowCookies;
     233        ResourceLoadPriority m_priority;
    226234        ResourceRequestBase::TargetType m_targetType;
    227235    };
     
    229237    unsigned initializeMaximumHTTPConnectionCountPerHost();
    230238
     239#if PLATFORM(CF)
     240    bool isHTTPPipeliningEnabled();
     241    bool shouldForceHTTPPipeliningPriorityHigh();
     242#else
     243    inline bool isHTTPPipeliningEnabled() { return false; }
     244    inline bool shouldForceHTTPPipeliningPriorityHigh() { return false; }
     245#endif
     246
    231247} // namespace WebCore
    232248
  • trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp

    r74943 r76756  
    2727#include "ResourceRequestCFNet.h"
    2828
     29#include "ResourceRequest.h"
     30
     31#if PLATFORM(MAC)
     32#include "WebCoreSystemInterface.h"
     33#endif
     34
    2935#if USE(CFNETWORK)
    30 
    3136#include "FormDataStreamCFNet.h"
    32 #include "ResourceRequest.h"
    33 
    3437#include <CFNetwork/CFURLRequestPriv.h>
    3538#include <WebKitSystemInterface/WebKitSystemInterface.h>
     39#endif
    3640
    3741namespace WebCore {
     42
     43#if USE(CFNETWORK)
    3844
    3945typedef void (*CFURLRequestSetContentDispositionEncodingFallbackArrayFunction)(CFMutableURLRequestRef, CFArrayRef);
     
    190196}
    191197
     198#endif // USE(CFNETWORK)
     199
    192200unsigned initializeMaximumHTTPConnectionCountPerHost()
    193201{
    194202    static const unsigned preferredConnectionCount = 6;
    195     return wkInitializeMaximumHTTPConnectionCountPerHost(preferredConnectionCount);
     203    static const unsigned unlimitedConnectionCount = 10000;
     204
     205    // Always set the connection count per host, even when pipelining.
     206    unsigned maximumHTTPConnectionCountPerHost = wkInitializeMaximumHTTPConnectionCountPerHost(preferredConnectionCount);
     207
     208#if PLATFORM(MAC)
     209    if (isHTTPPipeliningEnabled()) {
     210        // When pipelining do not rate-limit requests sent from WebCore since CFNetwork handles that.
     211        return unlimitedConnectionCount;
     212    }
     213#endif
     214
     215    return maximumHTTPConnectionCountPerHost;
     216}
     217
     218static inline bool readBooleanPreference(CFStringRef key)
     219{
     220    Boolean keyExistsAndHasValidFormat;
     221    Boolean result = CFPreferencesGetAppBooleanValue(key, kCFPreferencesCurrentApplication, &keyExistsAndHasValidFormat);
     222    return keyExistsAndHasValidFormat ? result : false;
     223}
     224
     225bool isHTTPPipeliningEnabled()
     226{
     227    static bool isEnabled = readBooleanPreference(CFSTR("WebKitEnableHTTPPipelining"));
     228    return isEnabled;
     229}
     230
     231bool shouldForceHTTPPipeliningPriorityHigh()
     232{
     233    static bool shouldForcePriorityHigh = readBooleanPreference(CFSTR("WebKitForceHTTPPipeliningPriorityHigh"));
     234    return shouldForcePriorityHigh;
    196235}
    197236
    198237} // namespace WebCore
    199 
    200 #endif // USE(CFNETWORK)
  • trunk/Source/WebCore/platform/network/cf/ResourceRequestCFNet.h

    r74943 r76756  
    2727#define ResourceRequestCFNet_h
    2828
     29#include "ResourceLoadPriority.h"
     30
    2931#if USE(CFNETWORK)
    30 
    3132typedef const struct _CFURLRequest* CFURLRequestRef;
     33#endif
    3234
    3335namespace WebCore {
    3436
    35     class ResourceRequest;
     37class ResourceRequest;
    3638
    37     void getResourceRequest(ResourceRequest&, CFURLRequestRef);
    38     CFURLRequestRef cfURLRequest(const ResourceRequest&);
     39#if USE(CFNETWORK)
     40void getResourceRequest(ResourceRequest&, CFURLRequestRef);
     41CFURLRequestRef cfURLRequest(const ResourceRequest&);
     42#endif
     43
     44inline ResourceLoadPriority mapHTTPPipeliningPriorityToResourceLoadPriority(int priority)
     45{
     46    switch (priority) {
     47    case 0:
     48        return ResourceLoadPriorityLow;
     49    case 1:
     50        return ResourceLoadPriorityMedium;
     51    case 2:
     52        return ResourceLoadPriorityHigh;
     53    default:
     54        ASSERT_NOT_REACHED();
     55        return ResourceLoadPriorityLowest;
     56    }
    3957}
    4058
    41 #endif // USE(CFNETWORK)
     59inline int mapResourceLoadPriorityToHTTPPipeliningPriority(ResourceLoadPriority priority)
     60{
     61    switch (priority) {
     62    case ResourceLoadPriorityVeryLow:
     63    case ResourceLoadPriorityLow:
     64        return 0;
     65    case ResourceLoadPriorityMedium:
     66        return 1;
     67    case ResourceLoadPriorityHigh:
     68        return 2;
     69    case ResourceLoadPriorityUnresolved:
     70        ASSERT_NOT_REACHED();
     71        return 0;
     72    }
     73
     74    ASSERT_NOT_REACHED();
     75    return 0;
     76}
     77
     78} // namespace WebCore
    4279
    4380#endif // ResourceRequestCFNet_h
  • trunk/Source/WebCore/platform/network/mac/ResourceRequestMac.mm

    r74943 r76756  
    3232
    3333#import "FormDataStreamMac.h"
     34#import "ResourceRequestCFNet.h"
     35#import "WebCoreSystemInterface.h"
    3436
    3537#import <Foundation/Foundation.h>
     
    6668        m_httpMethod = method;
    6769    m_allowCookies = [m_nsRequest.get() HTTPShouldHandleCookies];
    68    
     70
     71#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
     72    if (isHTTPPipeliningEnabled() && !shouldForceHTTPPipeliningPriorityHigh())
     73        m_priority = mapHTTPPipeliningPriorityToResourceLoadPriority(wkGetHTTPPipeliningPriority(m_nsRequest.get()));
     74#endif
     75
    6976    NSDictionary *headers = [m_nsRequest.get() allHTTPHeaderFields];
    7077    NSEnumerator *e = [headers keyEnumerator];
     
    112119#endif
    113120
     121#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
     122    if (isHTTPPipeliningEnabled()) {
     123        int priority = mapResourceLoadPriorityToHTTPPipeliningPriority(m_priority);
     124        wkSetHTTPPipeliningPriority(nsRequest, shouldForceHTTPPipeliningPriorityHigh() ? 2 : priority);
     125    }
     126#endif
     127
    114128    [nsRequest setCachePolicy:(NSURLRequestCachePolicy)cachePolicy()];
    115129    if (timeoutInterval() != unspecifiedTimeoutInterval)
     
    155169    [NSURLProtocol setProperty:@"" forKey:@"WebDataRequest" inRequest:(NSMutableURLRequest *)nsURLRequest()];
    156170}
    157    
    158 unsigned initializeMaximumHTTPConnectionCountPerHost()
    159 {
    160     static const unsigned preferredConnectionCount = 6;
    161     return wkInitializeMaximumHTTPConnectionCountPerHost(preferredConnectionCount);
    162 }
    163171
    164172} // namespace WebCore
  • trunk/Source/WebKit/mac/ChangeLog

    r76754 r76756  
     12011-01-26  David Kilzer  <ddkilzer@apple.com>
     2
     3        <http://webkit.org/b/53192> Add experimental support for HTTP pipelining in CFNetwork
     4        <rdar://problem/8821760>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * WebCoreSupport/WebSystemInterface.mm:
     9        (InitWebCoreSystemInterface): Added initialization for
     10        GetHTTPPipeliningPriority and SetHTTPPipeliningPriority.
     11
    1122011-01-26  Beth Dakin  <bdakin@apple.com>
    213
  • trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm

    r76754 r76756  
    6161    INIT(GetFontInLanguageForRange);
    6262    INIT(GetGlyphTransformedAdvances);
     63    INIT(GetHTTPPipeliningPriority);
    6364    INIT(GetMIMETypeForExtension);
    6465    INIT(GetNSURLResponseLastModifiedDate);
     
    7677    INIT(SetCookieStoragePrivateBrowsingEnabled);
    7778    INIT(SetDragImage);
     79    INIT(SetHTTPPipeliningPriority);
    7880    INIT(SetNSURLConnectionDefersCallbacks);
    7981    INIT(SetNSURLRequestShouldContentSniff);
  • trunk/Source/WebKit2/ChangeLog

    r76754 r76756  
     12011-01-26  David Kilzer  <ddkilzer@apple.com>
     2
     3        <http://webkit.org/b/53192> Add experimental support for HTTP pipelining in CFNetwork
     4        <rdar://problem/8821760>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
     9        (InitWebCoreSystemInterface): Added initialization for
     10        GetHTTPPipeliningPriority and SetHTTPPipeliningPriority.
     11
    1122011-01-26  Beth Dakin  <bdakin@apple.com>
    213
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm

    r76754 r76756  
    5656        INIT(GetGlyphTransformedAdvances);
    5757        INIT(GetGlyphsForCharacters);
     58        INIT(GetHTTPPipeliningPriority);
    5859        INIT(GetMIMETypeForExtension);
    5960        INIT(GetNSURLResponseLastModifiedDate);
     
    8384        INIT(SetCookieStoragePrivateBrowsingEnabled);
    8485        INIT(SetDragImage);
     86        INIT(SetHTTPPipeliningPriority);
    8587        INIT(SetNSURLConnectionDefersCallbacks);
    8688        INIT(SetNSURLRequestShouldContentSniff);
  • trunk/WebKitLibraries/ChangeLog

    r76621 r76756  
     12011-01-26  David Kilzer  <ddkilzer@apple.com>
     2
     3        <http://webkit.org/b/53192> Add experimental support for HTTP pipelining in CFNetwork
     4        <rdar://problem/8821760>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * WebKitSystemInterface.h:
     9            New methods added for HTTP pipelining support.
     10        (WKGetHTTPPipeliningPriority): Added.
     11        (WKSetHTTPPipeliningPriority): Added.
     12            Unrelated methods added after updating the header.
     13        (WKMakeScrollbarPainter): Added.
     14        (WKScrollbarPainterPaint): Added.
     15        * libWebKitSystemInterfaceLeopard.a: Updated.
     16        * libWebKitSystemInterfaceSnowLeopard.a: Updated.
     17
    1182011-01-24  Jer Noble  <jer.noble@apple.com>
    219
  • trunk/WebKitLibraries/WebKitSystemInterface.h

    r76042 r76756  
    328328
    329329unsigned WKInitializeMaximumHTTPConnectionCountPerHost(unsigned preferredConnectionCount);
     330int WKGetHTTPPipeliningPriority(NSURLRequest *);
     331void WKSetHTTPPipeliningPriority(NSMutableURLRequest *, int priority);
    330332
    331333void WKSetCONNECTProxyForStream(CFReadStreamRef, CFStringRef proxyHost, CFNumberRef proxyPort);
     
    378380WKSandboxExtensionRef WKSandboxExtensionCreateFromSerializedFormat(const char* serializationFormat, size_t length);
    379381
     382typedef struct __WKScrollbarPainter *WKScrollbarPainterRef;
     383WKScrollbarPainterRef WKMakeScrollbarPainter(int controlSize, bool isHorizontal);
     384void WKScrollbarPainterPaint(WKScrollbarPainterRef, bool enabled, double value, CGFloat proportion, CGRect frameRect);
     385
    380386#endif
    381387
Note: See TracChangeset for help on using the changeset viewer.