Chromium Code Reviews| Index: third_party/WebKit/Source/web/InspectorEmulationAgent.cpp |
| diff --git a/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp b/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp |
| index 495b7921db61a413966621c2baca434874f0e78d..c231747a3f72e0a78448a04f125c811daa35b5b4 100644 |
| --- a/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp |
| +++ b/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp |
| @@ -9,6 +9,8 @@ |
| #include "core/frame/Settings.h" |
| #include "core/page/Page.h" |
| #include "platform/geometry/DoubleRect.h" |
| +#include "public/platform/Platform.h" |
| +#include "public/platform/WebThread.h" |
| #include "public/platform/WebViewScheduler.h" |
| #include "web/DevToolsEmulator.h" |
| #include "web/WebLocalFrameImpl.h" |
| @@ -30,6 +32,7 @@ InspectorEmulationAgent* InspectorEmulationAgent::create(WebLocalFrameImpl* webL |
| InspectorEmulationAgent::InspectorEmulationAgent(WebLocalFrameImpl* webLocalFrameImpl, Client* client) |
| : m_webLocalFrameImpl(webLocalFrameImpl) |
| , m_client(client) |
| + , m_virtualTimeBudgetExpiredTask(CancellableTaskFactory::create(this, &InspectorEmulationAgent::virtualTimeBudgetExpired)) |
| { |
| } |
| @@ -93,18 +96,28 @@ void InspectorEmulationAgent::setCPUThrottlingRate(ErrorString*, double throttli |
| m_client->setCPUThrottlingRate(throttlingRate); |
| } |
| -void InspectorEmulationAgent::setVirtualTimePolicy(ErrorString*, const String& in_policy) |
| +void InspectorEmulationAgent::setVirtualTimePolicy(ErrorString*, const String& in_policy, const Maybe<int>& in_virtualTimeBudgetMs) |
| { |
| if (protocol::Emulation::VirtualTimePolicyEnum::Advance == in_policy) { |
| - m_webLocalFrameImpl->view()->scheduler()->enableVirtualTime(); |
| m_webLocalFrameImpl->view()->scheduler()->setVirtualTimePolicy(WebViewScheduler::VirtualTimePolicy::ADVANCE); |
| } else if (protocol::Emulation::VirtualTimePolicyEnum::Pause == in_policy) { |
| - m_webLocalFrameImpl->view()->scheduler()->enableVirtualTime(); |
| m_webLocalFrameImpl->view()->scheduler()->setVirtualTimePolicy(WebViewScheduler::VirtualTimePolicy::PAUSE); |
| } else if (protocol::Emulation::VirtualTimePolicyEnum::PauseIfNetworkFetchesPending == in_policy) { |
| - m_webLocalFrameImpl->view()->scheduler()->enableVirtualTime(); |
| m_webLocalFrameImpl->view()->scheduler()->setVirtualTimePolicy(WebViewScheduler::VirtualTimePolicy::DETERMINISTIC_LOADING); |
| } |
| + m_webLocalFrameImpl->view()->scheduler()->enableVirtualTime(); |
| + |
| + if (in_virtualTimeBudgetMs.isJust()) { |
| + WebTaskRunner* taskRunner = Platform::current()->currentThread()->getWebTaskRunner(); |
| + long long delayMillis = static_cast<long long>(in_virtualTimeBudgetMs.fromJust()); |
| + taskRunner->postDelayedTask(BLINK_FROM_HERE, m_virtualTimeBudgetExpiredTask->cancelAndCreate(), delayMillis); |
| + } |
| +} |
| + |
| +void InspectorEmulationAgent::virtualTimeBudgetExpired() |
| +{ |
| + m_webLocalFrameImpl->view()->scheduler()->setVirtualTimePolicy(WebViewScheduler::VirtualTimePolicy::PAUSE); |
| + frontend()->virtualTimeBudgetExpired(); |
|
dgozman
2016/08/01 19:53:13
Please also update devtools frontend code (add emp
alex clarke (OOO till 29th)
2016/08/02 15:42:59
I'm not clear where such changes would be needed?
|
| } |
| DEFINE_TRACE(InspectorEmulationAgent) |