Title: [87574] branches/safari-534-branch/Source/WebCore

Diff

Modified: branches/safari-534-branch/Source/WebCore/ChangeLog (87573 => 87574)


--- branches/safari-534-branch/Source/WebCore/ChangeLog	2011-05-27 21:37:09 UTC (rev 87573)
+++ branches/safari-534-branch/Source/WebCore/ChangeLog	2011-05-27 21:43:04 UTC (rev 87574)
@@ -1,5 +1,54 @@
 2011-05-27  Mark Rowe  <mr...@apple.com>
 
+        Merge r87460.
+
+    2011-05-26  Stephanie Lewis  <sle...@apple.com>
+
+        Reviewed by Geoff Garen.
+
+        https://bugs.webkit.org/show_bug.cgi?id=61345
+        part of <rdar://problem/8675177>
+        Roll back in now that the Crashes are fixed.  ResourceResponseBase and ResourceResponse had two different definitions
+        for m_isNull.  ResourceResponse treats m_isNull as meaning there isn't any platform ResourceResponse. 
+        ResourceResponseBase treats m_isNull as meaning no fields have been initialized.  Consolidate calls into ResourceResponseBase meaning. 
+
+        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.
+
+        No new functionality so no new tests.
+
+        * 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:
+
+2011-05-27  Mark Rowe  <mr...@apple.com>
+
         Merge r87329.
 
     2011-05-25  Stephanie Lewis  <sle...@apple.com>

Modified: branches/safari-534-branch/Source/WebCore/platform/network/ResourceResponseBase.cpp (87573 => 87574)


--- branches/safari-534-branch/Source/WebCore/platform/network/ResourceResponseBase.cpp	2011-05-27 21:37:09 UTC (rev 87573)
+++ branches/safari-534-branch/Source/WebCore/platform/network/ResourceResponseBase.cpp	2011-05-27 21:43:04 UTC (rev 87574)
@@ -108,7 +108,7 @@
     response->setHTTPStatusCode(data->m_httpStatusCode);
     response->setHTTPStatusText(data->m_httpStatusText);
 
-    response->lazyInit(AllFields);
+    response->lazyInit(CommonAndUncommonFields);
     response->m_httpHeaderFields.adopt(data->m_httpHeaders.release());
     response->setLastModifiedDate(data->m_lastModifiedDate);
     response->setResourceLoadTiming(data->m_resourceLoadTiming.release());
@@ -205,14 +205,14 @@
 // FIXME should compute this on the fly
 const String& ResourceResponseBase::suggestedFilename() const
 {
-    lazyInit(CommonFieldsOnly);
+    lazyInit(AllFields);
 
     return m_suggestedFilename;
 }
 
 void ResourceResponseBase::setSuggestedFilename(const String& suggestedName)
 {
-    lazyInit(CommonFieldsOnly);
+    lazyInit(AllFields);
     m_isNull = false;
 
     m_suggestedFilename = suggestedName; 
@@ -234,14 +234,14 @@
 
 const String& ResourceResponseBase::httpStatusText() const 
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_httpStatusText; 
 }
 
 void ResourceResponseBase::setHTTPStatusText(const String& statusText) 
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     m_httpStatusText = statusText; 
 }
@@ -255,7 +255,7 @@
     if (!value.isEmpty())        
         return value;
 
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_httpHeaderFields.get(name); 
 }
@@ -269,14 +269,14 @@
     if (!value.isEmpty())
         return value;
 
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_httpHeaderFields.get(name); 
 }
 
 void ResourceResponseBase::setHTTPHeaderField(const AtomicString& name, const String& value)
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     DEFINE_STATIC_LOCAL(const AtomicString, ageHeader, ("age"));
     DEFINE_STATIC_LOCAL(const AtomicString, cacheControlHeader, ("cache-control"));
@@ -300,7 +300,7 @@
 
 const HTTPHeaderMap& ResourceResponseBase::httpHeaderFields() const
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_httpHeaderFields;
 }
@@ -464,7 +464,7 @@
 
 bool ResourceResponseBase::isAttachment() const
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("content-disposition"));
     String value = m_httpHeaderFields.get(headerName);
@@ -478,21 +478,21 @@
   
 void ResourceResponseBase::setLastModifiedDate(time_t lastModifiedDate)
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     m_lastModifiedDate = lastModifiedDate;
 }
 
 time_t ResourceResponseBase::lastModifiedDate() const
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_lastModifiedDate;
 }
 
 bool ResourceResponseBase::wasCached() const
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_wasCached;
 }
@@ -504,56 +504,56 @@
 
 bool ResourceResponseBase::connectionReused() const
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_connectionReused;
 }
 
 void ResourceResponseBase::setConnectionReused(bool connectionReused)
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     m_connectionReused = connectionReused;
 }
 
 unsigned ResourceResponseBase::connectionID() const
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_connectionID;
 }
 
 void ResourceResponseBase::setConnectionID(unsigned connectionID)
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     m_connectionID = connectionID;
 }
 
 ResourceLoadTiming* ResourceResponseBase::resourceLoadTiming() const
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_resourceLoadTiming.get();
 }
 
 void ResourceResponseBase::setResourceLoadTiming(PassRefPtr<ResourceLoadTiming> resourceLoadTiming)
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     m_resourceLoadTiming = resourceLoadTiming;
 }
 
 PassRefPtr<ResourceLoadInfo> ResourceResponseBase::resourceLoadInfo() const
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     return m_resourceLoadInfo.get();
 }
 
 void ResourceResponseBase::setResourceLoadInfo(PassRefPtr<ResourceLoadInfo> loadInfo)
 {
-    lazyInit(AllFields);
+    lazyInit(CommonAndUncommonFields);
 
     m_resourceLoadInfo = loadInfo;
 }

Modified: branches/safari-534-branch/Source/WebCore/platform/network/ResourceResponseBase.h (87573 => 87574)


--- branches/safari-534-branch/Source/WebCore/platform/network/ResourceResponseBase.h	2011-05-27 21:37:09 UTC (rev 87573)
+++ branches/safari-534-branch/Source/WebCore/platform/network/ResourceResponseBase.h	2011-05-27 21:43:04 UTC (rev 87574)
@@ -132,6 +132,7 @@
     enum InitLevel {
         Uninitialized,
         CommonFieldsOnly,
+        CommonAndUncommonFields,
         AllFields
     };
 

Modified: branches/safari-534-branch/Source/WebCore/platform/network/cf/ResourceResponse.h (87573 => 87574)


--- branches/safari-534-branch/Source/WebCore/platform/network/cf/ResourceResponse.h	2011-05-27 21:37:09 UTC (rev 87573)
+++ branches/safari-534-branch/Source/WebCore/platform/network/cf/ResourceResponse.h	2011-05-27 21:43:04 UTC (rev 87574)
@@ -44,7 +44,7 @@
 class ResourceResponse : public ResourceResponseBase {
 public:
     ResourceResponse()
-        : m_initLevel(AllFields)
+        : m_initLevel(CommonAndUncommonFields)
     {
     }
 
@@ -66,7 +66,7 @@
 
     ResourceResponse(const KURL& url, const String& mimeType, long long expectedLength, const String& textEncodingName, const String& filename)
         : ResourceResponseBase(url, mimeType, expectedLength, textEncodingName, filename)
-        , m_initLevel(AllFields)
+        , m_initLevel(CommonAndUncommonFields)
     {
     }
 

Modified: branches/safari-534-branch/Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp (87573 => 87574)


--- branches/safari-534-branch/Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp	2011-05-27 21:37:09 UTC (rev 87573)
+++ branches/safari-534-branch/Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp	2011-05-27 21:43:04 UTC (rev 87574)
@@ -43,7 +43,7 @@
 namespace WebCore {
 
 static CFStringRef const commonHeaderFields[] = {
-    CFSTR("Age"), CFSTR("Cache-Control"), CFSTR("Date"), CFSTR("Etag"), CFSTR("Expires"), CFSTR("Last-Modified"), CFSTR("Pragma")
+    CFSTR("Age"), CFSTR("Cache-Control"), CFSTR("Content-Type"), CFSTR("Date"), CFSTR("Etag"), CFSTR("Expires"), CFSTR("Last-Modified"), CFSTR("Pragma")
 };
 static const int numCommonHeaderFields = sizeof(commonHeaderFields) / sizeof(CFStringRef);
 
@@ -80,10 +80,8 @@
     if (m_initLevel > initLevel)
         return;
 
-    if (m_isNull) {
-        ASSERT(!m_cfResponse.get());
+    if (m_isNull || !m_cfResponse.get())
         return;
-    }
 
     if (m_initLevel < CommonFieldsOnly && initLevel >= CommonFieldsOnly) {
         m_url = CFURLResponseGetURL(m_cfResponse.get());
@@ -98,9 +96,6 @@
 
         m_lastModifiedDate = toTimeT(CFURLResponseGetLastModifiedDate(m_cfResponse.get()));
 
-        RetainPtr<CFStringRef> suggestedFilename(AdoptCF, CFURLResponseCopySuggestedFilename(m_cfResponse.get()));
-        m_suggestedFilename = suggestedFilename.get();
-
         CFHTTPMessageRef httpResponse = CFURLResponseGetHTTPResponse(m_cfResponse.get());
         if (httpResponse) {
             m_httpStatusCode = CFHTTPMessageGetResponseStatusCode(httpResponse);
@@ -116,7 +111,7 @@
             m_httpStatusCode = 0;
     }
 
-    if (m_initLevel < AllFields && initLevel >= AllFields) {
+    if (m_initLevel < CommonAndUncommonFields && initLevel >= CommonAndUncommonFields) {
         CFHTTPMessageRef httpResponse = CFURLResponseGetHTTPResponse(m_cfResponse.get());
         if (httpResponse) {
             RetainPtr<CFStringRef> statusLine(AdoptCF, CFHTTPMessageCopyResponseStatusLine(httpResponse));
@@ -131,6 +126,11 @@
                 m_httpHeaderFields.set((CFStringRef)keys[i], (CFStringRef)values[i]);
         }
     }
+    
+    if (m_initLevel < AllFields && initLevel >= AllFields) {
+        RetainPtr<CFStringRef> suggestedFilename(AdoptCF, CFURLResponseCopySuggestedFilename(m_cfResponse.get()));
+        m_suggestedFilename = suggestedFilename.get();
+    }
 
     m_initLevel = initLevel;
 }

Modified: branches/safari-534-branch/Source/WebCore/platform/network/mac/ResourceResponseMac.mm (87573 => 87574)


--- branches/safari-534-branch/Source/WebCore/platform/network/mac/ResourceResponseMac.mm	2011-05-27 21:37:09 UTC (rev 87573)
+++ branches/safari-534-branch/Source/WebCore/platform/network/mac/ResourceResponseMac.mm	2011-05-27 21:43:04 UTC (rev 87574)
@@ -44,7 +44,7 @@
 namespace WebCore {
 
 static NSString* const commonHeaderFields[] = {
-    @"Age", @"Cache-Control", @"Date", @"Etag", @"Expires", @"Last-Modified", @"Pragma"
+    @"Age", @"Cache-Control", @"Content-Type", @"Date", @"Etag", @"Expires", @"Last-Modified", @"Pragma"
 };
 static const int numCommonHeaderFields = sizeof(commonHeaderFields) / sizeof(AtomicString*);
 
@@ -69,11 +69,9 @@
     if (m_initLevel >= initLevel)
         return;
 
-    if (m_isNull) {
-        ASSERT(!m_nsResponse);
+    if (m_isNull || !m_nsResponse)
         return;
-    }
-
+    
     if (m_initLevel < CommonFieldsOnly && initLevel >= CommonFieldsOnly) {
         NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
 
@@ -88,8 +86,6 @@
         if (textEncodingNameLength >= 2 && m_textEncodingName[0U] == '"' && m_textEncodingName[textEncodingNameLength - 1] == '"')
             m_textEncodingName = m_textEncodingName.substring(1, textEncodingNameLength - 2);
 
-        m_suggestedFilename = [m_nsResponse.get() suggestedFilename];
-
         if ([m_nsResponse.get() isKindOfClass:[NSHTTPURLResponse class]]) {
             NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)m_nsResponse.get();
 
@@ -107,24 +103,29 @@
         [pool drain];
     }
 
-    if (m_initLevel < AllFields && initLevel >= AllFields && [m_nsResponse.get() isKindOfClass:[NSHTTPURLResponse class]]) {
-        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
+    if (m_initLevel < CommonAndUncommonFields && initLevel >= CommonAndUncommonFields) {
+        if ([m_nsResponse.get() isKindOfClass:[NSHTTPURLResponse class]]) {
+            NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
 
-        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)m_nsResponse.get();
+            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)m_nsResponse.get();
 
-        RetainPtr<NSString> httpStatusLine(AdoptNS, wkCopyNSURLResponseStatusLine(m_nsResponse.get()));
-        if (httpStatusLine)
-            m_httpStatusText = extractReasonPhraseFromHTTPStatusLine(httpStatusLine.get());
-        else
-            m_httpStatusText = "OK";
+            RetainPtr<NSString> httpStatusLine(AdoptNS, wkCopyNSURLResponseStatusLine(m_nsResponse.get()));
+            if (httpStatusLine)
+                m_httpStatusText = extractReasonPhraseFromHTTPStatusLine(httpStatusLine.get());
+            else
+                m_httpStatusText = "OK";
 
-        NSDictionary *headers = [httpResponse allHeaderFields];
-        NSEnumerator *e = [headers keyEnumerator];
-        while (NSString *name = [e nextObject])
-            m_httpHeaderFields.set(name, [headers objectForKey:name]);
-        
-        [pool drain];
+            NSDictionary *headers = [httpResponse allHeaderFields];
+            NSEnumerator *e = [headers keyEnumerator];
+            while (NSString *name = [e nextObject])
+                m_httpHeaderFields.set(name, [headers objectForKey:name]);
+            
+            [pool drain];
+        }
     }
+     
+    if (m_initLevel < AllFields && initLevel >= AllFields)
+        m_suggestedFilename = [m_nsResponse.get() suggestedFilename];
 
     m_initLevel = initLevel;
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to