New issue
Advanced search Search tips

Issue 797979 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug


Sign in to add a comment

Add functionality to allow pausing of page loads

Project Member Reported by ryansturm@chromium.org, Dec 28 2017

Issue description

Pausing a page load or frame is critical to a few ongoing projects.

Ideally, the resource scheduler within blink should be able to pause page loads WRT any of the following: javascript running, downloading more request data, or rendering new content. This mechanism should be exposed in the browser process for now as well as directly in the renderer process.

From the browser process, calling pause with appropriate parameters on a frame should pause all child frames including out of process frames. This should only send one mojo message per renderer process affected.
 
Blocking: 797980
Ryan, please update status if you have started this.
Refreshed during triage. Any updates?
Status: Started (was: Assigned)
This has been underway for a while, and we are still trying to get consensus around the right approach: https://chromium-review.googlesource.com/c/chromium/src/+/956224
Blocking: 797977
Blocking: 797981
Blocking: 797987
Blocking: 797988
Blocking: 797989
Blocking: 835895
Blocking: 840399
Project Member

Comment 12 by bugdroid1@chromium.org, May 31 2018

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

commit c65dbe40c4b7f9387d8b8634c53b7f366a49ccde
Author: Ryan Sturm <ryansturm@chromium.org>
Date: Thu May 31 20:37:04 2018

Adding a resouce loading pausing mechanism

This mechanism is plumbed from the browser UI thread (WebContents) to
platform/scheduler/main_thread/frame_scheduler_impl.cc. The goal is
to allow user pausing of resources on pages that use a lot of data.

A message is plumbed to LocalFrame, which takes an RAII handle in the
frame scheduler to prevent loading resources until the handle is
released.

Bug:  797979 
Change-Id: I3811daa475ba19a447fc1d136b3de2ceb3219bf1
Reviewed-on: https://chromium-review.googlesource.com/956224
Commit-Queue: Ryan Sturm <ryansturm@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Tarun Bansal <tbansal@chromium.org>
Reviewed-by: Evan Stade <estade@chromium.org>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Reviewed-by: Takashi Toyoshima <toyoshim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563370}
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/browser/chrome_content_renderer_manifest_overlay.json
[add] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/browser/data_use_measurement/page_load_capping/page_load_capping_browsertest.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/browser/data_use_measurement/page_load_capping/page_load_capping_infobar_delegate.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/browser/data_use_measurement/page_load_capping/page_load_capping_infobar_delegate.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/browser/data_use_measurement/page_load_capping/page_load_capping_infobar_delegate_unittest.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/browser/infobars/infobars_browsertest.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/browser/page_load_metrics/observers/page_capping_page_load_metrics_observer.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/browser/page_load_metrics/observers/page_capping_page_load_metrics_observer.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/browser/page_load_metrics/observers/page_capping_page_load_metrics_observer_unittest.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/test/BUILD.gn
[add] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/test/data/data_use_measurement/image.png
[add] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/chrome/test/data/data_use_measurement/page_capping.html
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/content/browser/frame_host/render_frame_host_impl.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/content/browser/web_contents/web_contents_impl.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/content/browser/web_contents/web_contents_impl.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/content/public/browser/render_frame_host.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/content/public/browser/web_contents.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/content/public/test/web_contents_tester.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/content/test/test_web_contents.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/content/test/test_web_contents.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/public/mojom/BUILD.gn
[add] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/public/mojom/loader/pause_subresource_loading_handle.mojom
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/controller/blink_initializer.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/core/frame/local_frame.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/core/frame/local_frame.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/core/loader/document_loader.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/platform/scheduler/BUILD.gn
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h
[modify] https://crrev.com/c65dbe40c4b7f9387d8b8634c53b7f366a49ccde/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h

Project Member

Comment 13 by bugdroid1@chromium.org, Jun 4 2018

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

commit e26b69291606c33e57571d61fb0d6695ce773ea4
Author: Dominic Battre <battre@chromium.org>
Date: Mon Jun 04 11:33:02 2018

Disable PageLoadCappingBrowserTest.PageLoadCappingBlocksLoads

TBR=ryansturm@chromium.org

Bug:  848675 , 797979 
Change-Id: Id894cc74258c4f9cd08c2566f3e81f400920dede
Reviewed-on: https://chromium-review.googlesource.com/1084832
Reviewed-by: Dominic Battré <battre@chromium.org>
Commit-Queue: Dominic Battré <battre@chromium.org>
Cr-Commit-Position: refs/heads/master@{#564058}
[modify] https://crrev.com/e26b69291606c33e57571d61fb0d6695ce773ea4/chrome/browser/data_use_measurement/page_load_capping/page_load_capping_browsertest.cc

Status: Fixed (was: Started)

Sign in to add a comment