Title: [233863] trunk/Source
Revision
233863
Author
[email protected]
Date
2018-07-16 13:23:52 -0700 (Mon, 16 Jul 2018)

Log Message

Reduce size of NetworkLoadMetrics and therefore ResourceResponse
https://bugs.webkit.org/show_bug.cgi?id=187671

Patch by Alex Christensen <[email protected]> on 2018-07-16
Reviewed by Darin Adler.

Source/WebCore:

* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::toProtocol):
(WebCore::InspectorNetworkAgent::buildObjectForMetrics):
* platform/network/NetworkLoadMetrics.h:
(WebCore::NetworkLoadMetrics::isolatedCopy const):
(WebCore::NetworkLoadMetrics::reset):
(WebCore::NetworkLoadMetrics::clearNonTimingData):

Source/WebKit:

* Shared/WebCoreArgumentCoders.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (233862 => 233863)


--- trunk/Source/WebCore/ChangeLog	2018-07-16 20:10:06 UTC (rev 233862)
+++ trunk/Source/WebCore/ChangeLog	2018-07-16 20:23:52 UTC (rev 233863)
@@ -1,3 +1,18 @@
+2018-07-16  Alex Christensen  <[email protected]>
+
+        Reduce size of NetworkLoadMetrics and therefore ResourceResponse
+        https://bugs.webkit.org/show_bug.cgi?id=187671
+
+        Reviewed by Darin Adler.
+
+        * inspector/agents/InspectorNetworkAgent.cpp:
+        (WebCore::toProtocol):
+        (WebCore::InspectorNetworkAgent::buildObjectForMetrics):
+        * platform/network/NetworkLoadMetrics.h:
+        (WebCore::NetworkLoadMetrics::isolatedCopy const):
+        (WebCore::NetworkLoadMetrics::reset):
+        (WebCore::NetworkLoadMetrics::clearNonTimingData):
+
 2018-07-16  Chris Dumez  <[email protected]>
 
         Make sure LibWebRTCMediaEndpoint is always destroyed on the main thread

Modified: trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp (233862 => 233863)


--- trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp	2018-07-16 20:10:06 UTC (rev 233862)
+++ trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp	2018-07-16 20:23:52 UTC (rev 233863)
@@ -220,6 +220,8 @@
         return Inspector::Protocol::Network::Metrics::Priority::Medium;
     case NetworkLoadPriority::High:
         return Inspector::Protocol::Network::Metrics::Priority::High;
+    case NetworkLoadPriority::Unknown:
+        break;
     }
 
     ASSERT_NOT_REACHED();
@@ -232,25 +234,25 @@
 
     if (!networkLoadMetrics.protocol.isNull())
         metrics->setProtocol(networkLoadMetrics.protocol);
-    if (networkLoadMetrics.priority)
-        metrics->setPriority(toProtocol(*networkLoadMetrics.priority));
-    if (networkLoadMetrics.remoteAddress)
-        metrics->setRemoteAddress(*networkLoadMetrics.remoteAddress);
-    if (networkLoadMetrics.connectionIdentifier)
-        metrics->setConnectionIdentifier(*networkLoadMetrics.connectionIdentifier);
-    if (networkLoadMetrics.requestHeaders)
-        metrics->setRequestHeaders(buildObjectForHeaders(*networkLoadMetrics.requestHeaders));
+    if (networkLoadMetrics.priority != NetworkLoadPriority::Unknown)
+        metrics->setPriority(toProtocol(networkLoadMetrics.priority));
+    if (!networkLoadMetrics.remoteAddress.isNull())
+        metrics->setRemoteAddress(networkLoadMetrics.remoteAddress);
+    if (!networkLoadMetrics.connectionIdentifier.isNull())
+        metrics->setConnectionIdentifier(networkLoadMetrics.connectionIdentifier);
+    if (!networkLoadMetrics.requestHeaders.isEmpty())
+        metrics->setRequestHeaders(buildObjectForHeaders(networkLoadMetrics.requestHeaders));
 
-    if (networkLoadMetrics.requestHeaderBytesSent)
-        metrics->setRequestHeaderBytesSent(*networkLoadMetrics.requestHeaderBytesSent);
-    if (networkLoadMetrics.requestBodyBytesSent)
-        metrics->setRequestBodyBytesSent(*networkLoadMetrics.requestBodyBytesSent);
-    if (networkLoadMetrics.responseHeaderBytesReceived)
-        metrics->setResponseHeaderBytesReceived(*networkLoadMetrics.responseHeaderBytesReceived);
-    if (networkLoadMetrics.responseBodyBytesReceived)
-        metrics->setResponseBodyBytesReceived(*networkLoadMetrics.responseBodyBytesReceived);
-    if (networkLoadMetrics.responseBodyDecodedSize)
-        metrics->setResponseBodyDecodedSize(*networkLoadMetrics.responseBodyDecodedSize);
+    if (networkLoadMetrics.requestHeaderBytesSent != std::numeric_limits<uint32_t>::max())
+        metrics->setRequestHeaderBytesSent(networkLoadMetrics.requestHeaderBytesSent);
+    if (networkLoadMetrics.requestBodyBytesSent != std::numeric_limits<uint64_t>::max())
+        metrics->setRequestBodyBytesSent(networkLoadMetrics.requestBodyBytesSent);
+    if (networkLoadMetrics.responseHeaderBytesReceived != std::numeric_limits<uint32_t>::max())
+        metrics->setResponseHeaderBytesReceived(networkLoadMetrics.responseHeaderBytesReceived);
+    if (networkLoadMetrics.responseBodyBytesReceived != std::numeric_limits<uint64_t>::max())
+        metrics->setResponseBodyBytesReceived(networkLoadMetrics.responseBodyBytesReceived);
+    if (networkLoadMetrics.responseBodyDecodedSize != std::numeric_limits<uint64_t>::max())
+        metrics->setResponseBodyDecodedSize(networkLoadMetrics.responseBodyDecodedSize);
 
     return metrics;
 }

Modified: trunk/Source/WebCore/platform/network/NetworkLoadMetrics.h (233862 => 233863)


--- trunk/Source/WebCore/platform/network/NetworkLoadMetrics.h	2018-07-16 20:10:06 UTC (rev 233862)
+++ trunk/Source/WebCore/platform/network/NetworkLoadMetrics.h	2018-07-16 20:23:52 UTC (rev 233863)
@@ -43,6 +43,7 @@
     Low,
     Medium,
     High,
+    Unknown,
 };
 
 class NetworkLoadMetrics {
@@ -67,14 +68,10 @@
         copy.complete = complete;
         copy.protocol = protocol.isolatedCopy();
 
-        if (remoteAddress)
-            copy.remoteAddress = remoteAddress.value().isolatedCopy();
-        if (connectionIdentifier)
-            copy.connectionIdentifier = connectionIdentifier.value().isolatedCopy();
-        if (priority)
-            copy.priority = *priority;
-        if (requestHeaders)
-            copy.requestHeaders = requestHeaders.value().isolatedCopy();
+        copy.remoteAddress = remoteAddress.isolatedCopy();
+        copy.connectionIdentifier = connectionIdentifier.isolatedCopy();
+        copy.priority = priority;
+        copy.requestHeaders = requestHeaders.isolatedCopy();
 
         copy.requestHeaderBytesSent = requestHeaderBytesSent;
         copy.requestBodyBytesSent = requestBodyBytesSent;
@@ -97,28 +94,20 @@
         responseEnd = Seconds(0);
         complete = false;
         protocol = String();
-        remoteAddress = std::nullopt;
-        connectionIdentifier = std::nullopt;
-        priority = std::nullopt;
-        requestHeaders = std::nullopt;
-        requestHeaderBytesSent = std::nullopt;
-        requestBodyBytesSent = std::nullopt;
-        responseHeaderBytesReceived = std::nullopt;
-        responseBodyBytesReceived = std::nullopt;
-        responseBodyDecodedSize = std::nullopt;
+        clearNonTimingData();
     }
 
     void clearNonTimingData()
     {
-        remoteAddress = std::nullopt;
-        connectionIdentifier = std::nullopt;
-        priority = std::nullopt;
-        requestHeaders = std::nullopt;
-        requestHeaderBytesSent = std::nullopt;
-        requestBodyBytesSent = std::nullopt;
-        responseHeaderBytesReceived = std::nullopt;
-        responseBodyBytesReceived = std::nullopt;
-        responseBodyDecodedSize = std::nullopt;
+        remoteAddress = String();
+        connectionIdentifier = String();
+        priority = NetworkLoadPriority::Unknown;
+        requestHeaders.clear();
+        requestHeaderBytesSent = std::numeric_limits<uint32_t>::max();
+        requestBodyBytesSent = std::numeric_limits<uint64_t>::max();
+        responseHeaderBytesReceived = std::numeric_limits<uint32_t>::max();
+        responseBodyBytesReceived = std::numeric_limits<uint64_t>::max();
+        responseBodyDecodedSize = std::numeric_limits<uint64_t>::max();
     }
 
     bool operator==(const NetworkLoadMetrics& other) const
@@ -169,20 +158,20 @@
     // ALPN Protocol ID: https://w3c.github.io/resource-timing/#bib-RFC7301
     String protocol;
 
-    std::optional<String> remoteAddress;
-    std::optional<String> connectionIdentifier;
-    std::optional<NetworkLoadPriority> priority;
+    String remoteAddress;
+    String connectionIdentifier;
+    NetworkLoadPriority priority;
 
     // Whether or not all of the properties (0 or otherwise) have been set.
     bool complete { false };
 
-    std::optional<HTTPHeaderMap> requestHeaders;
+    HTTPHeaderMap requestHeaders;
 
-    std::optional<uint64_t> requestHeaderBytesSent;
-    std::optional<uint64_t> requestBodyBytesSent;
-    std::optional<uint64_t> responseHeaderBytesReceived;
-    std::optional<uint64_t> responseBodyBytesReceived;
-    std::optional<uint64_t> responseBodyDecodedSize;
+    uint32_t requestHeaderBytesSent;
+    uint32_t responseHeaderBytesReceived;
+    uint64_t requestBodyBytesSent;
+    uint64_t responseBodyBytesReceived;
+    uint64_t responseBodyDecodedSize;
 };
 
 #if PLATFORM(COCOA)

Modified: trunk/Source/WebKit/ChangeLog (233862 => 233863)


--- trunk/Source/WebKit/ChangeLog	2018-07-16 20:10:06 UTC (rev 233862)
+++ trunk/Source/WebKit/ChangeLog	2018-07-16 20:23:52 UTC (rev 233863)
@@ -1,3 +1,12 @@
+2018-07-16  Alex Christensen  <[email protected]>
+
+        Reduce size of NetworkLoadMetrics and therefore ResourceResponse
+        https://bugs.webkit.org/show_bug.cgi?id=187671
+
+        Reviewed by Darin Adler.
+
+        * Shared/WebCoreArgumentCoders.h:
+
 2018-07-16  Sihui Liu  <[email protected]>
 
         IndexedDB: closeAndDeleteDatabasesForOrigins should remove all databases for those origins

Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp (233862 => 233863)


--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp	2018-07-16 20:10:06 UTC (rev 233862)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp	2018-07-16 20:23:52 UTC (rev 233863)
@@ -31,6 +31,7 @@
 #include "NetworkCacheIOChannel.h"
 #include "NetworkCacheKey.h"
 #include "NetworkProcess.h"
+#include "WebCoreArgumentCoders.h"
 #include <WebCore/CacheQueryOptions.h>
 #include <WebCore/HTTPParsers.h>
 #include <pal/SessionID.h>

Modified: trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp (233862 => 233863)


--- trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp	2018-07-16 20:10:06 UTC (rev 233862)
+++ trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp	2018-07-16 20:23:52 UTC (rev 233863)
@@ -29,6 +29,7 @@
 #include "Logging.h"
 #include "NetworkCacheCoders.h"
 #include "NetworkProcess.h"
+#include "WebCoreArgumentCoders.h"
 #include <WebCore/ResourceRequest.h>
 #include <WebCore/SharedBuffer.h>
 #include <wtf/text/StringBuilder.h>

Modified: trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h (233862 => 233863)


--- trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h	2018-07-16 20:10:06 UTC (rev 233862)
+++ trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h	2018-07-16 20:23:52 UTC (rev 233863)
@@ -749,7 +749,8 @@
         WebCore::NetworkLoadPriority,
         WebCore::NetworkLoadPriority::Low,
         WebCore::NetworkLoadPriority::Medium,
-        WebCore::NetworkLoadPriority::High
+        WebCore::NetworkLoadPriority::High,
+        WebCore::NetworkLoadPriority::Unknown
     >;
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to