Changeset 87229 in webkit


Ignore:
Timestamp:
May 24, 2011 4:46:14 PM (13 years ago)
Author:
Stephanie Lewis
Message:

https://bugs.webkit.org/show_bug.cgi?id=61345
part of <rdar://problem/8675177>
Don't initialize ResourceResponse.m_suggestedFilename until we want to use it. Initializing it requires reading in and parsing a plist.
Add new initialization state CommonAndUncommonFields to ResourceResponse. This will be for all the header fields.
Move suggestedFilename initialization to AllFields so it is never initialized unless we ask for it.
Add "Content-Type" to common headers since it is looked for by every CSS sheet load.

Reviewed by Geoff Garen.

No new tests because functionality has not changed.

  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::adopt):
(WebCore::ResourceResponseBase::suggestedFilename):
(WebCore::ResourceResponseBase::setSuggestedFilename):
(WebCore::ResourceResponseBase::httpStatusText):
(WebCore::ResourceResponseBase::setHTTPStatusText):
(WebCore::ResourceResponseBase::httpHeaderField):
(WebCore::ResourceResponseBase::setHTTPHeaderField):
(WebCore::ResourceResponseBase::httpHeaderFields):
(WebCore::ResourceResponseBase::isAttachment):
(WebCore::ResourceResponseBase::setLastModifiedDate):
(WebCore::ResourceResponseBase::lastModifiedDate):
(WebCore::ResourceResponseBase::wasCached):
(WebCore::ResourceResponseBase::connectionReused):
(WebCore::ResourceResponseBase::setConnectionReused):
(WebCore::ResourceResponseBase::connectionID):
(WebCore::ResourceResponseBase::setConnectionID):
(WebCore::ResourceResponseBase::resourceLoadTiming):
(WebCore::ResourceResponseBase::setResourceLoadTiming):
(WebCore::ResourceResponseBase::resourceLoadInfo):
(WebCore::ResourceResponseBase::setResourceLoadInfo):

  • platform/network/ResourceResponseBase.h:
  • platform/network/cf/ResourceResponse.h:

(WebCore::ResourceResponse::ResourceResponse):

  • platform/network/cf/ResourceResponseCFNet.cpp:

(WebCore::ResourceResponse::platformLazyInit):

  • platform/network/mac/ResourceResponseMac.mm:

(WebCore::ResourceResponse::platformLazyInit):

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r87228 r87229  
     12011-05-24  Stephanie Lewis  <slewis@apple.com>
     2
     3        Reviewed by Geoff Garen.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=61345
     6        part of <rdar://problem/8675177>
     7        Don't initialize ResourceResponse.m_suggestedFilename until we want to use it.  Initializing it requires reading in and parsing a plist. 
     8        Add new initialization state CommonAndUncommonFields to ResourceResponse.  This will be for all the header fields.
     9        Move suggestedFilename initialization to AllFields so it is never initialized unless we ask for it.
     10        Add "Content-Type" to common headers since it is looked for by every CSS sheet load.
     11
     12        No new tests because functionality has not changed.
     13
     14        * platform/network/ResourceResponseBase.cpp:
     15        (WebCore::ResourceResponseBase::adopt):
     16        (WebCore::ResourceResponseBase::suggestedFilename):
     17        (WebCore::ResourceResponseBase::setSuggestedFilename):
     18        (WebCore::ResourceResponseBase::httpStatusText):
     19        (WebCore::ResourceResponseBase::setHTTPStatusText):
     20        (WebCore::ResourceResponseBase::httpHeaderField):
     21        (WebCore::ResourceResponseBase::setHTTPHeaderField):
     22        (WebCore::ResourceResponseBase::httpHeaderFields):
     23        (WebCore::ResourceResponseBase::isAttachment):
     24        (WebCore::ResourceResponseBase::setLastModifiedDate):
     25        (WebCore::ResourceResponseBase::lastModifiedDate):
     26        (WebCore::ResourceResponseBase::wasCached):
     27        (WebCore::ResourceResponseBase::connectionReused):
     28        (WebCore::ResourceResponseBase::setConnectionReused):
     29        (WebCore::ResourceResponseBase::connectionID):
     30        (WebCore::ResourceResponseBase::setConnectionID):
     31        (WebCore::ResourceResponseBase::resourceLoadTiming):
     32        (WebCore::ResourceResponseBase::setResourceLoadTiming):
     33        (WebCore::ResourceResponseBase::resourceLoadInfo):
     34        (WebCore::ResourceResponseBase::setResourceLoadInfo):
     35        * platform/network/ResourceResponseBase.h:
     36        * platform/network/cf/ResourceResponse.h:
     37        (WebCore::ResourceResponse::ResourceResponse):
     38        * platform/network/cf/ResourceResponseCFNet.cpp:
     39        (WebCore::ResourceResponse::platformLazyInit):
     40        * platform/network/mac/ResourceResponseMac.mm:
     41        (WebCore::ResourceResponse::platformLazyInit):
     42
    1432011-05-24  Michael Saboff  <msaboff@apple.com>
    244
  • trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp

    r84827 r87229  
    109109    response->setHTTPStatusText(data->m_httpStatusText);
    110110
    111     response->lazyInit(AllFields);
     111    response->lazyInit(CommonAndUncommonFields);
    112112    response->m_httpHeaderFields.adopt(data->m_httpHeaders.release());
    113113    response->setLastModifiedDate(data->m_lastModifiedDate);
     
    206206const String& ResourceResponseBase::suggestedFilename() const
    207207{
    208     lazyInit(CommonFieldsOnly);
     208    lazyInit(AllFields);
    209209
    210210    return m_suggestedFilename;
     
    213213void ResourceResponseBase::setSuggestedFilename(const String& suggestedName)
    214214{
    215     lazyInit(CommonFieldsOnly);
     215    lazyInit(AllFields);
    216216    m_isNull = false;
    217217
     
    235235const String& ResourceResponseBase::httpStatusText() const
    236236{
    237     lazyInit(AllFields);
     237    lazyInit(CommonAndUncommonFields);
    238238
    239239    return m_httpStatusText;
     
    242242void ResourceResponseBase::setHTTPStatusText(const String& statusText)
    243243{
    244     lazyInit(AllFields);
     244    lazyInit(CommonAndUncommonFields);
    245245
    246246    m_httpStatusText = statusText;
     
    256256        return value;
    257257
    258     lazyInit(AllFields);
     258    lazyInit(CommonAndUncommonFields);
    259259
    260260    return m_httpHeaderFields.get(name);
     
    270270        return value;
    271271
    272     lazyInit(AllFields);
     272    lazyInit(CommonAndUncommonFields);
    273273
    274274    return m_httpHeaderFields.get(name);
     
    277277void ResourceResponseBase::setHTTPHeaderField(const AtomicString& name, const String& value)
    278278{
    279     lazyInit(AllFields);
     279    lazyInit(CommonAndUncommonFields);
    280280
    281281    DEFINE_STATIC_LOCAL(const AtomicString, ageHeader, ("age"));
     
    301301const HTTPHeaderMap& ResourceResponseBase::httpHeaderFields() const
    302302{
    303     lazyInit(AllFields);
     303    lazyInit(CommonAndUncommonFields);
    304304
    305305    return m_httpHeaderFields;
     
    465465bool ResourceResponseBase::isAttachment() const
    466466{
    467     lazyInit(AllFields);
     467    lazyInit(CommonAndUncommonFields);
    468468
    469469    DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("content-disposition"));
     
    479479void ResourceResponseBase::setLastModifiedDate(time_t lastModifiedDate)
    480480{
    481     lazyInit(AllFields);
     481    lazyInit(CommonAndUncommonFields);
    482482
    483483    m_lastModifiedDate = lastModifiedDate;
     
    486486time_t ResourceResponseBase::lastModifiedDate() const
    487487{
    488     lazyInit(AllFields);
     488    lazyInit(CommonAndUncommonFields);
    489489
    490490    return m_lastModifiedDate;
     
    493493bool ResourceResponseBase::wasCached() const
    494494{
    495     lazyInit(AllFields);
     495    lazyInit(CommonAndUncommonFields);
    496496
    497497    return m_wasCached;
     
    505505bool ResourceResponseBase::connectionReused() const
    506506{
    507     lazyInit(AllFields);
     507    lazyInit(CommonAndUncommonFields);
    508508
    509509    return m_connectionReused;
     
    512512void ResourceResponseBase::setConnectionReused(bool connectionReused)
    513513{
    514     lazyInit(AllFields);
     514    lazyInit(CommonAndUncommonFields);
    515515
    516516    m_connectionReused = connectionReused;
     
    519519unsigned ResourceResponseBase::connectionID() const
    520520{
    521     lazyInit(AllFields);
     521    lazyInit(CommonAndUncommonFields);
    522522
    523523    return m_connectionID;
     
    526526void ResourceResponseBase::setConnectionID(unsigned connectionID)
    527527{
    528     lazyInit(AllFields);
     528    lazyInit(CommonAndUncommonFields);
    529529
    530530    m_connectionID = connectionID;
     
    533533ResourceLoadTiming* ResourceResponseBase::resourceLoadTiming() const
    534534{
    535     lazyInit(AllFields);
     535    lazyInit(CommonAndUncommonFields);
    536536
    537537    return m_resourceLoadTiming.get();
     
    540540void ResourceResponseBase::setResourceLoadTiming(PassRefPtr<ResourceLoadTiming> resourceLoadTiming)
    541541{
    542     lazyInit(AllFields);
     542    lazyInit(CommonAndUncommonFields);
    543543
    544544    m_resourceLoadTiming = resourceLoadTiming;
     
    547547PassRefPtr<ResourceLoadInfo> ResourceResponseBase::resourceLoadInfo() const
    548548{
    549     lazyInit(AllFields);
     549    lazyInit(CommonAndUncommonFields);
    550550
    551551    return m_resourceLoadInfo.get();
     
    554554void ResourceResponseBase::setResourceLoadInfo(PassRefPtr<ResourceLoadInfo> loadInfo)
    555555{
    556     lazyInit(AllFields);
     556    lazyInit(CommonAndUncommonFields);
    557557
    558558    m_resourceLoadInfo = loadInfo;
  • trunk/Source/WebCore/platform/network/ResourceResponseBase.h

    r83526 r87229  
    133133        Uninitialized,
    134134        CommonFieldsOnly,
     135        CommonAndUncommonFields,
    135136        AllFields
    136137    };
  • trunk/Source/WebCore/platform/network/cf/ResourceResponse.h

    r82764 r87229  
    4545public:
    4646    ResourceResponse()
    47         : m_initLevel(AllFields)
     47        : m_initLevel(CommonAndUncommonFields)
    4848    {
    4949    }
     
    6767    ResourceResponse(const KURL& url, const String& mimeType, long long expectedLength, const String& textEncodingName, const String& filename)
    6868        : ResourceResponseBase(url, mimeType, expectedLength, textEncodingName, filename)
    69         , m_initLevel(AllFields)
     69        , m_initLevel(CommonAndUncommonFields)
    7070    {
    7171    }
  • trunk/Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp

    r82764 r87229  
    4444
    4545static CFStringRef const commonHeaderFields[] = {
    46     CFSTR("Age"), CFSTR("Cache-Control"), CFSTR("Date"), CFSTR("Etag"), CFSTR("Expires"), CFSTR("Last-Modified"), CFSTR("Pragma")
     46    CFSTR("Age"), CFSTR("Cache-Control"), CFSTR("Content-Type"), CFSTR("Date"), CFSTR("Etag"), CFSTR("Expires"), CFSTR("Last-Modified"), CFSTR("Pragma")
    4747};
    4848static const int numCommonHeaderFields = sizeof(commonHeaderFields) / sizeof(CFStringRef);
     
    9999        m_lastModifiedDate = toTimeT(CFURLResponseGetLastModifiedDate(m_cfResponse.get()));
    100100
    101         RetainPtr<CFStringRef> suggestedFilename(AdoptCF, CFURLResponseCopySuggestedFilename(m_cfResponse.get()));
    102         m_suggestedFilename = suggestedFilename.get();
    103 
    104101        CFHTTPMessageRef httpResponse = CFURLResponseGetHTTPResponse(m_cfResponse.get());
    105102        if (httpResponse) {
     
    117114    }
    118115
    119     if (m_initLevel < AllFields && initLevel >= AllFields) {
     116    if (m_initLevel < CommonAndUncommonFields && initLevel >= CommonAndUncommonFields) {
    120117        CFHTTPMessageRef httpResponse = CFURLResponseGetHTTPResponse(m_cfResponse.get());
    121118        if (httpResponse) {
     
    132129        }
    133130    }
     131   
     132    if (m_initLevel < AllFields && initLevel >= AllFields) {
     133        RetainPtr<CFStringRef> suggestedFilename(AdoptCF, CFURLResponseCopySuggestedFilename(m_cfResponse.get()));
     134        m_suggestedFilename = suggestedFilename.get();
     135    }
    134136
    135137    m_initLevel = initLevel;
  • trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm

    r85036 r87229  
    4545
    4646static NSString* const commonHeaderFields[] = {
    47     @"Age", @"Cache-Control", @"Date", @"Etag", @"Expires", @"Last-Modified", @"Pragma"
     47    @"Age", @"Cache-Control", @"Content-Type", @"Date", @"Etag", @"Expires", @"Last-Modified", @"Pragma"
    4848};
    4949static const int numCommonHeaderFields = sizeof(commonHeaderFields) / sizeof(AtomicString*);
     
    8989            m_textEncodingName = m_textEncodingName.substring(1, textEncodingNameLength - 2);
    9090
    91         m_suggestedFilename = [m_nsResponse.get() suggestedFilename];
    92 
    9391        if ([m_nsResponse.get() isKindOfClass:[NSHTTPURLResponse class]]) {
    9492            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)m_nsResponse.get();
     
    108106    }
    109107
    110     if (m_initLevel < AllFields && initLevel >= AllFields && [m_nsResponse.get() isKindOfClass:[NSHTTPURLResponse class]]) {
    111         NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
     108    if (m_initLevel < CommonAndUncommonFields && initLevel >= CommonAndUncommonFields) {
     109        if ([m_nsResponse.get() isKindOfClass:[NSHTTPURLResponse class]]) {
     110            NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    112111
    113         NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)m_nsResponse.get();
     112            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)m_nsResponse.get();
    114113
    115         RetainPtr<NSString> httpStatusLine(AdoptNS, wkCopyNSURLResponseStatusLine(m_nsResponse.get()));
    116         if (httpStatusLine)
    117             m_httpStatusText = extractReasonPhraseFromHTTPStatusLine(httpStatusLine.get());
    118         else
    119             m_httpStatusText = "OK";
     114            RetainPtr<NSString> httpStatusLine(AdoptNS, wkCopyNSURLResponseStatusLine(m_nsResponse.get()));
     115            if (httpStatusLine)
     116                m_httpStatusText = extractReasonPhraseFromHTTPStatusLine(httpStatusLine.get());
     117            else
     118                m_httpStatusText = "OK";
    120119
    121         NSDictionary *headers = [httpResponse allHeaderFields];
    122         NSEnumerator *e = [headers keyEnumerator];
    123         while (NSString *name = [e nextObject])
    124             m_httpHeaderFields.set(name, [headers objectForKey:name]);
    125        
    126         [pool drain];
     120            NSDictionary *headers = [httpResponse allHeaderFields];
     121            NSEnumerator *e = [headers keyEnumerator];
     122            while (NSString *name = [e nextObject])
     123                m_httpHeaderFields.set(name, [headers objectForKey:name]);
     124           
     125            [pool drain];
     126        }
    127127    }
     128     
     129    if (m_initLevel < AllFields && initLevel >= AllFields)
     130        m_suggestedFilename = [m_nsResponse.get() suggestedFilename];
    128131
    129132    m_initLevel = initLevel;
Note: See TracChangeset for help on using the changeset viewer.