Diff
Modified: trunk/LayoutTests/ChangeLog (246142 => 246143)
--- trunk/LayoutTests/ChangeLog 2019-06-06 03:39:08 UTC (rev 246142)
+++ trunk/LayoutTests/ChangeLog 2019-06-06 03:55:13 UTC (rev 246143)
@@ -1,3 +1,13 @@
+2019-06-05 Takashi Komori <[email protected]>
+
+ [Curl] Report all request headers to web inspector.
+ https://bugs.webkit.org/show_bug.cgi?id=191653
+
+ Reviewed by Fujii Hironori.
+
+ * platform/wincairo/TestExpectations:
+ * platform/wincairo/http/tests/inspector/network/resource-request-headers-expected.txt: Added.
+
2019-06-05 Myles C. Maxfield <[email protected]>
[WHLSL] Educate the property resolver about IndexExpressions
Modified: trunk/LayoutTests/platform/wincairo/TestExpectations (246142 => 246143)
--- trunk/LayoutTests/platform/wincairo/TestExpectations 2019-06-06 03:39:08 UTC (rev 246142)
+++ trunk/LayoutTests/platform/wincairo/TestExpectations 2019-06-06 03:55:13 UTC (rev 246143)
@@ -891,7 +891,10 @@
http/tests/history [ Skip ]
http/tests/images [ Skip ]
http/tests/incremental [ Skip ]
+
http/tests/inspector [ Skip ]
+http/tests/inspector/network/resource-request-headers.html [ Pass ]
+
http/tests/loading [ Skip ]
http/tests/local/blob [ Skip ]
http/tests/local/fileapi [ Skip ]
Added: trunk/LayoutTests/platform/wincairo/http/tests/inspector/network/resource-request-headers-expected.txt (0 => 246143)
--- trunk/LayoutTests/platform/wincairo/http/tests/inspector/network/resource-request-headers-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/wincairo/http/tests/inspector/network/resource-request-headers-expected.txt 2019-06-06 03:55:13 UTC (rev 246143)
@@ -0,0 +1,36 @@
+127.0.0.1:8000 - didReceiveAuthenticationChallenge - ProtectionSpaceAuthenticationSchemeHTTPBasic - Simulating cancelled authentication sheet
+127.0.0.1:8000 - didReceiveAuthenticationChallenge - ProtectionSpaceAuthenticationSchemeHTTPBasic - Simulating cancelled authentication sheet
+Test for Resource request headers which may not have been immediately available but eventually are (Cookie, Authorization).
+
+
+== Running test suite: Resource.Metrics.RequestHeaders
+-- Running test case: Resource.Metrics.RequestHeaders.WithoutCookie
+PASS: Resource should be created.
+PASS: Resource should receive a Response.
+PASS: Request should not have a 'Cookie' header.
+
+-- Running test case: Resource.Metrics.RequestHeaders.WithCookie
+PASS: Resource should be created.
+PASS: Resource should receive a Response.
+PASS: 'Cookie' header value should be `InspectorTestCookie=1234`.
+
+-- Running test case: Resource.Metrics.RequestHeaders.BasicAuth.None
+PASS: Resource should be created.
+PASS: Resource should receive a Response.
+PASS: Resource should have a 401 status code.
+PASS: Response should have a 'WWW-Authenticate' response header for the failure.
+PASS: Request should not have a 'Authorization' header.
+
+-- Running test case: Resource.Metrics.RequestHeaders.BasicAuth.Failure
+PASS: Resource should be created.
+PASS: Resource should receive a Response.
+PASS: Resource should have a 401 status code.
+PASS: Response should have a 'WWW-Authenticate' response header for the failure.
+PASS: 'Authorization' header value should be for badUsername:badPassword.
+
+-- Running test case: Resource.Metrics.RequestHeaders.BasicAuth.Success
+PASS: Resource should be created.
+PASS: Resource should receive a Response.
+PASS: Resource should have a 200 status code.
+PASS: 'Authorization' header value should be for goodUsername:goodPassword.
+
Modified: trunk/Source/WebCore/ChangeLog (246142 => 246143)
--- trunk/Source/WebCore/ChangeLog 2019-06-06 03:39:08 UTC (rev 246142)
+++ trunk/Source/WebCore/ChangeLog 2019-06-06 03:55:13 UTC (rev 246143)
@@ -1,3 +1,22 @@
+2019-06-05 Takashi Komori <[email protected]>
+
+ [Curl] Report all request headers to web inspector.
+ https://bugs.webkit.org/show_bug.cgi?id=191653
+
+ Reviewed by Fujii Hironori.
+
+ Test: http/tests/inspector/network/resource-request-headers.html
+
+ * platform/network/curl/CurlContext.cpp:
+ (WebCore::CurlHandle::setDebugCallbackFunction):
+ * platform/network/curl/CurlContext.h:
+ * platform/network/curl/CurlRequest.cpp:
+ (WebCore::CurlRequest::setupTransfer):
+ (WebCore::CurlRequest::didReceiveDebugInfo):
+ (WebCore::CurlRequest::updateNetworkLoadMetrics):
+ (WebCore::CurlRequest::didReceiveDebugInfoCallback):
+ * platform/network/curl/CurlRequest.h:
+
2019-06-05 Said Abou-Hallawa <[email protected]>
[Cocoa] REGRESSION(r244182): Inspector thinks CA commits can be nested
Modified: trunk/Source/WebCore/platform/network/curl/CurlContext.cpp (246142 => 246143)
--- trunk/Source/WebCore/platform/network/curl/CurlContext.cpp 2019-06-06 03:39:08 UTC (rev 246142)
+++ trunk/Source/WebCore/platform/network/curl/CurlContext.cpp 2019-06-06 03:55:13 UTC (rev 246143)
@@ -638,6 +638,13 @@
curl_easy_setopt(m_handle, CURLOPT_SSL_CTX_FUNCTION, callbackFunc);
}
+void CurlHandle::setDebugCallbackFunction(curl_debug_callback callbackFunc, void* userData)
+{
+ curl_easy_setopt(m_handle, CURLOPT_DEBUGFUNCTION, callbackFunc);
+ curl_easy_setopt(m_handle, CURLOPT_DEBUGDATA, userData);
+ curl_easy_setopt(m_handle, CURLOPT_VERBOSE, 1L);
+}
+
void CurlHandle::enableConnectionOnly()
{
curl_easy_setopt(m_handle, CURLOPT_CONNECT_ONLY, 1L);
Modified: trunk/Source/WebCore/platform/network/curl/CurlContext.h (246142 => 246143)
--- trunk/Source/WebCore/platform/network/curl/CurlContext.h 2019-06-06 03:39:08 UTC (rev 246142)
+++ trunk/Source/WebCore/platform/network/curl/CurlContext.h 2019-06-06 03:55:13 UTC (rev 246143)
@@ -273,6 +273,7 @@
void setWriteCallbackFunction(curl_write_callback, void*);
void setReadCallbackFunction(curl_read_callback, void*);
void setSslCtxCallbackFunction(curl_ssl_ctx_callback, void*);
+ void setDebugCallbackFunction(curl_debug_callback, void*);
// Status
Optional<String> getProxyUrl();
Modified: trunk/Source/WebCore/platform/network/curl/CurlRequest.cpp (246142 => 246143)
--- trunk/Source/WebCore/platform/network/curl/CurlRequest.cpp 2019-06-06 03:39:08 UTC (rev 246142)
+++ trunk/Source/WebCore/platform/network/curl/CurlRequest.cpp 2019-06-06 03:55:13 UTC (rev 246143)
@@ -234,6 +234,9 @@
m_curlHandle->setHeaderCallbackFunction(didReceiveHeaderCallback, this);
m_curlHandle->setWriteCallbackFunction(didReceiveDataCallback, this);
+ if (m_captureExtraMetrics)
+ m_curlHandle->setDebugCallbackFunction(didReceiveDebugInfoCallback, this);
+
m_curlHandle->setTimeout(timeoutInterval());
if (m_shouldSuspend)
@@ -491,6 +494,31 @@
m_curlHandle = nullptr;
}
+int CurlRequest::didReceiveDebugInfo(curl_infotype type, char* data, size_t size)
+{
+ if (!data)
+ return 0;
+
+ if (type == CURLINFO_HEADER_OUT) {
+ String requestHeader(data, size);
+ auto headerFields = requestHeader.split("\r\n");
+ // Remove the request line
+ if (headerFields.size())
+ headerFields.remove(0);
+
+ for (auto& header : headerFields) {
+ auto pos = header.find(":");
+ if (pos != notFound) {
+ auto key = header.left(pos).stripWhiteSpace();
+ auto value = header.substring(pos + 1).stripWhiteSpace();
+ m_requestHeaders.add(key, value);
+ }
+ }
+ }
+
+ return 0;
+}
+
void CurlRequest::appendAcceptLanguageHeader(HTTPHeaderMap& header)
{
for (const auto& language : userPreferredLanguages())
@@ -696,7 +724,7 @@
if (m_captureExtraMetrics) {
m_curlHandle->addExtraNetworkLoadMetrics(m_networkLoadMetrics);
- m_networkLoadMetrics.requestHeaders = m_request.httpHeaderFields();
+ m_networkLoadMetrics.requestHeaders = m_requestHeaders;
m_networkLoadMetrics.responseBodyDecodedSize = m_totalReceivedSize;
}
}
@@ -766,6 +794,11 @@
return static_cast<CurlRequest*>(userData)->didReceiveData(SharedBuffer::create(ptr, blockSize * numberOfBlocks));
}
+int CurlRequest::didReceiveDebugInfoCallback(CURL*, curl_infotype type, char* data, size_t size, void* userData)
+{
+ return static_cast<CurlRequest*>(userData)->didReceiveDebugInfo(type, data, size);
}
+}
+
#endif
Modified: trunk/Source/WebCore/platform/network/curl/CurlRequest.h (246142 => 246143)
--- trunk/Source/WebCore/platform/network/curl/CurlRequest.h 2019-06-06 03:39:08 UTC (rev 246142)
+++ trunk/Source/WebCore/platform/network/curl/CurlRequest.h 2019-06-06 03:55:13 UTC (rev 246143)
@@ -134,6 +134,8 @@
void finalizeTransfer();
void invokeCancel();
+ int didReceiveDebugInfo(curl_infotype, char*, size_t);
+
// For setup
void appendAcceptLanguageHeader(HTTPHeaderMap&);
void setupPOST(ResourceRequest&);
@@ -163,6 +165,7 @@
static size_t willSendDataCallback(char*, size_t, size_t, void*);
static size_t didReceiveHeaderCallback(char*, size_t, size_t, void*);
static size_t didReceiveDataCallback(char*, size_t, size_t, void*);
+ static int didReceiveDebugInfoCallback(CURL*, curl_infotype, char*, size_t, void*);
CurlRequestClient* m_client { };
@@ -211,6 +214,7 @@
CertificateInfo m_certificateInfo;
bool m_captureExtraMetrics;
NetworkLoadMetrics m_networkLoadMetrics;
+ HTTPHeaderMap m_requestHeaders;
MonotonicTime m_requestStartTime { MonotonicTime::nan() };
MonotonicTime m_performStartTime;
size_t m_totalReceivedSize { 0 };