From cd9fd76bad593b4549a0b37741ef944c446dfe60 Mon Sep 17 00:00:00 2001 From: "commit-queue@webkit.org" Date: Fri, 16 Mar 2012 17:43:56 +0000 Subject: [PATCH 1/1] [BlackBerry] Update NetworkJob to accept batched headers https://bugs.webkit.org/show_bug.cgi?id=81273 Batch up the headers into a vector before they come into webkit to increase performance, and simplify the API. Patch by Tay Grigg on 2012-03-16 Reviewed by George Staikos. * platform/network/blackberry/NetworkJob.cpp: (WebCore::NetworkJob::notifyHeadersReceived): * platform/network/blackberry/NetworkJob.h: (NetworkJob): git-svn-id: https://svn.webkit.org/repository/webkit/trunk@111025 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebCore/ChangeLog | 15 ++++++ .../network/blackberry/NetworkJob.cpp | 47 ++++++++++--------- .../platform/network/blackberry/NetworkJob.h | 2 +- 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 3d27f88c5905..e56d98e3ffce 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,18 @@ +2012-03-16 Tay Grigg + + [BlackBerry] Update NetworkJob to accept batched headers + https://bugs.webkit.org/show_bug.cgi?id=81273 + + Batch up the headers into a vector before they come into + webkit to increase performance, and simplify the API. + + Reviewed by George Staikos. + + * platform/network/blackberry/NetworkJob.cpp: + (WebCore::NetworkJob::notifyHeadersReceived): + * platform/network/blackberry/NetworkJob.h: + (NetworkJob): + 2012-03-16 Dana Jansens [chromium] Add overdraw metrics for texture uploads diff --git a/Source/WebCore/platform/network/blackberry/NetworkJob.cpp b/Source/WebCore/platform/network/blackberry/NetworkJob.cpp index 912b7e99695f..60cc86c3f209 100644 --- a/Source/WebCore/platform/network/blackberry/NetworkJob.cpp +++ b/Source/WebCore/platform/network/blackberry/NetworkJob.cpp @@ -248,29 +248,32 @@ void NetworkJob::notifyWMLOverride() handleNotifyWMLOverride(); } -void NetworkJob::notifyHeaderReceived(const char* key, const char* value) +void NetworkJob::notifyHeadersReceived(BlackBerry::Platform::NetworkRequest::HeaderList& headers) { - if (shouldDeferLoading()) - m_deferredData.deferHeaderReceived(key, value); - else { - String keyString(key); - String valueString; - if (equalIgnoringCase(keyString, "Location")) { - // Location, like all headers, is supposed to be Latin-1. But some sites (wikipedia) send it in UTF-8. - // All byte strings that are valid UTF-8 are also valid Latin-1 (although outside ASCII, the meaning will - // differ), but the reverse isn't true. So try UTF-8 first and fall back to Latin-1 if it's invalid. - // (High Latin-1 should be url-encoded anyway.) - // - // FIXME: maybe we should do this with other headers? - // Skip it for now - we don't want to rewrite random bytes unless we're sure. (Definitely don't want to - // rewrite cookies, for instance.) Needs more investigation. - valueString = String::fromUTF8(value); - if (valueString.isNull()) - valueString = value; - } else - valueString = value; - - handleNotifyHeaderReceived(keyString, valueString); + BlackBerry::Platform::NetworkRequest::HeaderList::const_iterator endIt = headers.end(); + for (BlackBerry::Platform::NetworkRequest::HeaderList::const_iterator it = headers.begin(); it != endIt; ++it) { + if (shouldDeferLoading()) + m_deferredData.deferHeaderReceived(it->first.c_str(), it->second.c_str()); + else { + String keyString(it->first.c_str()); + String valueString; + if (equalIgnoringCase(keyString, "Location")) { + // Location, like all headers, is supposed to be Latin-1. But some sites (wikipedia) send it in UTF-8. + // All byte strings that are valid UTF-8 are also valid Latin-1 (although outside ASCII, the meaning will + // differ), but the reverse isn't true. So try UTF-8 first and fall back to Latin-1 if it's invalid. + // (High Latin-1 should be url-encoded anyway.) + // + // FIXME: maybe we should do this with other headers? + // Skip it for now - we don't want to rewrite random bytes unless we're sure. (Definitely don't want to + // rewrite cookies, for instance.) Needs more investigation. + valueString = String::fromUTF8(it->second.c_str()); + if (valueString.isNull()) + valueString = it->second.c_str(); + } else + valueString = it->second.c_str(); + + handleNotifyHeaderReceived(keyString, valueString); + } } } diff --git a/Source/WebCore/platform/network/blackberry/NetworkJob.h b/Source/WebCore/platform/network/blackberry/NetworkJob.h index a50059ab1c16..586b45f4bc3b 100644 --- a/Source/WebCore/platform/network/blackberry/NetworkJob.h +++ b/Source/WebCore/platform/network/blackberry/NetworkJob.h @@ -69,7 +69,7 @@ public: void handleNotifyStatusReceived(int status, const String& message); virtual void notifyWMLOverride(); void handleNotifyWMLOverride() { m_response.setIsWML(true); } - virtual void notifyHeaderReceived(const char* key, const char* value); + virtual void notifyHeadersReceived(BlackBerry::Platform::NetworkRequest::HeaderList& headers); virtual void notifyMultipartHeaderReceived(const char* key, const char* value); // Exists only to resolve ambiguity between char* and String parameters void notifyStringHeaderReceived(const String& key, const String& value); -- 2.36.0