Changeset 85207 in webkit


Ignore:
Timestamp:
Apr 28, 2011 10:49:20 AM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-04-28 Arno Renevier <arno@renevier.net>

Reviewed by Gustavo Noronha Silva.

[Soup] does not load css stylesheets without content-type
https://bugs.webkit.org/show_bug.cgi?id=59697

  • platform/gtk/Skipped: Enable now passing tests:
    • http/tests/mime/standard-mode-loads-stylesheet-with-empty-content-type.html
    • http/tests/mime/standard-mode-loads-stylesheet-with-text-css-and-invalid-type.html

2011-04-28 Arno Renevier <arno@renevier.net>

Reviewed by Gustavo Noronha Silva.

[Soup] does not load css stylesheets without content-type
https://bugs.webkit.org/show_bug.cgi?id=59697

When sniffing content type, do not replace http Content-Type header in
soup message anymore, but keep sniffed content type in a separate
variable.

  • platform/network/soup/ResourceHandleSoup.cpp: (WebCore::contentSniffedCallback):
  • platform/network/soup/ResourceResponse.h: (WebCore::ResourceResponse::sniffedContentType): (WebCore::ResourceResponse::setSniffedContentType):
  • platform/network/soup/ResourceResponseSoup.cpp: (WebCore::ResourceResponse::updateFromSoupMessage):
Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r85205 r85207  
     12011-04-28  Arno Renevier  <arno@renevier.net>
     2
     3        Reviewed by Gustavo Noronha Silva.
     4
     5        [Soup] does not load css stylesheets without content-type
     6        https://bugs.webkit.org/show_bug.cgi?id=59697
     7
     8        * platform/gtk/Skipped: Enable now passing tests:
     9         - http/tests/mime/standard-mode-loads-stylesheet-with-empty-content-type.html
     10         - http/tests/mime/standard-mode-loads-stylesheet-with-text-css-and-invalid-type.html
     11
    1122011-04-28  Adam Roben  <aroben@apple.com>
    213
  • trunk/LayoutTests/platform/gtk/Skipped

    r85082 r85207  
    516516http/tests/media/video-play-stall.html
    517517http/tests/media/video-seekable-stall.html
    518 http/tests/mime/standard-mode-loads-stylesheet-with-empty-content-type.html
    519 http/tests/mime/standard-mode-loads-stylesheet-with-text-css-and-invalid-type.html
    520518http/tests/misc/acid3.html
    521519http/tests/misc/link-rel-prefetch-and-subresource.html
  • trunk/Source/WebCore/ChangeLog

    r85206 r85207  
     12011-04-28  Arno Renevier  <arno@renevier.net>
     2
     3        Reviewed by Gustavo Noronha Silva.
     4
     5        [Soup] does not load css stylesheets without content-type
     6        https://bugs.webkit.org/show_bug.cgi?id=59697
     7
     8        When sniffing content type, do not replace http Content-Type header in
     9        soup message anymore, but keep sniffed content type in a separate
     10        variable.
     11
     12        * platform/network/soup/ResourceHandleSoup.cpp:
     13        (WebCore::contentSniffedCallback):
     14        * platform/network/soup/ResourceResponse.h:
     15        (WebCore::ResourceResponse::sniffedContentType):
     16        (WebCore::ResourceResponse::setSniffedContentType):
     17        * platform/network/soup/ResourceResponseSoup.cpp:
     18        (WebCore::ResourceResponse::updateFromSoupMessage):
     19
    1202011-04-28  Yael Aharon  <yael.aharon@nokia.com>
    221
  • trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp

    r84260 r85207  
    317317static void contentSniffedCallback(SoupMessage* msg, const char* sniffedType, GHashTable *params, gpointer data)
    318318{
     319
     320    if (statusWillBeHandledBySoup(msg->status_code))
     321        return;
     322
     323    RefPtr<ResourceHandle> handle = static_cast<ResourceHandle*>(data);
     324    if (!handle)
     325        return;
     326    ResourceHandleInternal* d = handle->getInternal();
     327    if (d->m_cancelled)
     328        return;
     329    ResourceHandleClient* client = handle->client();
     330    if (!client)
     331        return;
     332
     333    ASSERT(d->m_response.isNull());
     334
    319335    if (sniffedType) {
    320336        const char* officialType = soup_message_headers_get_one(msg->response_headers, "Content-Type");
    321 
    322         if (!officialType || strcmp(officialType, sniffedType))
    323             soup_message_headers_set_content_type(msg->response_headers, sniffedType, params);
    324     }
    325 
    326     if (statusWillBeHandledBySoup(msg->status_code))
    327         return;
    328 
    329     RefPtr<ResourceHandle> handle = static_cast<ResourceHandle*>(data);
    330     if (!handle)
    331         return;
    332     ResourceHandleInternal* d = handle->getInternal();
    333     if (d->m_cancelled)
    334         return;
    335     ResourceHandleClient* client = handle->client();
    336     if (!client)
    337         return;
    338 
    339     ASSERT(d->m_response.isNull());
     337        if (!officialType || strcmp(officialType, sniffedType)) {
     338            GString* str = g_string_new(sniffedType);
     339            if (params) {
     340                GHashTableIter iter;
     341                gpointer key, value;
     342                g_hash_table_iter_init(&iter, params);
     343                while (g_hash_table_iter_next(&iter, &key, &value)) {
     344                    g_string_append(str, "; ");
     345                    soup_header_g_string_append_param(str, static_cast<const char*>(key), static_cast<const char*>(value));
     346                }
     347            }
     348            d->m_response.setSniffedContentType(str->str);
     349            g_string_free(str, TRUE);
     350        }
     351    }
    340352
    341353    fillResponseFromMessage(msg, &d->m_response);
  • trunk/Source/WebCore/platform/network/soup/ResourceResponse.h

    r68762 r85207  
    5959    void setSoupMessageFlags(SoupMessageFlags soupFlags) { m_soupFlags = soupFlags; }
    6060
     61    const String& sniffedContentType() const { return m_sniffedContentType; }
     62    void setSniffedContentType(const String& value) { m_sniffedContentType = value; }
     63
    6164private:
    6265    friend class ResourceResponseBase;
    6366
    6467    SoupMessageFlags m_soupFlags;
     68    String m_sniffedContentType;
    6569
    6670    void doUpdateResourceResponse() { }
  • trunk/Source/WebCore/platform/network/soup/ResourceResponseSoup.cpp

    r70651 r85207  
    7272    m_soupFlags = soup_message_get_flags(soupMessage);
    7373
    74     String contentType = soup_message_headers_get_one(soupMessage->response_headers, "Content-Type");
     74    String contentType;
     75    if (sniffedContentType().isEmpty())
     76        contentType = soup_message_headers_get_one(soupMessage->response_headers, "Content-Type");
     77    else
     78        contentType = this->sniffedContentType();
    7579    setMimeType(extractMIMETypeFromMediaType(contentType));
    7680
Note: See TracChangeset for help on using the changeset viewer.