Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c4a7ebcc295f78d1ab83f219b92bda34163da68b
      
https://github.com/WebKit/WebKit/commit/c4a7ebcc295f78d1ab83f219b92bda34163da68b
  Author: Devin Rousso <[email protected]>
  Date:   2026-09-10 (Thu, 10 Sep 2026)

  Changed paths:
    M 
LayoutTests/http/tests/inspector/network/setEmulatedConditions-expected.txt
    M LayoutTests/http/tests/inspector/network/setEmulatedConditions.html
    M 
LayoutTests/http/tests/site-isolation/inspector/network/set-emulated-conditions-and-resource-caching-disabled-expected.txt
    M 
LayoutTests/http/tests/site-isolation/inspector/network/set-emulated-conditions-and-resource-caching-disabled.html
    M LayoutTests/platform/mac-wk2/TestExpectations
    M Source/JavaScriptCore/inspector/protocol/Network.json
    M Source/WTF/wtf/PlatformEnableCocoa.h
    M Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h
    M Source/WebCore/inspector/InspectorBackendClient.h
    M Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
    M Source/WebCore/inspector/agents/InspectorNetworkAgent.h
    M Source/WebCore/inspector/agents/page/PageNetworkAgent.cpp
    M Source/WebCore/inspector/agents/page/PageNetworkAgent.h
    M Source/WebCore/inspector/agents/worker/WorkerNetworkAgent.cpp
    M Source/WebCore/inspector/agents/worker/WorkerNetworkAgent.h
    M Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js
    M Source/WebKit/NetworkProcess/NetworkDataTask.cpp
    M Source/WebKit/NetworkProcess/NetworkDataTask.h
    M Source/WebKit/NetworkProcess/NetworkLoad.cpp
    M Source/WebKit/NetworkProcess/NetworkLoad.h
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
    M Source/WebKit/NetworkProcess/NetworkSession.cpp
    M Source/WebKit/NetworkProcess/NetworkSession.h
    M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h
    M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
    M Source/WebKit/UIProcess/Inspector/Agents/ProxyingNetworkAgent.cpp
    M Source/WebKit/UIProcess/Inspector/Agents/ProxyingNetworkAgent.h
    M Source/WebKit/UIProcess/Inspector/WebInspectorBackendProxy.cpp
    M Source/WebKit/UIProcess/Inspector/WebInspectorBackendProxy.h
    M Source/WebKit/UIProcess/Inspector/WebInspectorBackendProxy.messages.in
    M Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.cpp
    M Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.h
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h
    M Source/WebKit/WebProcess/Inspector/WebInspectorBackend.cpp
    M Source/WebKit/WebProcess/Inspector/WebInspectorBackend.h
    M Source/WebKit/WebProcess/Inspector/WebInspectorBackendClient.cpp
    M Source/WebKit/WebProcess/Inspector/WebInspectorBackendClient.h

  Log Message:
  -----------
  Web Inspector: Support HTTP throttling or some Network Conditioner for the 
inspected web page
https://bugs.webkit.org/show_bug.cgi?id=287737
<rdar://problem/144892477>

Reviewed by Alex Christensen.

Replace the legacy `-[NSURLSession _bytesPerSecondLimit:]` SPI with a custom 
throttling system.

`bandwidth` causes data to be buffered and released at the given rate when 
received, emulating a slower transfer rate.
`latency` delays the start of the request, emulating a round-trip time before 
the request is sent.

As such, this also fixes <https://webkit.org/b/254607> Web Inspector: Support 
throttling latency

* Source/WebKit/NetworkProcess/NetworkSession.h:
(WebKit::NetworkSession::emulatedConditions const): Added.
(WebKit::NetworkSession::bytesPerSecondLimit const): Deleted.
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::setEmulatedConditions):
* Source/WebKit/NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTaskClient::emulatedConditionsDidChange): Added.
(WebKit::NetworkDataTask::setEmulatedConditions): Deleted.
* Source/WebKit/NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::create):
(WebKit::NetworkDataTask::notifyEmulatedConditionsChanged): Added.
* Source/WebKit/NetworkProcess/NetworkLoad.h:
(WebKit::NetworkLoad::NetworkLoad): Deleted.
* Source/WebKit/NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::ConditionEmulator::tryCreate): Added.
(WebKit::NetworkLoad::ConditionEmulator::ConditionEmulator): Added.
(WebKit::NetworkLoad::ConditionEmulator::~ConditionEmulator): Added.
(WebKit::NetworkLoad::ConditionEmulator::isWaitingForLatency): Added.
(WebKit::NetworkLoad::ConditionEmulator::didReceiveData): Added.
(WebKit::NetworkLoad::ConditionEmulator::deferCompletion): Added.
(WebKit::NetworkLoad::ConditionEmulator::conditionsDidChange): Added.
(WebKit::NetworkLoad::ConditionEmulator::emulatedConditions): Added.
(WebKit::NetworkLoad::ConditionEmulator::updateBudget): Added.
(WebKit::NetworkLoad::ConditionEmulator::timerFired): Added.
(WebKit::NetworkLoad::start):
(WebKit::NetworkLoad::NetworkLoad): Added.
(WebKit::NetworkLoad::~NetworkLoad):
(WebKit::NetworkLoad::cancel):
(WebKit::NetworkLoad::didReceiveData):
(WebKit::NetworkLoad::didCompleteWithError):
(WebKit::NetworkLoad::emulatedConditionsDidChange): Added.
Use a `Timer` and finite state machine to initially and/or continually throttle 
transferred data.

* Source/JavaScriptCore/inspector/protocol/Network.json:
* Source/WebCore/inspector/agents/InspectorNetworkAgent.h:
* Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::disable):
(WebCore::InspectorNetworkAgent::setEmulatedConditions):
* Source/WebCore/inspector/agents/page/PageNetworkAgent.h:
* Source/WebCore/inspector/agents/page/PageNetworkAgent.cpp:
(WebCore::PageNetworkAgent::setEmulatedConditionsInternal):
* Source/WebCore/inspector/agents/worker/WorkerNetworkAgent.h:
* Source/WebCore/inspector/agents/worker/WorkerNetworkAgent.cpp:
(WebCore::WorkerNetworkAgent::setEmulatedConditionsInternal):
* Source/WebKit/UIProcess/Inspector/Agents/ProxyingNetworkAgent.h:
* Source/WebKit/UIProcess/Inspector/Agents/ProxyingNetworkAgent.cpp:
(Inspector::ProxyingNetworkAgent::disable):
(Inspector::ProxyingNetworkAgent::setEmulatedConditions):
* Source/WebCore/inspector/InspectorBackendClient.h:
(WebCore::InspectorBackendClient::setEmulatedConditions):
* Source/WebKit/WebProcess/Inspector/WebInspectorBackend.h:
* Source/WebKit/WebProcess/Inspector/WebInspectorBackend.cpp:
(WebKit::WebInspectorBackend::setEmulatedConditions):
* Source/WebKit/WebProcess/Inspector/WebInspectorBackendClient.h:
* Source/WebKit/WebProcess/Inspector/WebInspectorBackendClient.cpp:
(WebKit::WebInspectorBackendClient::setEmulatedConditions):
* Source/WebKit/UIProcess/Inspector/WebInspectorBackendProxy.messages.in:
* Source/WebKit/UIProcess/Inspector/WebInspectorBackendProxy.h:
* Source/WebKit/UIProcess/Inspector/WebInspectorBackendProxy.cpp:
(WebKit::WebInspectorBackendProxy::setEmulatedConditions):
* Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.h:
* Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.cpp:
(WebKit::WebInspectorUIProxy::setEmulatedConditions):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::setEmulatedConditions):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setEmulatedConditions):
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::setEmulatedConditions):
Add necessary piping of both `bandwidth` and `latency` from Web Inspector to 
the NetworkProcess.

* Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype._applyEmulatedCondition):
Pass both `bandwidth` and `latency` from the selected emulated condition.

* Source/WTF/wtf/PlatformEnableCocoa.h:
Enable the feature flag.

* Source/WebCore/PAL/pal/spi/cf/CFNetworkSPI.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::setEmulatedConditions): Deleted.
Remove no longer used old SPI.

* LayoutTests/http/tests/inspector/network/setEmulatedConditions.html:
* LayoutTests/http/tests/inspector/network/setEmulatedConditions-expected.txt:
* 
LayoutTests/http/tests/site-isolation/inspector/network/set-emulated-conditions-and-resource-caching-disabled.html:
* 
LayoutTests/http/tests/site-isolation/inspector/network/set-emulated-conditions-and-resource-caching-disabled-expected.txt:
* LayoutTests/platform/mac-wk2/TestExpectations:

Canonical link: https://commits.webkit.org/320893@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to