[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