WebKit Bugzilla
Attachment 371380 Details for
Bug 191653
: [Curl] Report all request headers to web inspector.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-191653-20190605165745.patch (text/plain), 10.11 KB, created by
Takashi Komori
on 2019-06-05 01:00:09 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Takashi Komori
Created:
2019-06-05 01:00:09 PDT
Size:
10.11 KB
patch
obsolete
>Subversion Revision: 246085 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 18993dac63b7508e5c7a6617aea74d84b26b8953..e204337ea87e0422d94d79ae84531ffbd778d3e4 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,22 @@ >+2019-06-05 Takashi Komori <Takashi.Komori@sony.com> >+ >+ [Curl] Report all request headers to web inspector. >+ https://bugs.webkit.org/show_bug.cgi?id=191653 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ LayoutTests/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-04 Antti Koivisto <antti@apple.com> > > Sticky positioning is jumpy in many overflow cases >diff --git a/Source/WebCore/platform/network/curl/CurlContext.cpp b/Source/WebCore/platform/network/curl/CurlContext.cpp >index 827a2c3acccd3dc4beb0a8a760a453143e988bf8..7d17217c2e442ac6f3de8c4b60a9526c9f65842a 100644 >--- a/Source/WebCore/platform/network/curl/CurlContext.cpp >+++ b/Source/WebCore/platform/network/curl/CurlContext.cpp >@@ -638,6 +638,13 @@ void CurlHandle::setSslCtxCallbackFunction(curl_ssl_ctx_callback callbackFunc, v > 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); >diff --git a/Source/WebCore/platform/network/curl/CurlContext.h b/Source/WebCore/platform/network/curl/CurlContext.h >index 80b89158f39a43cacb5768de929c7cc7e12cd350..7d06068cd9d1aebee42d38594abd094b90114444 100644 >--- a/Source/WebCore/platform/network/curl/CurlContext.h >+++ b/Source/WebCore/platform/network/curl/CurlContext.h >@@ -273,6 +273,7 @@ public: > 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(); >diff --git a/Source/WebCore/platform/network/curl/CurlRequest.cpp b/Source/WebCore/platform/network/curl/CurlRequest.cpp >index 17dcfd7bbcff5ea5780cd15cbdf7ca64bd40c007..be8730a4da6398f321ee68e81e11398d37f56ca2 100644 >--- a/Source/WebCore/platform/network/curl/CurlRequest.cpp >+++ b/Source/WebCore/platform/network/curl/CurlRequest.cpp >@@ -234,6 +234,9 @@ CURL* CurlRequest::setupTransfer() > 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 @@ void CurlRequest::finalizeTransfer() > 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 @@ void CurlRequest::updateNetworkLoadMetrics() > > 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 @@ size_t CurlRequest::didReceiveDataCallback(char* ptr, size_t blockSize, size_t n > 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 >diff --git a/Source/WebCore/platform/network/curl/CurlRequest.h b/Source/WebCore/platform/network/curl/CurlRequest.h >index 91d4dc9b057656d86426a1f4d9df40790129d697..9d0e2ded4ff8dd6a66077a875c6a618e5810ea1f 100644 >--- a/Source/WebCore/platform/network/curl/CurlRequest.h >+++ b/Source/WebCore/platform/network/curl/CurlRequest.h >@@ -134,6 +134,8 @@ private: > void finalizeTransfer(); > void invokeCancel(); > >+ int didReceiveDebugInfo(curl_infotype, char*, size_t); >+ > // For setup > void appendAcceptLanguageHeader(HTTPHeaderMap&); > void setupPOST(ResourceRequest&); >@@ -163,6 +165,7 @@ private: > 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 @@ private: > 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 }; >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index ddf3dddac387fba9adb3046a77679627d008985f..e1b11142854e798003a22b994d7f09d1b8e8df81 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,13 @@ >+2019-06-05 Takashi Komori <Takashi.Komori@sony.com> >+ >+ [Curl] Report all request headers to web inspector. >+ https://bugs.webkit.org/show_bug.cgi?id=191653 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * platform/wincairo/TestExpectations: >+ * platform/wincairo/http/tests/inspector/network/resource-request-headers-expected.txt: Added. >+ > 2019-06-04 Antti Koivisto <antti@apple.com> > > Sticky positioning is jumpy in many overflow cases >diff --git a/LayoutTests/platform/wincairo/TestExpectations b/LayoutTests/platform/wincairo/TestExpectations >index 8a9cd8a7a8f2fc1b017cdad7be15bd13860302c6..8fb7c0a969c9e9b18fa2dc988ea8e7be52743518 100644 >--- a/LayoutTests/platform/wincairo/TestExpectations >+++ b/LayoutTests/platform/wincairo/TestExpectations >@@ -891,7 +891,10 @@ http/tests/globalhistory/history-delegate-basic-visited-links.html [ Pass Failur > 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 ] >diff --git a/LayoutTests/platform/wincairo/http/tests/inspector/network/resource-request-headers-expected.txt b/LayoutTests/platform/wincairo/http/tests/inspector/network/resource-request-headers-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..313402493c5334fd16aebdf8d7195f0e1e717235 >--- /dev/null >+++ b/LayoutTests/platform/wincairo/http/tests/inspector/network/resource-request-headers-expected.txt >@@ -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. >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 191653
:
371380
|
371462