Changeset 87229 in webkit
- Timestamp:
- May 24, 2011 4:46:14 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r87228 r87229 1 2011-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 1 43 2011-05-24 Michael Saboff <msaboff@apple.com> 2 44 -
trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp
r84827 r87229 109 109 response->setHTTPStatusText(data->m_httpStatusText); 110 110 111 response->lazyInit( AllFields);111 response->lazyInit(CommonAndUncommonFields); 112 112 response->m_httpHeaderFields.adopt(data->m_httpHeaders.release()); 113 113 response->setLastModifiedDate(data->m_lastModifiedDate); … … 206 206 const String& ResourceResponseBase::suggestedFilename() const 207 207 { 208 lazyInit( CommonFieldsOnly);208 lazyInit(AllFields); 209 209 210 210 return m_suggestedFilename; … … 213 213 void ResourceResponseBase::setSuggestedFilename(const String& suggestedName) 214 214 { 215 lazyInit( CommonFieldsOnly);215 lazyInit(AllFields); 216 216 m_isNull = false; 217 217 … … 235 235 const String& ResourceResponseBase::httpStatusText() const 236 236 { 237 lazyInit( AllFields);237 lazyInit(CommonAndUncommonFields); 238 238 239 239 return m_httpStatusText; … … 242 242 void ResourceResponseBase::setHTTPStatusText(const String& statusText) 243 243 { 244 lazyInit( AllFields);244 lazyInit(CommonAndUncommonFields); 245 245 246 246 m_httpStatusText = statusText; … … 256 256 return value; 257 257 258 lazyInit( AllFields);258 lazyInit(CommonAndUncommonFields); 259 259 260 260 return m_httpHeaderFields.get(name); … … 270 270 return value; 271 271 272 lazyInit( AllFields);272 lazyInit(CommonAndUncommonFields); 273 273 274 274 return m_httpHeaderFields.get(name); … … 277 277 void ResourceResponseBase::setHTTPHeaderField(const AtomicString& name, const String& value) 278 278 { 279 lazyInit( AllFields);279 lazyInit(CommonAndUncommonFields); 280 280 281 281 DEFINE_STATIC_LOCAL(const AtomicString, ageHeader, ("age")); … … 301 301 const HTTPHeaderMap& ResourceResponseBase::httpHeaderFields() const 302 302 { 303 lazyInit( AllFields);303 lazyInit(CommonAndUncommonFields); 304 304 305 305 return m_httpHeaderFields; … … 465 465 bool ResourceResponseBase::isAttachment() const 466 466 { 467 lazyInit( AllFields);467 lazyInit(CommonAndUncommonFields); 468 468 469 469 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("content-disposition")); … … 479 479 void ResourceResponseBase::setLastModifiedDate(time_t lastModifiedDate) 480 480 { 481 lazyInit( AllFields);481 lazyInit(CommonAndUncommonFields); 482 482 483 483 m_lastModifiedDate = lastModifiedDate; … … 486 486 time_t ResourceResponseBase::lastModifiedDate() const 487 487 { 488 lazyInit( AllFields);488 lazyInit(CommonAndUncommonFields); 489 489 490 490 return m_lastModifiedDate; … … 493 493 bool ResourceResponseBase::wasCached() const 494 494 { 495 lazyInit( AllFields);495 lazyInit(CommonAndUncommonFields); 496 496 497 497 return m_wasCached; … … 505 505 bool ResourceResponseBase::connectionReused() const 506 506 { 507 lazyInit( AllFields);507 lazyInit(CommonAndUncommonFields); 508 508 509 509 return m_connectionReused; … … 512 512 void ResourceResponseBase::setConnectionReused(bool connectionReused) 513 513 { 514 lazyInit( AllFields);514 lazyInit(CommonAndUncommonFields); 515 515 516 516 m_connectionReused = connectionReused; … … 519 519 unsigned ResourceResponseBase::connectionID() const 520 520 { 521 lazyInit( AllFields);521 lazyInit(CommonAndUncommonFields); 522 522 523 523 return m_connectionID; … … 526 526 void ResourceResponseBase::setConnectionID(unsigned connectionID) 527 527 { 528 lazyInit( AllFields);528 lazyInit(CommonAndUncommonFields); 529 529 530 530 m_connectionID = connectionID; … … 533 533 ResourceLoadTiming* ResourceResponseBase::resourceLoadTiming() const 534 534 { 535 lazyInit( AllFields);535 lazyInit(CommonAndUncommonFields); 536 536 537 537 return m_resourceLoadTiming.get(); … … 540 540 void ResourceResponseBase::setResourceLoadTiming(PassRefPtr<ResourceLoadTiming> resourceLoadTiming) 541 541 { 542 lazyInit( AllFields);542 lazyInit(CommonAndUncommonFields); 543 543 544 544 m_resourceLoadTiming = resourceLoadTiming; … … 547 547 PassRefPtr<ResourceLoadInfo> ResourceResponseBase::resourceLoadInfo() const 548 548 { 549 lazyInit( AllFields);549 lazyInit(CommonAndUncommonFields); 550 550 551 551 return m_resourceLoadInfo.get(); … … 554 554 void ResourceResponseBase::setResourceLoadInfo(PassRefPtr<ResourceLoadInfo> loadInfo) 555 555 { 556 lazyInit( AllFields);556 lazyInit(CommonAndUncommonFields); 557 557 558 558 m_resourceLoadInfo = loadInfo; -
trunk/Source/WebCore/platform/network/ResourceResponseBase.h
r83526 r87229 133 133 Uninitialized, 134 134 CommonFieldsOnly, 135 CommonAndUncommonFields, 135 136 AllFields 136 137 }; -
trunk/Source/WebCore/platform/network/cf/ResourceResponse.h
r82764 r87229 45 45 public: 46 46 ResourceResponse() 47 : m_initLevel( AllFields)47 : m_initLevel(CommonAndUncommonFields) 48 48 { 49 49 } … … 67 67 ResourceResponse(const KURL& url, const String& mimeType, long long expectedLength, const String& textEncodingName, const String& filename) 68 68 : ResourceResponseBase(url, mimeType, expectedLength, textEncodingName, filename) 69 , m_initLevel( AllFields)69 , m_initLevel(CommonAndUncommonFields) 70 70 { 71 71 } -
trunk/Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp
r82764 r87229 44 44 45 45 static 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") 47 47 }; 48 48 static const int numCommonHeaderFields = sizeof(commonHeaderFields) / sizeof(CFStringRef); … … 99 99 m_lastModifiedDate = toTimeT(CFURLResponseGetLastModifiedDate(m_cfResponse.get())); 100 100 101 RetainPtr<CFStringRef> suggestedFilename(AdoptCF, CFURLResponseCopySuggestedFilename(m_cfResponse.get()));102 m_suggestedFilename = suggestedFilename.get();103 104 101 CFHTTPMessageRef httpResponse = CFURLResponseGetHTTPResponse(m_cfResponse.get()); 105 102 if (httpResponse) { … … 117 114 } 118 115 119 if (m_initLevel < AllFields && initLevel >= AllFields) {116 if (m_initLevel < CommonAndUncommonFields && initLevel >= CommonAndUncommonFields) { 120 117 CFHTTPMessageRef httpResponse = CFURLResponseGetHTTPResponse(m_cfResponse.get()); 121 118 if (httpResponse) { … … 132 129 } 133 130 } 131 132 if (m_initLevel < AllFields && initLevel >= AllFields) { 133 RetainPtr<CFStringRef> suggestedFilename(AdoptCF, CFURLResponseCopySuggestedFilename(m_cfResponse.get())); 134 m_suggestedFilename = suggestedFilename.get(); 135 } 134 136 135 137 m_initLevel = initLevel; -
trunk/Source/WebCore/platform/network/mac/ResourceResponseMac.mm
r85036 r87229 45 45 46 46 static 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" 48 48 }; 49 49 static const int numCommonHeaderFields = sizeof(commonHeaderFields) / sizeof(AtomicString*); … … 89 89 m_textEncodingName = m_textEncodingName.substring(1, textEncodingNameLength - 2); 90 90 91 m_suggestedFilename = [m_nsResponse.get() suggestedFilename];92 93 91 if ([m_nsResponse.get() isKindOfClass:[NSHTTPURLResponse class]]) { 94 92 NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)m_nsResponse.get(); … … 108 106 } 109 107 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]; 112 111 113 NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)m_nsResponse.get();112 NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)m_nsResponse.get(); 114 113 115 RetainPtr<NSString> httpStatusLine(AdoptNS, wkCopyNSURLResponseStatusLine(m_nsResponse.get()));116 if (httpStatusLine)117 m_httpStatusText = extractReasonPhraseFromHTTPStatusLine(httpStatusLine.get());118 else119 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"; 120 119 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 } 127 127 } 128 129 if (m_initLevel < AllFields && initLevel >= AllFields) 130 m_suggestedFilename = [m_nsResponse.get() suggestedFilename]; 128 131 129 132 m_initLevel = initLevel;
Note: See TracChangeset
for help on using the changeset viewer.