Implement platform/loader functionalities that we proposed in the design doc: https://docs.google.com/a/chromium.org/document/d/1mf3pMcl4mvi8ew0h0KVAMVATQipNV3ERSp9WrtlPGrU/edit?usp=sharing
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/da14fb28cd3ccd701355b1e163e3d1d84ef2a73a commit da14fb28cd3ccd701355b1e163e3d1d84ef2a73a Author: Takashi Toyoshima <toyoshim@chromium.org> Date: Thu Jun 22 11:44:52 2017 Comment cleanup to follow the method renaming Because this patch was split from another CL of https://chromium-review.googlesource.com/c/525354/, this does not covers so many files, but just four; - FontResourceTest.cpp - Resource.h - ResourceFetcherTest.cpp - ResourceLoader.cpp BUG= 729953 Change-Id: I049941201ef2bcee7a32fda470f3d5d171632814 Reviewed-on: https://chromium-review.googlesource.com/544403 Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> Commit-Queue: Takashi Toyoshima <toyoshim@chromium.org> Cr-Commit-Position: refs/heads/master@{#481508} [modify] https://crrev.com/da14fb28cd3ccd701355b1e163e3d1d84ef2a73a/third_party/WebKit/Source/core/loader/resource/FontResourceTest.cpp [modify] https://crrev.com/da14fb28cd3ccd701355b1e163e3d1d84ef2a73a/third_party/WebKit/Source/platform/loader/fetch/Resource.h [modify] https://crrev.com/da14fb28cd3ccd701355b1e163e3d1d84ef2a73a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp [modify] https://crrev.com/da14fb28cd3ccd701355b1e163e3d1d84ef2a73a/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cde1b24dea0e95b2da254954f86a079c7522a80a commit cde1b24dea0e95b2da254954f86a079c7522a80a Author: Takashi Toyoshima <toyoshim@chromium.org> Date: Fri Jun 23 05:08:57 2017 Loading Dispatcher: Implement WebFrameScheduler::Observer interface This patch adds an Observer interface to WebFrameScheduler so that platform/loader can implement Blink scheduler backed throttling scheme. Observer will be notified when scheduler's throttling state is changed. Internally, this means the page visibility is changed to which the frame belongs. BUG= 729953 Change-Id: I851b153fef2e0c6ada748bee997bc1e69292e08d Reviewed-on: https://chromium-review.googlesource.com/525198 Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> Reviewed-by: Sami Kyöstilä <skyostil@chromium.org> Reviewed-by: Kunihiko Sakamoto <ksakamoto@chromium.org> Commit-Queue: Takashi Toyoshima <toyoshim@chromium.org> Cr-Commit-Position: refs/heads/master@{#481808} [modify] https://crrev.com/cde1b24dea0e95b2da254954f86a079c7522a80a/third_party/WebKit/Source/core/loader/EmptyClients.cpp [modify] https://crrev.com/cde1b24dea0e95b2da254954f86a079c7522a80a/third_party/WebKit/Source/platform/WebFrameScheduler.h [modify] https://crrev.com/cde1b24dea0e95b2da254954f86a079c7522a80a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc [modify] https://crrev.com/cde1b24dea0e95b2da254954f86a079c7522a80a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h [modify] https://crrev.com/cde1b24dea0e95b2da254954f86a079c7522a80a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl_unittest.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/11bf2c457dacb04bcfbd93569eb3972a6dfc868e commit 11bf2c457dacb04bcfbd93569eb3972a6dfc868e Author: Takashi Toyoshima <toyoshim@chromium.org> Date: Thu Jun 29 12:37:32 2017 Loading Dispatcher: Implement ResourceLoadScheduler This patch introduces ResourceLoadScheduler and implements basic functionalities to enqueue all incoming requests, and schedule them when the loader has an available budget. Now the ResourceLoadScheduler intercepts all incoming requests, but it still does not change any actual behaviors. BUG= 729953 Change-Id: Id7eea1606dd3c7f9a6e1c3020b9f921e4c733b3e Reviewed-on: https://chromium-review.googlesource.com/525354 Reviewed-by: Takeshi Yoshino <tyoshino@chromium.org> Reviewed-by: Yutaka Hirano <yhirano@chromium.org> Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> Reviewed-by: Kunihiko Sakamoto <ksakamoto@chromium.org> Commit-Queue: Takashi Toyoshima <toyoshim@chromium.org> Cr-Commit-Position: refs/heads/master@{#483336} [modify] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/core/frame/SubresourceIntegrityTest.cpp [modify] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/platform/loader/BUILD.gn [modify] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp [modify] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.h [add] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadScheduler.cpp [add] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadScheduler.h [add] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadSchedulerTest.cpp [modify] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp [modify] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.h [modify] https://crrev.com/11bf2c457dacb04bcfbd93569eb3972a6dfc868e/third_party/WebKit/Source/platform/loader/fetch/ResourceLoaderTest.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/512b8458fc305dac983fcbf1f1a55b4bda74ed69 commit 512b8458fc305dac983fcbf1f1a55b4bda74ed69 Author: Takashi Toyoshima <toyoshim@chromium.org> Date: Fri Jul 07 08:12:54 2017 Loading Dispatcher: Enable behind the experimental-webplatform-features flag This patch plumb WebFrameScheduler to ResourceLoadScheduler so that it can limit running request numbers when the frame is in a throttled state. With this patch, Loading Dispatcher can work behind the experimental-webplatform-features flag. Bug: 729953 Change-Id: I44cf8028b9b14cb7bdbac37baf004854ef6e2739 Reviewed-on: https://chromium-review.googlesource.com/555190 Reviewed-by: Yutaka Hirano <yhirano@chromium.org> Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> Reviewed-by: Kunihiko Sakamoto <ksakamoto@chromium.org> Commit-Queue: Takashi Toyoshima <toyoshim@chromium.org> Cr-Commit-Position: refs/heads/master@{#484856} [modify] https://crrev.com/512b8458fc305dac983fcbf1f1a55b4bda74ed69/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp [modify] https://crrev.com/512b8458fc305dac983fcbf1f1a55b4bda74ed69/third_party/WebKit/Source/core/loader/FrameFetchContext.h [modify] https://crrev.com/512b8458fc305dac983fcbf1f1a55b4bda74ed69/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5 [modify] https://crrev.com/512b8458fc305dac983fcbf1f1a55b4bda74ed69/third_party/WebKit/Source/platform/loader/fetch/FetchContext.h [modify] https://crrev.com/512b8458fc305dac983fcbf1f1a55b4bda74ed69/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp [modify] https://crrev.com/512b8458fc305dac983fcbf1f1a55b4bda74ed69/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadScheduler.cpp [modify] https://crrev.com/512b8458fc305dac983fcbf1f1a55b4bda74ed69/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadScheduler.h [modify] https://crrev.com/512b8458fc305dac983fcbf1f1a55b4bda74ed69/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadSchedulerTest.cpp [modify] https://crrev.com/512b8458fc305dac983fcbf1f1a55b4bda74ed69/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1 commit 8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1 Author: Takashi Toyoshima <toyoshim@chromium.org> Date: Tue Jul 11 08:22:29 2017 Loading Dispatcher: plumb field trial parameters This patch introduces a field trial for the ResourceLoadScheduler and makes the feature configurable through chrome://flags and field trial parameters. Bug: 729953 Change-Id: Id8619ad8979669748e94a9988c0a46ef6a318726 Reviewed-on: https://chromium-review.googlesource.com/558902 Commit-Queue: Takashi Toyoshima <toyoshim@chromium.org> Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> Reviewed-by: Yutaka Hirano <yhirano@chromium.org> Cr-Commit-Position: refs/heads/master@{#485552} [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/chrome/browser/about_flags.cc [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/chrome/browser/flag_descriptions.cc [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/chrome/browser/flag_descriptions.h [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/content/child/runtime_features.cc [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/content/public/common/content_features.cc [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/content/public/common/content_features.h [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/third_party/WebKit/Source/platform/exported/WebRuntimeFeatures.cpp [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/third_party/WebKit/Source/platform/loader/DEPS [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadScheduler.cpp [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadScheduler.h [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/third_party/WebKit/public/platform/WebRuntimeFeatures.h [modify] https://crrev.com/8a7fd954d2b1576a75ec917c9fd9e7e9360ef4e1/tools/metrics/histograms/enums.xml
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/50255df198a424b455e391a401ace88bc4f36486 commit 50255df198a424b455e391a401ace88bc4f36486 Author: Takashi Toyoshima <toyoshim@chromium.org> Date: Wed Jul 12 07:46:01 2017 MockFetchContext: provide a mocked WebFrameScheduler Now that ResourceLoadScheduler depends on WebFrameScheduler, and it is useful to enable ResourceLoadScheduler even on platform unit tests, let's introduce a simple mocked WebFrameScheduler that allows calling MockFetchContext::GetFrameScheduler(), and use it to call {Add|Remove}ThrottlingObserver() for testing. This also makes it possible to remove the test-only purposed GetTaskRunner() method from the MockFetchContext, and makes FetchTestingPlatformSupport consistent in terms of Blink scheduler. Bug: 729953 Change-Id: Ib5ab2ad1c5b6ce2b4267667ad0b0cacbb1cc8f17 Reviewed-on: https://chromium-review.googlesource.com/563216 Commit-Queue: Takashi Toyoshima <toyoshim@chromium.org> Reviewed-by: Yutaka Hirano <yhirano@chromium.org> Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> Cr-Commit-Position: refs/heads/master@{#485891} [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/core/frame/SubresourceIntegrityTest.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/core/loader/modulescript/ModuleScriptLoaderTest.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/core/loader/resource/FontResourceTest.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/platform/loader/fetch/MemoryCacheCorrectnessTest.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.h [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcherTest.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadScheduler.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadScheduler.h [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/platform/loader/fetch/ResourceLoadSchedulerTest.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/platform/loader/fetch/ResourceLoaderTest.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/platform/loader/testing/FetchTestingPlatformSupport.cpp [modify] https://crrev.com/50255df198a424b455e391a401ace88bc4f36486/third_party/WebKit/Source/platform/loader/testing/MockFetchContext.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/3728f6a4b86dd9932200820daa0a897d8f8dc958 commit 3728f6a4b86dd9932200820daa0a897d8f8dc958 Author: Takashi Toyoshima <toyoshim@chromium.org> Date: Thu Jul 13 08:27:45 2017 Loading Dispatcher: defers loading supports on throttled requests Current implementation does not support defers loading correctly when the defers flag is updated when the request is in the pending queue due to a throttling. Bug: 729953 Change-Id: I177b8b341c7f74f699c83502db6963eaa0a6be41 Reviewed-on: https://chromium-review.googlesource.com/558533 Reviewed-by: Yutaka Hirano <yhirano@chromium.org> Reviewed-by: Kinuko Yasuda <kinuko@chromium.org> Commit-Queue: Takashi Toyoshima <toyoshim@chromium.org> Cr-Commit-Position: refs/heads/master@{#486319} [modify] https://crrev.com/3728f6a4b86dd9932200820daa0a897d8f8dc958/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp [modify] https://crrev.com/3728f6a4b86dd9932200820daa0a897d8f8dc958/third_party/WebKit/Source/platform/loader/fetch/ResourceLoader.cpp
Comment 1 by toyoshim@chromium.org
, Jun 6 2017