Title: [294268] trunk/Source/WebKit
Revision
294268
Author
yu...@chromium.org
Date
2022-05-16 15:25:50 -0700 (Mon, 16 May 2022)

Log Message

[SOUP2] Compute number of header bytes whe using soup 2
https://bugs.webkit.org/show_bug.cgi?id=240200

Reviewed by Michael Catanzaro.

SOUP 2 lacks methods that allow to get computed head sizes (only present in v3),
calculate the sizes manually when libsoup 2 is used.

No new tests, covered by LayoutTests/http/tests/inspector/network/resource-sizes-network.html
when compiled with SOUP 2.

* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::addHeaderSizes):
(WebKit::NetworkDataTaskSoup::didGetHeaders):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (294267 => 294268)


--- trunk/Source/WebKit/ChangeLog	2022-05-16 22:25:02 UTC (rev 294267)
+++ trunk/Source/WebKit/ChangeLog	2022-05-16 22:25:50 UTC (rev 294268)
@@ -1,3 +1,20 @@
+2022-05-16  Yury Semikhatsky  <yu...@chromium.org>
+
+        [SOUP2] Compute number of header bytes whe using soup 2
+        https://bugs.webkit.org/show_bug.cgi?id=240200
+
+        Reviewed by Michael Catanzaro.
+
+        SOUP 2 lacks methods that allow to get computed head sizes (only present in v3),
+        calculate the sizes manually when libsoup 2 is used.
+
+        No new tests, covered by LayoutTests/http/tests/inspector/network/resource-sizes-network.html
+        when compiled with SOUP 2.
+
+        * NetworkProcess/soup/NetworkDataTaskSoup.cpp:
+        (WebKit::addHeaderSizes):
+        (WebKit::NetworkDataTaskSoup::didGetHeaders):
+
 2022-05-16  Brent Fulgham  <bfulg...@apple.com>
 
         Remove abandoned UseScreenCaptureKit preference

Modified: trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp (294267 => 294268)


--- trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp	2022-05-16 22:25:02 UTC (rev 294267)
+++ trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp	2022-05-16 22:25:50 UTC (rev 294268)
@@ -1218,6 +1218,15 @@
     return *m_networkLoadMetrics.additionalNetworkLoadMetricsForWebInspector;
 }
 
+#if USE(SOUP2)
+static void addHeaderSizes(const char *name, const char *value, gpointer pointer)
+{
+    uint64_t* size = static_cast<uint64_t*>(pointer);
+    // Each header is formatted as "<name>: <value>\r\n"
+    *size += strlen(name) + strlen(value) + 4;
+}
+#endif
+
 void NetworkDataTaskSoup::didGetHeaders()
 {
     // We are a bit more conservative with the persistent credential storage than the session store,
@@ -1263,6 +1272,20 @@
         additionalMetrics.tlsProtocol = tlsProtocolVersionToString(soup_message_get_tls_protocol_version(m_soupMessage.get()));
         additionalMetrics.tlsCipher = String::fromUTF8(soup_message_get_tls_ciphersuite_name(m_soupMessage.get()));
         additionalMetrics.responseHeaderBytesReceived = soup_message_metrics_get_response_header_bytes_received(metrics);
+#else
+        {
+            auto* requestHeaders = soup_message_get_request_headers(m_soupMessage.get());
+            uint64_t requestHeadersSize = 0;
+            soup_message_headers_foreach(requestHeaders, addHeaderSizes, &requestHeadersSize);
+            additionalMetrics.requestHeaderBytesSent = requestHeadersSize;
+        }
+
+        {
+            auto* responseHeaders = soup_message_get_response_headers(m_soupMessage.get());
+            uint64_t responseHeadersSize = 0;
+            soup_message_headers_foreach(responseHeaders, addHeaderSizes, &responseHeadersSize);
+            additionalMetrics.responseHeaderBytesReceived = responseHeadersSize;
+        }
 #endif
     }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to