[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
caseq at chromium.org
caseq at chromium.org
Wed Dec 22 13:57:40 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 363bd6dd7a49c1e6675b037311c9e6362e4dcb54
Author: caseq at chromium.org <caseq at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Thu Sep 30 12:53:28 2010 +0000
2010-09-29 Andrey Kosyakov <caseq at chromium.org>
Reviewed by Pavel Feldman.
Web Inspector: display headers actually used by network stack in Resources tab
https://bugs.webkit.org/show_bug.cgi?id=46092
* GNUmakefile.am:
* WebCore.gypi:
* WebCore.pro:
* WebCore.vcproj/WebCore.vcproj:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::willSendRequest): enable raw headers reporting if front-end is visible.
* inspector/InspectorResource.cpp:
(WebCore::InspectorResource::updateResponse):
* platform/network/ResourceRawHeaders.h: Added.
* platform/network/ResourceRequestBase.h: Added flag to enable raw headers reporting.
(WebCore::ResourceRequestBase::reportRawHeaders):
(WebCore::ResourceRequestBase::setReportRawHeaders):
(WebCore::ResourceRequestBase::ResourceRequestBase):
* platform/network/ResourceResponseBase.cpp: Added support for raw headers.
(WebCore::ResourceResponseBase::resourceRawHeaders):
(WebCore::ResourceResponseBase::setResourceRawHeaders):
* platform/network/ResourceResponseBase.h:
2010-09-29 Andrey Kosyakov <caseq at chromium.org>
Reviewed by Pavel Feldman.
Web Inspector: display headers actually used by network stack in Resources tab
Added plumbing for raw headers flag and response field between chromium and WebCore.
https://bugs.webkit.org/show_bug.cgi?id=46092
* WebKit.gyp:
* public/WebResourceRawHeaders.h: Added.
* public/WebURLRequest.h:
* public/WebURLResponse.h:
* src/WebDevToolsAgentImpl.cpp:
(WebKit::WebDevToolsAgentImpl::willSendRequest):
* src/WebResourceRawHeaders.cpp: Added.
(WebKit::WebResourceRawHeaders::WebResourceRawHeaders):
(WebKit::WebResourceRawHeaders::~WebResourceRawHeaders):
(WebKit::WebResourceRawHeaders::operator WTF::PassRefPtr<WebCore::ResourceRawHeaders>):
(WebKit::addHeader):
(WebKit::WebResourceRawHeaders::addRequestHeader):
(WebKit::WebResourceRawHeaders::addResponseHeader):
* src/WebURLRequest.cpp:
(WebKit::WebURLRequest::setReportRawHeaders):
(WebKit::WebURLRequest::reportRawHeaders):
* src/WebURLResponse.cpp:
(WebKit::WebURLResponse::resourceRawHeaders):
(WebKit::WebURLResponse::setResourceRawHeaders):
* src/WebURLResponsePrivate.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68781 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 4596d61..b9d9b40 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,28 @@
+2010-09-29 Andrey Kosyakov <caseq at chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: display headers actually used by network stack in Resources tab
+ https://bugs.webkit.org/show_bug.cgi?id=46092
+
+ * GNUmakefile.am:
+ * WebCore.gypi:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::willSendRequest): enable raw headers reporting if front-end is visible.
+ * inspector/InspectorResource.cpp:
+ (WebCore::InspectorResource::updateResponse):
+ * platform/network/ResourceRawHeaders.h: Added.
+ * platform/network/ResourceRequestBase.h: Added flag to enable raw headers reporting.
+ (WebCore::ResourceRequestBase::reportRawHeaders):
+ (WebCore::ResourceRequestBase::setReportRawHeaders):
+ (WebCore::ResourceRequestBase::ResourceRequestBase):
+ * platform/network/ResourceResponseBase.cpp: Added support for raw headers.
+ (WebCore::ResourceResponseBase::resourceRawHeaders):
+ (WebCore::ResourceResponseBase::setResourceRawHeaders):
+ * platform/network/ResourceResponseBase.h:
+
2010-09-30 Andreas Kling <andreas.kling at nokia.com>
Reviewed by Tor Arne Vestbø.
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index c493c23..afa6851 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -2361,6 +2361,7 @@ webcore_sources += \
WebCore/platform/network/ResourceRequestBase.h \
WebCore/platform/network/ResourceResponseBase.cpp \
WebCore/platform/network/ResourceResponseBase.h \
+ WebCore/platform/network/ResourceRawHeaders.h \
WebCore/platform/network/SocketStreamErrorBase.cpp \
WebCore/platform/network/SocketStreamErrorBase.h \
WebCore/platform/network/SocketStreamHandleBase.cpp \
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index 5bbfc9b..e77ac55 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -2997,6 +2997,7 @@
'platform/network/ResourceRequestBase.h',
'platform/network/ResourceResponseBase.cpp',
'platform/network/ResourceResponseBase.h',
+ 'platform/network/ResourceRawHeaders.h',
'platform/network/SocketStreamErrorBase.cpp',
'platform/network/SocketStreamErrorBase.h',
'platform/network/SocketStreamHandleBase.cpp',
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 2bbc165..d17afc2 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -2104,6 +2104,7 @@ HEADERS += \
platform/network/ResourceLoadTiming.h \
platform/network/ResourceRequestBase.h \
platform/network/ResourceResponseBase.h \
+ platform/network/ResourceRawHeaders.h \
platform/PlatformTouchEvent.h \
platform/PlatformTouchPoint.h \
platform/PopupMenu.h \
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index 2c476de..9126317 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -27428,6 +27428,10 @@
>
</File>
<File
+ RelativePath="..\platform\network\ResourceRawHeaders.h"
+ >
+ </File>
+ <File
RelativePath="..\platform\network\SocketStreamErrorBase.cpp"
>
</File>
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index b2cf3b1..2b84d6b 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -918,6 +918,7 @@
490707E61219C04300D90E51 /* ANGLEWebKitBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */; };
490707E71219C04300D90E51 /* ANGLEWebKitBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */; };
492273A31083B3B100EE5C84 /* JSArrayBufferViewCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 492273A21083B3B100EE5C84 /* JSArrayBufferViewCustom.cpp */; };
+ 492863991253B8FC00F792D6 /* ResourceRawHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 492863981253B8FC00F792D6 /* ResourceRawHeaders.h */; };
49484FC1102CF23C00187DD3 /* CanvasGradient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49484FB3102CF23C00187DD3 /* CanvasGradient.cpp */; };
49484FC2102CF23C00187DD3 /* CanvasGradient.h in Headers */ = {isa = PBXBuildFile; fileRef = 49484FB4102CF23C00187DD3 /* CanvasGradient.h */; };
49484FC4102CF23C00187DD3 /* CanvasPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 49484FB6102CF23C00187DD3 /* CanvasPattern.cpp */; };
@@ -6875,6 +6876,7 @@
490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ANGLEWebKitBridge.cpp; sourceTree = "<group>"; };
490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGLEWebKitBridge.h; sourceTree = "<group>"; };
492273A21083B3B100EE5C84 /* JSArrayBufferViewCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSArrayBufferViewCustom.cpp; sourceTree = "<group>"; };
+ 492863981253B8FC00F792D6 /* ResourceRawHeaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceRawHeaders.h; sourceTree = "<group>"; };
49484FB3102CF23C00187DD3 /* CanvasGradient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CanvasGradient.cpp; path = canvas/CanvasGradient.cpp; sourceTree = "<group>"; };
49484FB4102CF23C00187DD3 /* CanvasGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanvasGradient.h; path = canvas/CanvasGradient.h; sourceTree = "<group>"; };
49484FB5102CF23C00187DD3 /* CanvasGradient.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CanvasGradient.idl; path = canvas/CanvasGradient.idl; sourceTree = "<group>"; };
@@ -12704,6 +12706,7 @@
514C76650CE923A1007EF3CD /* ResourceHandleClient.h */,
514C76660CE923A1007EF3CD /* ResourceHandleInternal.h */,
8A81BF8411DCFD9000DA2B98 /* ResourceLoadTiming.h */,
+ 492863981253B8FC00F792D6 /* ResourceRawHeaders.h */,
514C76670CE923A1007EF3CD /* ResourceRequestBase.cpp */,
514C76680CE923A1007EF3CD /* ResourceRequestBase.h */,
514C76690CE923A1007EF3CD /* ResourceResponseBase.cpp */,
@@ -20805,6 +20808,7 @@
E1BE512E0CF6C512002EA959 /* XSLTUnicodeSort.h in Headers */,
97DD4D870FDF4D6E00ECF9A4 /* XSSAuditor.h in Headers */,
20D629271253690B00081543 /* InspectorInstrumentation.h in Headers */,
+ 492863991253B8FC00F792D6 /* ResourceRawHeaders.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index 903cade..b5cff8d 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -1003,6 +1003,10 @@ void InspectorController::willSendRequest(unsigned long identifier, ResourceRequ
return;
request.setReportLoadTiming(true);
+ // Only enable raw headers if front-end is attached, as otherwise we may lack
+ // permissions to fetch the headers.
+ if (m_frontend)
+ request.setReportRawHeaders(true);
if (!redirectResponse.isNull()) {
// Redirect may have empty URL and we'd like to not crash with invalid HashMap entry.
diff --git a/WebCore/inspector/InspectorResource.cpp b/WebCore/inspector/InspectorResource.cpp
index ac2c9a0..066cff4 100644
--- a/WebCore/inspector/InspectorResource.cpp
+++ b/WebCore/inspector/InspectorResource.cpp
@@ -175,7 +175,12 @@ void InspectorResource::updateResponse(const ResourceResponse& response)
if (cachedResource)
m_mimeType = cachedResource->response().mimeType();
}
- m_responseHeaderFields = response.httpHeaderFields();
+ if (ResourceRawHeaders* headers = response.resourceRawHeaders().get()) {
+ m_requestHeaderFields = headers->requestHeaders;
+ m_responseHeaderFields = headers->responseHeaders;
+ m_changes.set(RequestChange);
+ } else
+ m_responseHeaderFields = response.httpHeaderFields();
m_responseStatusCode = response.httpStatusCode();
m_responseStatusText = response.httpStatusText();
m_suggestedFilename = response.suggestedFilename();
diff --git a/WebCore/platform/network/ResourceRawHeaders.h b/WebCore/platform/network/ResourceRawHeaders.h
new file mode 100755
index 0000000..e5f8d99
--- /dev/null
+++ b/WebCore/platform/network/ResourceRawHeaders.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2010 Google, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#ifndef ResourceRawHeaders_h
+#define ResourceRawHeaders_h
+
+#include "HTTPHeaderMap.h"
+
+namespace WebCore {
+
+struct ResourceRawHeaders : RefCounted<ResourceRawHeaders> {
+ HTTPHeaderMap requestHeaders;
+ HTTPHeaderMap responseHeaders;
+};
+
+}
+
+#endif
diff --git a/WebCore/platform/network/ResourceRequestBase.h b/WebCore/platform/network/ResourceRequestBase.h
index a8aa185..33a184e 100644
--- a/WebCore/platform/network/ResourceRequestBase.h
+++ b/WebCore/platform/network/ResourceRequestBase.h
@@ -136,6 +136,10 @@ namespace WebCore {
bool reportLoadTiming() const { return m_reportLoadTiming; }
void setReportLoadTiming(bool reportLoadTiming) { m_reportLoadTiming = reportLoadTiming; }
+ // Whether actual headers being sent/received should be collected and reported for the request.
+ bool reportRawHeaders() const { return m_reportRawHeaders; }
+ void setReportRawHeaders(bool reportRawHeaders) { m_reportRawHeaders = reportRawHeaders; }
+
// What this request is for.
TargetType targetType() const { return m_targetType; }
void setTargetType(TargetType type) { m_targetType = type; }
@@ -149,6 +153,7 @@ namespace WebCore {
, m_platformRequestUpdated(true)
, m_reportUploadProgress(false)
, m_reportLoadTiming(false)
+ , m_reportRawHeaders(false)
, m_targetType(TargetIsSubresource)
{
}
@@ -163,6 +168,7 @@ namespace WebCore {
, m_platformRequestUpdated(false)
, m_reportUploadProgress(false)
, m_reportLoadTiming(false)
+ , m_reportRawHeaders(false)
, m_targetType(TargetIsSubresource)
{
}
@@ -187,6 +193,7 @@ namespace WebCore {
mutable bool m_platformRequestUpdated;
bool m_reportUploadProgress;
bool m_reportLoadTiming;
+ bool m_reportRawHeaders;
TargetType m_targetType;
private:
diff --git a/WebCore/platform/network/ResourceResponseBase.cpp b/WebCore/platform/network/ResourceResponseBase.cpp
index 48984d3..a254168 100644
--- a/WebCore/platform/network/ResourceResponseBase.cpp
+++ b/WebCore/platform/network/ResourceResponseBase.cpp
@@ -520,6 +520,20 @@ void ResourceResponseBase::setResourceLoadTiming(PassRefPtr<ResourceLoadTiming>
m_resourceLoadTiming = resourceLoadTiming;
}
+PassRefPtr<ResourceRawHeaders> ResourceResponseBase::resourceRawHeaders() const
+{
+ lazyInit();
+
+ return m_resourceRawHeaders.get();
+}
+
+void ResourceResponseBase::setResourceRawHeaders(PassRefPtr<ResourceRawHeaders> headers)
+{
+ lazyInit();
+
+ m_resourceRawHeaders = headers;
+}
+
void ResourceResponseBase::lazyInit() const
{
const_cast<ResourceResponse*>(static_cast<const ResourceResponse*>(this))->platformLazyInit();
diff --git a/WebCore/platform/network/ResourceResponseBase.h b/WebCore/platform/network/ResourceResponseBase.h
index df93886..4da13bb 100644
--- a/WebCore/platform/network/ResourceResponseBase.h
+++ b/WebCore/platform/network/ResourceResponseBase.h
@@ -30,6 +30,7 @@
#include "HTTPHeaderMap.h"
#include "KURL.h"
#include "ResourceLoadTiming.h"
+#include "ResourceRawHeaders.h"
#include <wtf/PassOwnPtr.h>
#include <wtf/RefPtr.h>
@@ -109,6 +110,9 @@ public:
ResourceLoadTiming* resourceLoadTiming() const;
void setResourceLoadTiming(PassRefPtr<ResourceLoadTiming>);
+ PassRefPtr<ResourceRawHeaders> resourceRawHeaders() const;
+ void setResourceRawHeaders(PassRefPtr<ResourceRawHeaders>);
+
// The ResourceResponse subclass may "shadow" this method to provide platform-specific memory usage information
unsigned memoryUsage() const
{
@@ -143,6 +147,7 @@ protected:
unsigned m_connectionID;
bool m_connectionReused : 1;
RefPtr<ResourceLoadTiming> m_resourceLoadTiming;
+ RefPtr<ResourceRawHeaders> m_resourceRawHeaders;
bool m_isNull : 1;
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 3badffa..ec46cd4 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,32 @@
+2010-09-29 Andrey Kosyakov <caseq at chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: display headers actually used by network stack in Resources tab
+ Added plumbing for raw headers flag and response field between chromium and WebCore.
+ https://bugs.webkit.org/show_bug.cgi?id=46092
+
+ * WebKit.gyp:
+ * public/WebResourceRawHeaders.h: Added.
+ * public/WebURLRequest.h:
+ * public/WebURLResponse.h:
+ * src/WebDevToolsAgentImpl.cpp:
+ (WebKit::WebDevToolsAgentImpl::willSendRequest):
+ * src/WebResourceRawHeaders.cpp: Added.
+ (WebKit::WebResourceRawHeaders::WebResourceRawHeaders):
+ (WebKit::WebResourceRawHeaders::~WebResourceRawHeaders):
+ (WebKit::WebResourceRawHeaders::operator WTF::PassRefPtr<WebCore::ResourceRawHeaders>):
+ (WebKit::addHeader):
+ (WebKit::WebResourceRawHeaders::addRequestHeader):
+ (WebKit::WebResourceRawHeaders::addResponseHeader):
+ * src/WebURLRequest.cpp:
+ (WebKit::WebURLRequest::setReportRawHeaders):
+ (WebKit::WebURLRequest::reportRawHeaders):
+ * src/WebURLResponse.cpp:
+ (WebKit::WebURLResponse::resourceRawHeaders):
+ (WebKit::WebURLResponse::setResourceRawHeaders):
+ * src/WebURLResponsePrivate.h:
+
2010-09-30 Avi Drissman <avi at google.com>
Reviewed by Kenneth Russell.
diff --git a/WebKit/chromium/WebKit.gyp b/WebKit/chromium/WebKit.gyp
index 7fac350..6b5108f 100644
--- a/WebKit/chromium/WebKit.gyp
+++ b/WebKit/chromium/WebKit.gyp
@@ -231,6 +231,7 @@
'public/WebRange.h',
'public/WebRect.h',
'public/WebRegularExpression.h',
+ 'public/WebResourceRawHeaders.h',
'public/WebRuntimeFeatures.h',
'public/WebScrollbar.h',
'public/WebScrollbarClient.h',
@@ -495,6 +496,7 @@
'src/WebPopupMenuImpl.h',
'src/WebRange.cpp',
'src/WebRegularExpression.cpp',
+ 'src/WebResourceRawHeaders.cpp',
'src/WebRuntimeFeatures.cpp',
'src/WebScriptController.cpp',
'src/WebScrollbarImpl.cpp',
diff --git a/WebKit/chromium/public/WebResourceRawHeaders.h b/WebKit/chromium/public/WebResourceRawHeaders.h
new file mode 100644
index 0000000..90cc815
--- /dev/null
+++ b/WebKit/chromium/public/WebResourceRawHeaders.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebResourceRawHeaders_h
+#define WebResourceRawHeaders_h
+
+#include "WebCommon.h"
+#include "WebPrivatePtr.h"
+
+namespace WebCore {
+struct ResourceRawHeaders;
+}
+
+namespace WebKit {
+class WebHTTPHeaderVisitor;
+class WebResourceRawHeadersMapPrivate;
+class WebString;
+
+class WebResourceRawHeaders {
+public:
+ WebResourceRawHeaders();
+ ~WebResourceRawHeaders();
+
+ void addRequestHeader(const WebString& name, const WebString& value);
+ void addResponseHeader(const WebString& name, const WebString& value);
+
+#if WEBKIT_IMPLEMENTATION
+ WebResourceRawHeaders(WTF::PassRefPtr<WebCore::ResourceRawHeaders>);
+ operator WTF::PassRefPtr<WebCore::ResourceRawHeaders>() const;
+#endif
+
+private:
+ WebPrivatePtr<WebCore::ResourceRawHeaders> m_private;
+};
+
+} // namespace WebKit
+
+#endif
diff --git a/WebKit/chromium/public/WebURLRequest.h b/WebKit/chromium/public/WebURLRequest.h
index 36d6791..e64ce80 100644
--- a/WebKit/chromium/public/WebURLRequest.h
+++ b/WebKit/chromium/public/WebURLRequest.h
@@ -134,6 +134,11 @@ public:
WEBKIT_API bool reportLoadTiming() const;
WEBKIT_API void setReportLoadTiming(bool);
+ // Controls whether actual headers sent and received for request are
+ // collected and reported.
+ WEBKIT_API bool reportRawHeaders() const;
+ WEBKIT_API void setReportRawHeaders(bool);
+
WEBKIT_API TargetType targetType() const;
WEBKIT_API void setTargetType(TargetType);
diff --git a/WebKit/chromium/public/WebURLResponse.h b/WebKit/chromium/public/WebURLResponse.h
index ac75d4c..f78c2db 100644
--- a/WebKit/chromium/public/WebURLResponse.h
+++ b/WebKit/chromium/public/WebURLResponse.h
@@ -32,6 +32,7 @@
#define WebURLResponse_h
#include "WebCommon.h"
+#include "WebPrivateOwnPtr.h"
#if defined(WEBKIT_IMPLEMENTATION)
namespace WebCore { class ResourceResponse; }
@@ -41,6 +42,7 @@ namespace WebKit {
class WebCString;
class WebHTTPHeaderVisitor;
+class WebResourceRawHeaders;
class WebString;
class WebURL;
class WebURLLoadTiming;
@@ -82,6 +84,9 @@ public:
WEBKIT_API WebURLLoadTiming loadTiming();
WEBKIT_API void setLoadTiming(const WebURLLoadTiming&);
+ WEBKIT_API WebResourceRawHeaders resourceRawHeaders();
+ WEBKIT_API void setResourceRawHeaders(const WebResourceRawHeaders&);
+
WEBKIT_API double responseTime() const;
WEBKIT_API void setResponseTime(double);
diff --git a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
index c7bb050..33cc09b 100644
--- a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
+++ b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
@@ -317,8 +317,11 @@ void WebDevToolsAgentImpl::identifierForInitialRequest(
void WebDevToolsAgentImpl::willSendRequest(unsigned long resourceId, WebURLRequest& request)
{
- if (InspectorController* ic = inspectorController())
+ if (InspectorController* ic = inspectorController()) {
ic->willSendRequest(resourceId, request.toMutableResourceRequest(), ResourceResponse());
+ if (ic->hasFrontend() && request.reportLoadTiming())
+ request.setReportRawHeaders(true);
+ }
}
void WebDevToolsAgentImpl::didReceiveData(unsigned long resourceId, int length)
diff --git a/WebKit/chromium/src/WebResourceRawHeaders.cpp b/WebKit/chromium/src/WebResourceRawHeaders.cpp
new file mode 100644
index 0000000..3a5ee95
--- /dev/null
+++ b/WebKit/chromium/src/WebResourceRawHeaders.cpp
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WebResourceRawHeaders.h"
+
+#include "ResourceRawHeaders.h"
+#include "ResourceResponse.h"
+#include "WebHTTPHeaderVisitor.h"
+#include "WebString.h"
+
+using namespace WebCore;
+
+namespace WebKit {
+
+WebResourceRawHeaders::WebResourceRawHeaders()
+{
+ m_private = adoptRef(new ResourceRawHeaders());
+}
+
+WebResourceRawHeaders::~WebResourceRawHeaders()
+{
+ m_private.reset();
+}
+
+WebResourceRawHeaders::WebResourceRawHeaders(WTF::PassRefPtr<WebCore::ResourceRawHeaders> value)
+{
+ m_private = value;
+}
+
+WebResourceRawHeaders::operator WTF::PassRefPtr<WebCore::ResourceRawHeaders>() const
+{
+ return m_private.get();
+}
+
+static void addHeader(HTTPHeaderMap* map, const WebString& name, const WebString& value)
+{
+ pair<HTTPHeaderMap::iterator, bool> result = map->add(name, value);
+ if (!result.second)
+ result.first->second += String(", ") + value;
+}
+
+void WebResourceRawHeaders::addRequestHeader(const WebString& name, const WebString& value)
+{
+ ASSERT(!m_private.isNull());
+ addHeader(&m_private->requestHeaders, name, value);
+}
+
+void WebResourceRawHeaders::addResponseHeader(const WebString& name, const WebString& value)
+{
+ ASSERT(!m_private.isNull());
+ addHeader(&m_private->responseHeaders, name, value);
+}
+
+} // namespace WebKit
diff --git a/WebKit/chromium/src/WebURLRequest.cpp b/WebKit/chromium/src/WebURLRequest.cpp
index 2950076..b243420 100644
--- a/WebKit/chromium/src/WebURLRequest.cpp
+++ b/WebKit/chromium/src/WebURLRequest.cpp
@@ -201,6 +201,16 @@ bool WebURLRequest::reportLoadTiming() const
return m_private->m_resourceRequest->reportLoadTiming();
}
+void WebURLRequest::setReportRawHeaders(bool reportRawHeaders)
+{
+ m_private->m_resourceRequest->setReportRawHeaders(reportRawHeaders);
+}
+
+bool WebURLRequest::reportRawHeaders() const
+{
+ return m_private->m_resourceRequest->reportRawHeaders();
+}
+
void WebURLRequest::setReportLoadTiming(bool reportLoadTiming)
{
m_private->m_resourceRequest->setReportLoadTiming(reportLoadTiming);
diff --git a/WebKit/chromium/src/WebURLResponse.cpp b/WebKit/chromium/src/WebURLResponse.cpp
index aae413c..5343921 100644
--- a/WebKit/chromium/src/WebURLResponse.cpp
+++ b/WebKit/chromium/src/WebURLResponse.cpp
@@ -129,6 +129,16 @@ void WebURLResponse::setLoadTiming(const WebURLLoadTiming& timing)
m_private->m_resourceResponse->setResourceLoadTiming(loadTiming.release());
}
+WebResourceRawHeaders WebURLResponse::resourceRawHeaders()
+{
+ return WebResourceRawHeaders(m_private->m_resourceResponse->resourceRawHeaders());
+}
+
+void WebURLResponse::setResourceRawHeaders(const WebResourceRawHeaders& value)
+{
+ m_private->m_resourceResponse->setResourceRawHeaders(value);
+}
+
double WebURLResponse::responseTime() const
{
return m_private->m_resourceResponse->responseTime();
diff --git a/WebKit/chromium/src/WebURLResponsePrivate.h b/WebKit/chromium/src/WebURLResponsePrivate.h
index dc5ce22..4181e4c 100644
--- a/WebKit/chromium/src/WebURLResponsePrivate.h
+++ b/WebKit/chromium/src/WebURLResponsePrivate.h
@@ -31,6 +31,7 @@
#ifndef WebURLResponsePrivate_h
#define WebURLResponsePrivate_h
+#include "WebResourceRawHeaders.h"
#include "WebString.h"
namespace WebCore { class ResourceResponse; }
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list