+2012-03-16 Tay Grigg <tgrigg@rim.com>
+
+ [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 <danakj@chromium.org>
[chromium] Add overdraw metrics for texture uploads
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);
+ }
}
}
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);