Web Inspector: Only Capture Extra Network Load Metrics when there is a Web Inspector...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Apr 2017 22:58:08 +0000 (22:58 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Apr 2017 22:58:08 +0000 (22:58 +0000)
https://bugs.webkit.org/show_bug.cgi?id=170525

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-06
Reviewed by Youenn Fablet.

Source/WebCore:

Covered by existing tests that when Web Inspector is open we enable collecting the extra data.

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::firstFrontendCreated):
(WebCore::InspectorInstrumentation::lastFrontendDeleted):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::frontendCreated):
(WebCore::InspectorInstrumentation::frontendDeleted):
When the first frontend is created enable a new loader strategy to
collect extra network load metrics. When the last frontend is closed
disable the extra metrics.

* loader/LoaderStrategy.h:
* platform/PlatformStrategies.h:
New load strategy to enable/disable new metrics.

Source/WebKit:

* WebCoreSupport/WebResourceLoadScheduler.h:

Source/WebKit2:

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
Only collect extra metrics if the WebProcess this load is for has enabled
collecting extra metrics.

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::setCaptureExtraNetworkLoadMetricsEnabled):
* WebProcess/Network/WebLoaderStrategy.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled):
* NetworkProcess/NetworkConnectionToWebProcess.h:
(WebKit::NetworkConnectionToWebProcess::captureExtraNetworkLoadMetricsEnabled):
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
New bool state toggled through the loader policy.

* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTaskClient::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/NetworkLoadClient.h:
(WebKit::NetworkLoadClient::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
Default handling for network loads is to not include extra data. Thread
client messages back from the NetworkLoads / SpeculativeLoads to check
the NetworkConnectionToWebProcess state on whether or not we should collect
extra metrics.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@215065 268f45cc-cd09-0410-ab3c-d52691b4dbfc

23 files changed:
Source/WebCore/ChangeLog
Source/WebCore/inspector/InspectorInstrumentation.cpp
Source/WebCore/inspector/InspectorInstrumentation.h
Source/WebCore/loader/LoaderStrategy.h
Source/WebCore/platform/PlatformStrategies.h
Source/WebKit/ChangeLog
Source/WebKit/WebCoreSupport/WebResourceLoadScheduler.h
Source/WebKit2/ChangeLog
Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp
Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.h
Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.messages.in
Source/WebKit2/NetworkProcess/NetworkDataTask.cpp
Source/WebKit2/NetworkProcess/NetworkDataTask.h
Source/WebKit2/NetworkProcess/NetworkLoad.cpp
Source/WebKit2/NetworkProcess/NetworkLoad.h
Source/WebKit2/NetworkProcess/NetworkLoadClient.h
Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp
Source/WebKit2/NetworkProcess/NetworkResourceLoader.h
Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp
Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.h
Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm
Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp
Source/WebKit2/WebProcess/Network/WebLoaderStrategy.h

index dec0079..36df114 100644 (file)
@@ -1,5 +1,28 @@
 2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>
 
+        Web Inspector: Only Capture Extra Network Load Metrics when there is a Web Inspector Frontend
+        https://bugs.webkit.org/show_bug.cgi?id=170525
+
+        Reviewed by Youenn Fablet.
+
+        Covered by existing tests that when Web Inspector is open we enable collecting the extra data.
+
+        * inspector/InspectorInstrumentation.cpp:
+        (WebCore::InspectorInstrumentation::firstFrontendCreated):
+        (WebCore::InspectorInstrumentation::lastFrontendDeleted):
+        * inspector/InspectorInstrumentation.h:
+        (WebCore::InspectorInstrumentation::frontendCreated):
+        (WebCore::InspectorInstrumentation::frontendDeleted):
+        When the first frontend is created enable a new loader strategy to
+        collect extra network load metrics. When the last frontend is closed
+        disable the extra metrics.
+
+        * loader/LoaderStrategy.h:
+        * platform/PlatformStrategies.h:
+        New load strategy to enable/disable new metrics.
+
+2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>
+
         Web Inspector: Show all headers in the Request Headers section of the Resource details sidebar
         https://bugs.webkit.org/show_bug.cgi?id=16531
         <rdar://problem/5712895>
index 4f724a4..51c4baa 100644 (file)
 #include "InspectorTimelineAgent.h"
 #include "InspectorWorkerAgent.h"
 #include "InstrumentingAgents.h"
+#include "LoaderStrategy.h"
 #include "MainFrame.h"
 #include "PageDebuggerAgent.h"
 #include "PageHeapAgent.h"
 #include "PageRuntimeAgent.h"
+#include "PlatformStrategies.h"
 #include "RenderObject.h"
 #include "RenderView.h"
 #include "ScriptController.h"
@@ -94,6 +96,16 @@ static HashSet<InstrumentingAgents*>* s_instrumentingAgentsSet = nullptr;
 
 int InspectorInstrumentation::s_frontendCounter = 0;
 
+void InspectorInstrumentation::firstFrontendCreated()
+{
+    platformStrategies()->loaderStrategy()->setCaptureExtraNetworkLoadMetricsEnabled(true);
+}
+
+void InspectorInstrumentation::lastFrontendDeleted()
+{
+    platformStrategies()->loaderStrategy()->setCaptureExtraNetworkLoadMetricsEnabled(false);
+}
+
 static void didScheduleAsyncCall(InstrumentingAgents& instrumentingAgents, AsyncCallType type, int callbackId, ScriptExecutionContext& context, bool singleShot)
 {
     if (InspectorDebuggerAgent* debuggerAgent = instrumentingAgents.inspectorDebuggerAgent()) {
index a726efb..4589752 100644 (file)
@@ -249,9 +249,13 @@ public:
     static void layerTreeDidChange(Page*);
     static void renderLayerDestroyed(Page*, const RenderLayer&);
 
-    static void frontendCreated() { s_frontendCounter += 1; }
-    static void frontendDeleted() { s_frontendCounter -= 1; }
+    static void frontendCreated();
+    static void frontendDeleted();
     static bool hasFrontends() { return s_frontendCounter; }
+
+    static void firstFrontendCreated();
+    static void lastFrontendDeleted();
+
     static bool consoleAgentEnabled(ScriptExecutionContext*);
     static bool timelineAgentEnabled(ScriptExecutionContext*);
     static bool replayAgentEnabled(ScriptExecutionContext*);
@@ -1346,4 +1350,20 @@ inline InstrumentingAgents& InspectorInstrumentation::instrumentingAgentsForWork
     return workerGlobalScope.inspectorController().m_instrumentingAgents;
 }
 
+inline void InspectorInstrumentation::frontendCreated()
+{
+    s_frontendCounter++;
+
+    if (s_frontendCounter == 1)
+        InspectorInstrumentation::firstFrontendCreated();
+}
+
+inline void InspectorInstrumentation::frontendDeleted()
+{
+    s_frontendCounter--;
+
+    if (!s_frontendCounter)
+        InspectorInstrumentation::lastFrontendDeleted();
+}
+
 } // namespace WebCore
index 8121f0e..2871a21 100644 (file)
@@ -63,6 +63,8 @@ public:
 
     virtual void storeDerivedDataToCache(const SHA1::Digest& bodyKey, const String& type, const String& partition, WebCore::SharedBuffer&) = 0;
 
+    virtual void setCaptureExtraNetworkLoadMetricsEnabled(bool) = 0;
+
 protected:
     virtual ~LoaderStrategy();
 };
index fffb0dd..64d879f 100644 (file)
@@ -23,8 +23,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef PlatformStrategies_h
-#define PlatformStrategies_h
+#pragma once
 
 namespace WebCore {
 
@@ -88,5 +87,3 @@ WEBCORE_EXPORT PlatformStrategies* platformStrategies();
 WEBCORE_EXPORT void setPlatformStrategies(PlatformStrategies*);
     
 } // namespace WebCore
-
-#endif // PlatformStrategies_h
index 9072c37..2b39b98 100644 (file)
@@ -1,3 +1,12 @@
+2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>
+
+        Web Inspector: Only Capture Extra Network Load Metrics when there is a Web Inspector Frontend
+        https://bugs.webkit.org/show_bug.cgi?id=170525
+
+        Reviewed by Youenn Fablet.
+
+        * WebCoreSupport/WebResourceLoadScheduler.h:
+
 2017-04-05  Fujii Hironori  <Hironori.Fujii@sony.com>
 
         [WinCairo] Invalid address specified to RtlValidateHeap at std::ctype<char>::_Tidy() when finishing MiniBrowser
index e80933a..076a334 100644 (file)
@@ -58,6 +58,8 @@ public:
 
     void storeDerivedDataToCache(const SHA1::Digest&, const String&, const String&, WebCore::SharedBuffer&) override { }
 
+    void setCaptureExtraNetworkLoadMetricsEnabled(bool) override { }
+
     bool isSerialLoadingEnabled() const { return m_isSerialLoadingEnabled; }
     void setSerialLoadingEnabled(bool b) { m_isSerialLoadingEnabled = b; }
 
index a9243d9..d8a0859 100644 (file)
@@ -1,5 +1,47 @@
 2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>
 
+        Web Inspector: Only Capture Extra Network Load Metrics when there is a Web Inspector Frontend
+        https://bugs.webkit.org/show_bug.cgi?id=170525
+
+        Reviewed by Youenn Fablet.
+
+        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+        (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
+        Only collect extra metrics if the WebProcess this load is for has enabled
+        collecting extra metrics.
+
+        * WebProcess/Network/WebLoaderStrategy.cpp:
+        (WebKit::WebLoaderStrategy::setCaptureExtraNetworkLoadMetricsEnabled):
+        * WebProcess/Network/WebLoaderStrategy.h:
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        (WebKit::NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled):
+        * NetworkProcess/NetworkConnectionToWebProcess.h:
+        (WebKit::NetworkConnectionToWebProcess::captureExtraNetworkLoadMetricsEnabled):
+        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
+        New bool state toggled through the loader policy.
+
+        * NetworkProcess/NetworkDataTask.cpp:
+        (WebKit::NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics):
+        * NetworkProcess/NetworkDataTask.h:
+        (WebKit::NetworkDataTaskClient::shouldCaptureExtraNetworkLoadMetrics):
+        * NetworkProcess/NetworkLoad.cpp:
+        (WebKit::NetworkLoad::shouldCaptureExtraNetworkLoadMetrics):
+        * NetworkProcess/NetworkLoad.h:
+        * NetworkProcess/NetworkLoadClient.h:
+        (WebKit::NetworkLoadClient::shouldCaptureExtraNetworkLoadMetrics):
+        * NetworkProcess/NetworkResourceLoader.cpp:
+        (WebKit::NetworkResourceLoader::shouldCaptureExtraNetworkLoadMetrics):
+        * NetworkProcess/NetworkResourceLoader.h:
+        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
+        (WebKit::NetworkCache::SpeculativeLoad::shouldCaptureExtraNetworkLoadMetrics):
+        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
+        Default handling for network loads is to not include extra data. Thread
+        client messages back from the NetworkLoads / SpeculativeLoads to check
+        the NetworkConnectionToWebProcess state on whether or not we should collect
+        extra metrics.
+
+2017-04-06  Joseph Pecoraro  <pecoraro@apple.com>
+
         Web Inspector: Show all headers in the Request Headers section of the Resource details sidebar
         https://bugs.webkit.org/show_bug.cgi?id=16531
         <rdar://problem/5712895>
index e845115..5d0d9b3 100644 (file)
@@ -386,6 +386,11 @@ void NetworkConnectionToWebProcess::storeDerivedDataToCache(const WebKit::Networ
     NetworkCache::singleton().storeData(dataKey, data.data(), data.size());
 }
 
+void NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled(bool enabled)
+{
+    m_captureExtraNetworkLoadMetricsEnabled = enabled;
+}
+
 void NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession()
 {
     NetworkProcess::singleton().ensurePrivateBrowsingSession(SessionID::legacyPrivateSessionID());
index b097548..9b3cb54 100644 (file)
@@ -60,6 +60,8 @@ public:
 
     void didCleanupResourceLoader(NetworkResourceLoader&);
 
+    bool captureExtraNetworkLoadMetricsEnabled() const { return m_captureExtraNetworkLoadMetricsEnabled; }
+
     RefPtr<WebCore::BlobDataFileReference> getBlobDataFileReferenceForPath(const String& path);
 
 private:
@@ -105,6 +107,8 @@ private:
 
     void storeDerivedDataToCache(const WebKit::NetworkCache::DataKey&, const IPC::DataReference&);
 
+    void setCaptureExtraNetworkLoadMetricsEnabled(bool);
+
     void createSocketStream(WebCore::URL&&, WebCore::SessionID, String cachePartition, uint64_t);
     void destroySocketStream(uint64_t);
     
@@ -123,6 +127,8 @@ private:
 #if USE(LIBWEBRTC)
     RefPtr<NetworkRTCProvider> m_rtcProvider;
 #endif
+
+    bool m_captureExtraNetworkLoadMetricsEnabled { false };
 };
 
 } // namespace WebKit
index 9c7a12c..ee2584b 100644 (file)
@@ -51,6 +51,8 @@ messages -> NetworkConnectionToWebProcess LegacyReceiver {
 
     StoreDerivedDataToCache(WebKit::NetworkCache::DataKey key, IPC::DataReference data)
 
+    SetCaptureExtraNetworkLoadMetricsEnabled(bool enabled)
+
     CreateSocketStream(WebCore::URL url, WebCore::SessionID sessionID, String cachePartition, uint64_t identifier)
 
     EnsureLegacyPrivateBrowsingSession()
index aeee92d..1b9a08d 100644 (file)
@@ -110,6 +110,11 @@ void NetworkDataTask::didReceiveResponse(ResourceResponse&& response, ResponseCo
     m_client->didReceiveResponseNetworkSession(WTFMove(response), WTFMove(completionHandler));
 }
 
+bool NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics() const
+{
+    return m_client->shouldCaptureExtraNetworkLoadMetrics();
+}
+
 void NetworkDataTask::failureTimerFired()
 {
     RefPtr<NetworkDataTask> protectedThis(this);
index 6cb826d..eda335e 100644 (file)
@@ -69,6 +69,8 @@ public:
     virtual void wasBlocked() = 0;
     virtual void cannotShowURL() = 0;
 
+    virtual bool shouldCaptureExtraNetworkLoadMetrics() const { return false; }
+
     void didCompleteWithError(const WebCore::ResourceError& error)
     {
         WebCore::NetworkLoadMetrics emptyMetrics;
@@ -90,6 +92,7 @@ public:
     virtual void invalidateAndCancel() = 0;
 
     void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&);
+    bool shouldCaptureExtraNetworkLoadMetrics() const;
 
     enum class State {
         Running,
index 710db79..a471ae3 100644 (file)
@@ -233,6 +233,13 @@ void NetworkLoad::continueDidReceiveResponse()
 #endif
 }
 
+#if USE(NETWORK_SESSION)
+bool NetworkLoad::shouldCaptureExtraNetworkLoadMetrics() const
+{
+    return m_client.get().shouldCaptureExtraNetworkLoadMetrics();
+}
+#endif
+
 NetworkLoadClient::ShouldContinueDidReceiveResponse NetworkLoad::sharedDidReceiveResponse(ResourceResponse&& response)
 {
     response.setSource(ResourceResponse::Source::Network);
index ef72522..ca261d5 100644 (file)
@@ -76,6 +76,8 @@ public:
     void setSuggestedFilename(const String&);
     void setPendingDownload(PendingDownload&);
     DownloadID pendingDownloadID() { return m_task->pendingDownloadID(); }
+
+    bool shouldCaptureExtraNetworkLoadMetrics() const final;
 #else
     WebCore::ResourceHandle* handle() const { return m_handle.get(); }
 
index e589e3a..2871d32 100644 (file)
@@ -58,6 +58,7 @@ public:
     virtual void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) = 0;
     virtual void didFinishLoading(const WebCore::NetworkLoadMetrics&) = 0;
     virtual void didFailLoading(const WebCore::ResourceError&) = 0;
+    virtual bool shouldCaptureExtraNetworkLoadMetrics() const { return false; }
 };
 
 } // namespace WebKit
index f66849a..9cbb9d8 100644 (file)
@@ -709,4 +709,9 @@ bool NetworkResourceLoader::isAlwaysOnLoggingAllowed() const
     return sessionID().isAlwaysOnLoggingAllowed();
 }
 
+bool NetworkResourceLoader::shouldCaptureExtraNetworkLoadMetrics() const
+{
+    return m_connection->captureExtraNetworkLoadMetricsEnabled();
+}
+
 } // namespace WebKit
index e46cd91..3589915 100644 (file)
@@ -96,6 +96,7 @@ public:
     void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override;
     void didFinishLoading(const WebCore::NetworkLoadMetrics&) override;
     void didFailLoading(const WebCore::ResourceError&) override;
+    bool shouldCaptureExtraNetworkLoadMetrics() const override;
 
     void convertToDownload(DownloadID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
 
index b93868c..2e2f4b1 100644 (file)
@@ -156,6 +156,13 @@ void SpeculativeLoad::didComplete()
     m_completionHandler(WTFMove(m_cacheEntry));
 }
 
+#if USE(NETWORK_SESSION)
+bool SpeculativeLoad::shouldCaptureExtraNetworkLoadMetrics() const
+{
+    return m_networkLoad->shouldCaptureExtraNetworkLoadMetrics();
+}
+#endif
+
 } // namespace NetworkCache
 } // namespace WebKit
 
index a3fe906..c22c2e8 100644 (file)
@@ -64,6 +64,10 @@ private:
     void didFinishLoading(const WebCore::NetworkLoadMetrics&) override;
     void didFailLoading(const WebCore::ResourceError&) override;
 
+#if USE(NETWORK_SESSION)
+    bool shouldCaptureExtraNetworkLoadMetrics() const override;
+#endif
+
     void didComplete();
 
     GlobalFrameID m_frameID;
index 8d3b54e..20a7517 100644 (file)
@@ -299,20 +299,23 @@ static WebCore::NetworkLoadPriority toNetworkLoadPriority(float priority)
         networkLoadMetrics.responseStart = Seconds(responseStartInterval);
         networkLoadMetrics.responseEnd = Seconds(responseEndInterval);
         networkLoadMetrics.markComplete();
-
         networkLoadMetrics.protocol = String(m.networkProtocolName);
-        networkLoadMetrics.priority = toNetworkLoadPriority(task.priority);
+
+        if (networkDataTask->shouldCaptureExtraNetworkLoadMetrics()) {
+            networkLoadMetrics.priority = toNetworkLoadPriority(task.priority);
+
 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101300) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 110000)
-        networkLoadMetrics.remoteAddress = String(m._remoteAddressAndPort);
-        if ([m respondsToSelector:@selector(_connectionIdentifier)])
-            networkLoadMetrics.connectionIdentifier = String([m._connectionIdentifier UUIDString]);
+            networkLoadMetrics.remoteAddress = String(m._remoteAddressAndPort);
+            if ([m respondsToSelector:@selector(_connectionIdentifier)])
+                networkLoadMetrics.connectionIdentifier = String([m._connectionIdentifier UUIDString]);
 #endif
 
-        __block WebCore::HTTPHeaderMap requestHeaders;
-        [m.request.allHTTPHeaderFields enumerateKeysAndObjectsUsingBlock:^(NSString *name, NSString *value, BOOL *) {
-            requestHeaders.set(String(name), String(value));
-        }];
-        networkLoadMetrics.requestHeaders = WTFMove(requestHeaders);
+            __block WebCore::HTTPHeaderMap requestHeaders;
+            [m.request.allHTTPHeaderFields enumerateKeysAndObjectsUsingBlock:^(NSString *name, NSString *value, BOOL *) {
+                requestHeaders.set(String(name), String(value));
+            }];
+            networkLoadMetrics.requestHeaders = WTFMove(requestHeaders);
+        }
     }
 }
 
index 1828274..505a95a 100644 (file)
@@ -398,4 +398,9 @@ void WebLoaderStrategy::storeDerivedDataToCache(const SHA1::Digest& bodyHash, co
     WebProcess::singleton().networkConnection().connection().send(Messages::NetworkConnectionToWebProcess::StoreDerivedDataToCache(key, dataReference), 0);
 }
 
+void WebLoaderStrategy::setCaptureExtraNetworkLoadMetricsEnabled(bool enabled)
+{
+    WebProcess::singleton().networkConnection().connection().send(Messages::NetworkConnectionToWebProcess::SetCaptureExtraNetworkLoadMetricsEnabled(enabled), 0);
+}
+
 } // namespace WebKit
index 290475b..7e5357a 100644 (file)
@@ -60,6 +60,8 @@ public:
 
     void storeDerivedDataToCache(const SHA1::Digest& bodyHash, const String& type, const String& partition, WebCore::SharedBuffer&) override;
 
+    void setCaptureExtraNetworkLoadMetricsEnabled(bool) override;
+
     WebResourceLoader* webResourceLoaderForIdentifier(ResourceLoadIdentifier identifier) const { return m_webResourceLoaders.get(identifier); }
     RefPtr<WebCore::NetscapePlugInStreamLoader> schedulePluginStreamLoad(WebCore::Frame&, WebCore::NetscapePlugInStreamLoaderClient&, const WebCore::ResourceRequest&);