New issue
Advanced search Search tips

Issue 696001 link

Starred by 10 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 3
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Feature

Blocking:
issue 546953



Sign in to add a comment

Deterministic page loading

Project Member Reported by skyos...@chromium.org, Feb 24 2017

Issue description

We want to introduce a deterministic mode to Blink which makes it more likely that a given page loads and renders in the same way on subsequent runs. This mode is a combination of a run time setting and a build time flag.

 
Design doc: https://docs.google.com/document/d/19s2g4fPP9p9qmMZvwPX8uDGbb-39rgR9k56B4B-ueG8/edit?pli=1#

One outcome of the discussion so far is that we will try to avoid having any build time changes for determinism. Otherwise it will be difficult to test this mode.
Project Member

Comment 2 by bugdroid1@chromium.org, Mar 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8579f022a226b0182ba7c5a0a2b83815775a1faa

commit 8579f022a226b0182ba7c5a0a2b83815775a1faa
Author: skyostil <skyostil@chromium.org>
Date: Wed Mar 01 13:57:56 2017

scheduler: Ensure consistent delayed task ordering between task queues

When wakeups are scheduled for distinct task queues, they should be
ordered according to the tasks which caused the wakeups. Previously this
was only being done by looking at the the scheduled run times fo the
tasks, but we should also consider the sequence numbers for tasks with
identical run times.

BUG= 696001 

Review-Url: https://codereview.chromium.org/2718293003
Cr-Commit-Position: refs/heads/master@{#453927}

[modify] https://crrev.com/8579f022a226b0182ba7c5a0a2b83815775a1faa/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc
[modify] https://crrev.com/8579f022a226b0182ba7c5a0a2b83815775a1faa/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h
[modify] https://crrev.com/8579f022a226b0182ba7c5a0a2b83815775a1faa/third_party/WebKit/Source/platform/scheduler/base/time_domain.cc
[modify] https://crrev.com/8579f022a226b0182ba7c5a0a2b83815775a1faa/third_party/WebKit/Source/platform/scheduler/base/time_domain.h
[modify] https://crrev.com/8579f022a226b0182ba7c5a0a2b83815775a1faa/third_party/WebKit/Source/platform/scheduler/base/time_domain_unittest.cc

Project Member

Comment 3 by bugdroid1@chromium.org, Mar 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/31b966ba7c5468ada998bb46e605a4d733b69202

commit 31b966ba7c5468ada998bb46e605a4d733b69202
Author: skyostil <skyostil@chromium.org>
Date: Thu Mar 09 17:48:16 2017

scheduler: Suspend timers while virtual time is paused

When virtual time is suspended, suspend all timers from running -- even
if they would be eligible to run given the current virtual time value.
This allows us to deterministically schedule fetch responses w.r.t. all
types of timers tasks regardless of how soon the fetch request is
serviced. The downside is that the throughput of timer work is reduced
depending on the number of fetches performed by a page.

Design doc:
https://docs.google.com/document/d/19s2g4fPP9p9qmMZvwPX8uDGbb-39rgR9k56B4B-ueG8/edit?pli=1#

BUG= 696001 

Review-Url: https://codereview.chromium.org/2725633002
Cr-Commit-Position: refs/heads/master@{#455787}

[modify] https://crrev.com/31b966ba7c5468ada998bb46e605a4d733b69202/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/31b966ba7c5468ada998bb46e605a4d733b69202/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
[modify] https://crrev.com/31b966ba7c5468ada998bb46e605a4d733b69202/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
[modify] https://crrev.com/31b966ba7c5468ada998bb46e605a4d733b69202/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
[modify] https://crrev.com/31b966ba7c5468ada998bb46e605a4d733b69202/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.h
[modify] https://crrev.com/31b966ba7c5468ada998bb46e605a4d733b69202/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc
[modify] https://crrev.com/31b966ba7c5468ada998bb46e605a4d733b69202/third_party/WebKit/Source/web/tests/VirtualTimeTest.cpp
[modify] https://crrev.com/31b966ba7c5468ada998bb46e605a4d733b69202/third_party/WebKit/public/platform/WebViewScheduler.h

Project Member

Comment 4 by bugdroid1@chromium.org, Mar 23 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/9b152fdafdd55f5e5ada88b9fae296d823f797c8

commit 9b152fdafdd55f5e5ada88b9fae296d823f797c8
Author: skyostil <skyostil@chromium.org>
Date: Thu Mar 23 18:14:38 2017

Enable deterministic random number generation

This patch makes Math.random() behave deterministically when a fixed
random seed is provided. This is done by re-seeding the random number
generator the first time a script requests a random number. Doing this
ensures Math.random() returns the same sequence across page loads and
across iframes.

BUG= chromium:696001 

Review-Url: https://codereview.chromium.org/2760393002
Cr-Commit-Position: refs/heads/master@{#44076}

[modify] https://crrev.com/9b152fdafdd55f5e5ada88b9fae296d823f797c8/src/runtime/runtime-maths.cc
[modify] https://crrev.com/9b152fdafdd55f5e5ada88b9fae296d823f797c8/test/cctest/test-api.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Apr 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7d68ce72674bc9189bd8bcf305823d75c044489d

commit 7d68ce72674bc9189bd8bcf305823d75c044489d
Author: skyostil <skyostil@chromium.org>
Date: Mon Apr 10 16:47:24 2017

extensions: Fix synchronization in ContentScriptApiTest.ContentScriptOtherExtensions

The ContentScriptApiTest.ContentScriptOtherExtensions has the following
flow:

1. Register the inject.js content script to run at 'document_end'
   time.
2. Load iframe_content.{html,js} in an iframe.
3. On DOMContentLoaded, set a 10ms timer to report the iframe's contents
   to the test harness.
4. In 'inject.js', rewrite the page's content.
5. In the test harness, verify that the page reports the content mutated
   by inject.js.

The problem is that the timer registered in step 3 races with the
task[1] triggering the injection script since there's no explicit
synchronization between the two. Currently this works by accident, but
an upcoming change[2] in the Blink Scheduler will cause the test to
actually become flaky.

This change fixes the test by making the iframe report its contents
based on the load event rather than DOMContentLoaded. Since this is
guaranteed to happen after the injection has finished, there's no
possibility of out-of-order execution.

BUG= 696001 , 701223 

[1] blink::FrameLoader::finishedParsing
    => extensions::ScriptInjection::InjectJs
       => blink::SuspendableScriptExecutor::create
[2] https://bugs.chromium.org/p/chromium/issues/detail?id=701223#c4

Review-Url: https://codereview.chromium.org/2800103002
Cr-Commit-Position: refs/heads/master@{#463294}

[modify] https://crrev.com/7d68ce72674bc9189bd8bcf305823d75c044489d/chrome/test/data/extensions/api_test/content_scripts/other_extensions/iframe_content.js

Project Member

Comment 6 by bugdroid1@chromium.org, Apr 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a979e581c8d1585cb67062d29f9ef25ffcbe0c20

commit a979e581c8d1585cb67062d29f9ef25ffcbe0c20
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 12 11:48:05 2017

Make plugins/plugin-reload-data.html deterministic

After changing the data property of a plugin, we should wait for a
notification from the plugin confirming the new data before exiting the
test.

BUG= 696001 

Review-Url: https://codereview.chromium.org/2808273005
Cr-Commit-Position: refs/heads/master@{#463995}

[modify] https://crrev.com/a979e581c8d1585cb67062d29f9ef25ffcbe0c20/third_party/WebKit/LayoutTests/plugins/plugin-reload-data.html

Project Member

Comment 7 by bugdroid1@chromium.org, Apr 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/acbeec26f3889dcc304c94608e2fb3bb4d2748b6

commit acbeec26f3889dcc304c94608e2fb3bb4d2748b6
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 12 11:49:36 2017

Make listbox-scrollbar-incremental-load.html deterministic

The selection is updated as a separate task, so wait for two frames to
make sure it has run.

BUG= 696001 

Review-Url: https://codereview.chromium.org/2814053002
Cr-Commit-Position: refs/heads/master@{#463996}

[modify] https://crrev.com/acbeec26f3889dcc304c94608e2fb3bb4d2748b6/third_party/WebKit/LayoutTests/fast/forms/select/listbox-scrollbar-incremental-load.html

Project Member

Comment 8 by bugdroid1@chromium.org, Apr 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f6a46ccf800d58cb3ff9b8c4d19eb8eee330d4d0

commit f6a46ccf800d58cb3ff9b8c4d19eb8eee330d4d0
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 12 11:51:12 2017

Make two promise-related tests deterministic

Promise rejections are implemented by a posting a trampoline task after
running microtasks[1]. A timer scheduled in the task preceding the
microtasks isn't guaranteed to run after this task, so the tests also
need to be changed to use a nested trampoline to ensure rejection has
taken place before verifying test invariants.

[1] Since https://codereview.chromium.org/1381693002/

BUG= 696001 

Review-Url: https://codereview.chromium.org/2813823004
Cr-Commit-Position: refs/heads/master@{#463997}

[modify] https://crrev.com/f6a46ccf800d58cb3ff9b8c4d19eb8eee330d4d0/third_party/WebKit/LayoutTests/external/wpt/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html
[modify] https://crrev.com/f6a46ccf800d58cb3ff9b8c4d19eb8eee330d4d0/third_party/WebKit/LayoutTests/http/tests/security/promise-access-control-deny.html

Project Member

Comment 9 by bugdroid1@chromium.org, Apr 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5e8b879a3d5ff5e387bb965d732441d71bf6af7c

commit 5e8b879a3d5ff5e387bb965d732441d71bf6af7c
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 12 13:03:48 2017

Make skip-cleaning-up-anonymous-wrappers-when-subtree-being-destroyed.html deterministic

Make sure the interval timer always runs the same number of times before
the test output is captured. Also, since this test is just checking that
we don't crash, there's no need to verify the renderer output.

BUG= 696001 

Review-Url: https://codereview.chromium.org/2816543003
Cr-Commit-Position: refs/heads/master@{#464006}

[add] https://crrev.com/5e8b879a3d5ff5e387bb965d732441d71bf6af7c/third_party/WebKit/LayoutTests/fast/block/skip-cleaning-up-anonymous-wrappers-when-subtree-being-destroyed-expected.txt
[modify] https://crrev.com/5e8b879a3d5ff5e387bb965d732441d71bf6af7c/third_party/WebKit/LayoutTests/fast/block/skip-cleaning-up-anonymous-wrappers-when-subtree-being-destroyed.html
[delete] https://crrev.com/80a544628c10dd3fa27936f69d94b1fb1a1327ab/third_party/WebKit/LayoutTests/platform/linux/fast/block/skip-cleaning-up-anonymous-wrappers-when-subtree-being-destroyed-expected.png
[delete] https://crrev.com/80a544628c10dd3fa27936f69d94b1fb1a1327ab/third_party/WebKit/LayoutTests/platform/linux/fast/block/skip-cleaning-up-anonymous-wrappers-when-subtree-being-destroyed-expected.txt
[delete] https://crrev.com/80a544628c10dd3fa27936f69d94b1fb1a1327ab/third_party/WebKit/LayoutTests/platform/mac/fast/block/skip-cleaning-up-anonymous-wrappers-when-subtree-being-destroyed-expected.png
[delete] https://crrev.com/80a544628c10dd3fa27936f69d94b1fb1a1327ab/third_party/WebKit/LayoutTests/platform/mac/fast/block/skip-cleaning-up-anonymous-wrappers-when-subtree-being-destroyed-expected.txt
[delete] https://crrev.com/80a544628c10dd3fa27936f69d94b1fb1a1327ab/third_party/WebKit/LayoutTests/platform/win/fast/block/skip-cleaning-up-anonymous-wrappers-when-subtree-being-destroyed-expected.png
[delete] https://crrev.com/80a544628c10dd3fa27936f69d94b1fb1a1327ab/third_party/WebKit/LayoutTests/platform/win/fast/block/skip-cleaning-up-anonymous-wrappers-when-subtree-being-destroyed-expected.txt

Project Member

Comment 10 by bugdroid1@chromium.org, Apr 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b10caf8de873181849d28ea10bea9be564875e31

commit b10caf8de873181849d28ea10bea9be564875e31
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 12 14:28:10 2017

Make offscreen canvas resizing test deterministic

Similarly to https://codereview.chromium.org/2738773004, two more
calls to commit() should be amended with a nested timer trampoline to
make sure the commit has completed before we read the results.

BUG= 696001 , 709484 

Review-Url: https://codereview.chromium.org/2808353005
Cr-Commit-Position: refs/heads/master@{#464017}

[modify] https://crrev.com/b10caf8de873181849d28ea10bea9be564875e31/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-resize.html

Project Member

Comment 11 by bugdroid1@chromium.org, Apr 25 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d80c41e37b7570607f6f877961f487f7f24ae12e

commit d80c41e37b7570607f6f877961f487f7f24ae12e
Author: skyostil <skyostil@chromium.org>
Date: Tue Apr 25 18:35:36 2017

scheduler: Move WebFrameScheduler and WebScheduler into Blink

Move WebFrameScheduler and WebScheduler into Blink since there is no
need to expose these classes to outside components.

No functional changes.

BUG= 696001 , 701223 
TBR=jochen@chromium.org,dalecurtis@chromium.org

Review-Url: https://codereview.chromium.org/2843503002
Cr-Commit-Position: refs/heads/master@{#467058}

[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/content/renderer/renderer_blink_platform_impl.cc
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/media/blink/run_all_unittests.cc
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/bindings/core/v8/RejectedPromises.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/bindings/core/v8/ScriptWrappableVisitor.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/bindings/core/v8/V8IdleTaskRunner.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/bindings/core/v8/V8Initializer.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/dom/Document.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/dom/IdleDeadline.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/dom/IdleDeadlineTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/dom/PresentationAttributeStyle.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/dom/ScriptRunner.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/dom/ScriptedIdleTaskController.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/frame/LocalFrame.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/frame/RootFrameViewportTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/html/canvas/CanvasAsyncBlobCreator.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/layout/LayoutText.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/loader/NavigationScheduler.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/loader/NavigationScheduler.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/page/ScopedPageSuspender.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/timing/WorkerPerformance.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/core/xmlhttprequest/XMLHttpRequestProgressEventThrottle.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerLinkResource.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/modules/websockets/WebSocketHandleImpl.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/Timer.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/TimerTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/WebScheduler.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/WebThreadSupportingGC.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/graphics/GraphicsLayerTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/heap/ThreadState.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/loader/fetch/RawResourceTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm
[rename] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/child/web_scheduler.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.cc
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.h
[rename] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scheduler/test/fake_renderer_scheduler.cc
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scroll/ScrollAnimatorTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/scroll/ScrollbarTestSuite.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/platform/testing/TestingPlatformSupport.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/web/ChromeClientImpl.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/web/WebViewImpl.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/web/WebViewImpl.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/web/tests/ActiveConnectionThrottlingTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/Source/web/tests/VirtualTimeTest.cpp
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/public/platform/scheduler/renderer/renderer_scheduler.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/public/platform/scheduler/test/fake_renderer_scheduler.h
[modify] https://crrev.com/d80c41e37b7570607f6f877961f487f7f24ae12e/third_party/WebKit/public/platform/scheduler/test/mock_renderer_scheduler.h

Project Member

Comment 12 by bugdroid1@chromium.org, Apr 26 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5ea78625e749782bff7e8009a66f90afa850ffbb

commit 5ea78625e749782bff7e8009a66f90afa850ffbb
Author: skyostil <skyostil@chromium.org>
Date: Wed Apr 26 18:43:07 2017

scheduler: Use PLATFORM_EXPORT instead of BLINK_PLATFORM_EXPORT

Since the scheduler classes don't need to be exposed to content, the
PLATFORM_EXPORT macro is more appropriate for controlling their
visibility.

BUG= 696001 , 701223 

Review-Url: https://codereview.chromium.org/2836853003
Cr-Commit-Position: refs/heads/master@{#467391}

[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/lazy_now.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/queueing_time_estimator.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/real_time_domain.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/task_queue.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager_delegate.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/task_queue_selector.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/task_time_observer.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/thread_load_tracker.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/time_domain.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/virtual_time_domain.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/work_queue.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/base/work_queue_sets.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/compositor_worker_scheduler.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/idle_canceled_delayed_task_sweeper.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/idle_helper.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/scheduler_helper.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/scheduler_tqm_delegate_impl.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/web_scheduler.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/webthread_impl_for_worker_scheduler.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/worker_global_scope_scheduler.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/worker_scheduler.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/child/worker_scheduler_impl.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/auto_advancing_virtual_time_domain.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/budget_pool.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/deadline_task_runner.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/idle_time_estimator.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/render_widget_signals.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/renderer_web_scheduler_impl.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/task_cost_estimator.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/throttled_time_domain.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/user_model.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.h
[modify] https://crrev.com/5ea78625e749782bff7e8009a66f90afa850ffbb/third_party/WebKit/Source/platform/scheduler/utility/webthread_impl_for_utility_thread.h

Project Member

Comment 13 by bugdroid1@chromium.org, May 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6b5d2e208a399b53facc7ab80fca62b35f427c46

commit 6b5d2e208a399b53facc7ab80fca62b35f427c46
Author: skyostil <skyostil@chromium.org>
Date: Tue May 02 12:03:09 2017

scheduler: Make virtual time expiration deterministic

Since the execution order of tasks across task queues is not
guaranteed[1], the task that controls the expiration of the virtual time
budget can run in a random order w.r.t. the tasks virtual time is
actually controlling. This patch makes the ordering deterministic by
using the control task queue (i.e., always the highest priority) to
reset the virtual time policy when the budget expires.

BUG= 696001 , 701223 

[1] https://codereview.chromium.org/2786083005/

Review-Url: https://codereview.chromium.org/2841463003
Cr-Commit-Position: refs/heads/master@{#468604}

[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler.h
[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.h
[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc
[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp
[modify] https://crrev.com/6b5d2e208a399b53facc7ab80fca62b35f427c46/third_party/WebKit/Source/web/InspectorEmulationAgent.h

Components: Internals>Headless
Project Member

Comment 15 by bugdroid1@chromium.org, Jun 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/255feb99a2941caa310d02b0af24e1936533021c

commit 255feb99a2941caa310d02b0af24e1936533021c
Author: alexclarke <alexclarke@chromium.org>
Date: Thu Jun 01 08:08:08 2017

Allow tasks scheduled for the instant virtual time budges expires to run

It feels strange that if a task is due to run at time t=1.0 and we gave
1s of virtual time budget that that task doesn't run.  This patch changes
that so the task will run by using a fence instead of disabling the queue.

BUG= 696001 

Review-Url: https://codereview.chromium.org/2909293002
Cr-Commit-Position: refs/heads/master@{#476225}

[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/content/browser/devtools/protocol/devtools_protocol_browsertest.cc
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.h
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/Source/platform/scheduler/test/fake_renderer_scheduler.cc
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/Source/web/tests/VirtualTimeTest.cpp
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/public/platform/scheduler/renderer/renderer_scheduler.h
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/public/platform/scheduler/test/fake_renderer_scheduler.h
[modify] https://crrev.com/255feb99a2941caa310d02b0af24e1936533021c/third_party/WebKit/public/platform/scheduler/test/mock_renderer_scheduler.h

Project Member

Comment 16 by bugdroid1@chromium.org, Jun 8 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311

commit cfd4fb5bd56f9e0f98668471a21f7f720cd5c311
Author: Alex Clarke <alexclarke@chromium.org>
Date: Thu Jun 08 10:26:12 2017

Pause virtual time until provisional navigations are committed

This is necessary for determinism.

Bug:  696001 
Change-Id: I3c2d3d24bbb510df73f31bb2d773839d35a93c6d
Reviewed-on: https://chromium-review.googlesource.com/522069
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Sami Kyöstilä <skyostil@chromium.org>
Commit-Queue: Alex Clarke <alexclarke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#477935}
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/headless/BUILD.gn
[add] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/headless/lib/virtual_time_browsertest.cc
[add] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/headless/test/data/virtual_time_test.html
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/core/loader/DocumentLoader.cpp
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/core/loader/FrameLoader.cpp
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/WebFrameScheduler.h
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.h
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/platform/scheduler/test/fake_renderer_scheduler.cc
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/web/LocalFrameClientImpl.cpp
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/Source/web/WebLocalFrameImpl.h
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/public/platform/scheduler/renderer/renderer_scheduler.h
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/public/platform/scheduler/test/fake_renderer_scheduler.h
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/public/platform/scheduler/test/mock_renderer_scheduler.h
[modify] https://crrev.com/cfd4fb5bd56f9e0f98668471a21f7f720cd5c311/third_party/WebKit/public/web/WebLocalFrame.h

Status: Fixed (was: Started)
I don't think we are planning any more specific determinism changes at this point. Note that page loading is still very much nondeterministic in various ways, but it seems good enough for our purposes at the moment.

Sign in to add a comment