New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 730098 link

Starred by 6 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Dec 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 1
Type: Feature

Blocked on:
issue 743314
issue 749789
issue 762133

Blocking:
issue 751210



Sign in to add a comment

Improve background tab opening experience

Project Member Reported by zh...@chromium.org, Jun 6 2017

Issue description

This project tries improve users' experience when they open large collections of tabs in the background while continuing to work in another foreground tab, so a user's experience with foreground tab is not affected by too many tabs being opened in the background.

Design doc:
https://docs.google.com/document/d/1_CS5kcY00CE3pzDTtW5Ny221gWfk4mFXYGiezoYSCBI/
 

Comment 1 by zh...@chromium.org, Jun 7 2017

Labels: labelHotlist-GRC

Comment 2 by zh...@chromium.org, Jun 7 2017

Labels: -labelHotlist-GRC Hotlist-GRC
Project Member

Comment 3 by bugdroid1@chromium.org, Jun 14 2017

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

commit 36cd3153a788c9cb0ccfce928d5aef91504acc95
Author: lpy <lpy@chromium.org>
Date: Wed Jun 14 23:24:22 2017

Create NetworkQuietDetector.

This patch implements network quiet detection associated to Document, it
observes active network connection, and signals network quiet signal to GRC
when there are no more than 2 connections in 1 second.

We want to eventually make FMPDetector use NetworkQuietDetector, but we split
the patch to make sure the network quiet signal won't be affected on the merge,
and vice versa. Follow-up patches will decouple the network quiet detection from
FMPDetector, and make FMPDetector as a client of NetworkQuietDetector.

BUG= 730098 

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

[modify] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/services/resource_coordinator/coordination_unit/coordination_unit_impl.cc
[modify] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/services/resource_coordinator/coordination_unit/coordination_unit_impl.h
[modify] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/services/resource_coordinator/public/interfaces/events.mojom
[modify] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/third_party/WebKit/Source/core/BUILD.gn
[modify] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/third_party/WebKit/Source/core/frame/LocalFrame.h
[modify] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/third_party/WebKit/Source/core/loader/BUILD.gn
[modify] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
[add] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/third_party/WebKit/Source/core/loader/NetworkQuietDetector.cpp
[add] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/third_party/WebKit/Source/core/loader/NetworkQuietDetector.h
[add] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/third_party/WebKit/Source/core/loader/NetworkQuietDetectorTest.cpp
[modify] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/third_party/WebKit/Source/platform/instrumentation/resource_coordinator/FrameResourceCoordinator.cpp
[modify] https://crrev.com/36cd3153a788c9cb0ccfce928d5aef91504acc95/third_party/WebKit/Source/platform/instrumentation/resource_coordinator/FrameResourceCoordinator.h

Project Member

Comment 4 by bugdroid1@chromium.org, Jul 12 2017

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

commit 6edd49c516047daa73d069c600bf9b2a09493bb7
Author: zhenw <zhenw@chromium.org>
Date: Wed Jul 12 05:49:45 2017

[TooManyTabs] Add TabNavigationThrottle

This is the 1st CL for staggered background tab opening feature. It adds
TabNavigationThrottle, which plumbs navigation information into
TabManager and enables TabManager to defer navigation for background
tabs. This CL uses a simple algorithm, which defers background tab's
navigation when some tab is loading. After a tab finishes loading, it
will resume another pending navigation. TabManager will also resume a
pending navigation when a background tab is selected.

This feature is currently implemented behind a flag. This feature will
not be enabled until the corresponding metrics are ready.

This CL focuses on plumbing navigation into TabManager. The actual
algorithm to delay background tab opening is simple. But it should be
fine because the whole feature is behind a flag right now. There will be
follow-up CLs to consider system resources and refine the algorithm.

Design doc:
https://docs.google.com/document/d/1_CS5kcY00CE3pzDTtW5Ny221gWfk4mFXYGiezoYSCBI/

BUG= 730098 

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

[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/BUILD.gn
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/chrome_content_browser_client.cc
[add] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/resource_coordinator/background_tab_navigation_throttle.cc
[add] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/resource_coordinator/background_tab_navigation_throttle.h
[add] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/resource_coordinator/background_tab_navigation_throttle_unittest.cc
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/resource_coordinator/tab_manager.h
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/resource_coordinator/tab_manager_unittest.cc
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/resource_coordinator/tab_manager_web_contents_data.cc
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/browser/resource_coordinator/tab_manager_web_contents_data.h
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/common/chrome_features.cc
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/common/chrome_features.h
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/chrome/test/BUILD.gn
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/content/browser/web_contents/web_contents_impl.cc
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/content/browser/web_contents/web_contents_impl.h
[modify] https://crrev.com/6edd49c516047daa73d069c600bf9b2a09493bb7/content/public/browser/web_contents.h

Project Member

Comment 5 by bugdroid1@chromium.org, Jul 14 2017

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

commit 6fa50ab2bba7015d831126feb85772259cc7234e
Author: Peiyong Lin <lpy@chromium.org>
Date: Fri Jul 14 20:52:37 2017

[GRC] Implement TabDoneLoading signal.

This patch creates GRC TabSignalObserver for TabManager to get tab scoped
signals from GRC, implements TabDoneLoading signal and eventually sends it to
TabManager::WebContentsData, and changes network idle signal to be persisted.

TBR=japhet@chromium.org
BUG= 730098 

Change-Id: I5ba9be4365cc79b0d1e6f19e44ec93eeaf0408ee
Reviewed-on: https://chromium-review.googlesource.com/563832
Commit-Queue: lpy <lpy@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Zhen Wang <zhenw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486880}
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/chrome/browser/BUILD.gn
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/chrome/browser/resource_coordinator/tab_manager.h
[add] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/chrome/browser/resource_coordinator/tab_manager_grc_tab_signal_observer.cc
[add] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/chrome/browser/resource_coordinator/tab_manager_grc_tab_signal_observer.h
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/chrome/browser/resource_coordinator/tab_manager_web_contents_data.h
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/BUILD.gn
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/coordination_unit/coordination_unit_impl.cc
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/coordination_unit/coordination_unit_impl.h
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/coordination_unit/frame_coordination_unit_impl.cc
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/coordination_unit/frame_coordination_unit_impl.h
[delete] https://crrev.com/29f9d1d7763279293687e05105638db69a67ed4c/services/resource_coordinator/coordination_unit/tab_signal_generator.cc
[delete] https://crrev.com/29f9d1d7763279293687e05105638db69a67ed4c/services/resource_coordinator/coordination_unit/tab_signal_generator.h
[add] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/coordination_unit/tab_signal_generator_impl.cc
[add] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/coordination_unit/tab_signal_generator_impl.h
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/manifest.json
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/public/cpp/coordination_unit_id.h
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/public/cpp/resource_coordinator_features.cc
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/public/cpp/resource_coordinator_features.h
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/public/cpp/resource_coordinator_interface.cc
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/public/cpp/resource_coordinator_interface.h
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/public/interfaces/BUILD.gn
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/public/interfaces/coordination_unit.mojom
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/public/interfaces/events.mojom
[add] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/public/interfaces/tab_signal.mojom
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/services/resource_coordinator/resource_coordinator_service.cc
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/third_party/WebKit/Source/core/loader/NetworkQuietDetector.cpp
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/third_party/WebKit/Source/platform/instrumentation/resource_coordinator/FrameResourceCoordinator.cpp
[modify] https://crrev.com/6fa50ab2bba7015d831126feb85772259cc7234e/third_party/WebKit/Source/platform/instrumentation/resource_coordinator/FrameResourceCoordinator.h

Comment 6 by zh...@chromium.org, Jul 17 2017

Blockedon: 743314

Comment 7 by zh...@chromium.org, Jul 17 2017

Now TabManager has the basic capability of controlling background tabs' loading. Current behavior is to just load 1 background tab at a time and start to load the next background tab when a previous one finishes loading. We will need to improve it. Here I list a few ideas. We can definitely add more here.

1. Switch to use the tab done loading signal when it is ready.
2. Try to set the favicon and title from history service if a tab's navigation is delayed.
3. Support treating URLs differently. For example, always delay chrome:// and NTP tabs. Only load them when visible.
4. Support multiple tab loading modes. For example, under memory pressure, TabManager will defer all pending loads (none will load unless foregrounded by the user) until memory pressure has passed.
5. Timeout support. We cannot wait for the page loading forever if the page gets stuck somehow, We will need a timeout to continue loading the next page.
6. Support "loading slots". Limit the number of tabs that can load simultaneously, deferring others until loading slots are free. We can set current number of slots to be 1, i.e., only 1 background tab is loading. But we could relax this easily if needed with loading slots.
7. Configurable by user. This allows power user to disable this feature.

Comment 8 by zh...@chromium.org, Jul 17 2017

Labels: -Pri-2 Pri-1
Changing this to Pri-1 as this is actively worked on and is a feature wanted in short term.

Comment 9 by zh...@chromium.org, Jul 20 2017

I am looking at how to set icons and titles. But I am not sure if we should set it based on information from history service. The background tabs already have a loading circle and text "Loading..." on the tab. Would changing the UI require any permission?

I attached a screenshot of what it currently looks like with staggered background tab opening.
cnn_tabs.png
19.0 KB View Download
Project Member

Comment 10 by bugdroid1@chromium.org, Jul 21 2017

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

commit 4af5a8646e7a71978cf5e00dd62c4ab8926eaf10
Author: Zhen Wang <zhenw@chromium.org>
Date: Fri Jul 21 18:04:39 2017

Add timeout support to staggered background tab opening

Add timeout to force load the next background tab after the timer expires.

Bug:  730098 
Change-Id: I6cbb26288a02fdd61ece85e42c3106fa8e20a33b
Reviewed-on: https://chromium-review.googlesource.com/580188
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488704}
[modify] https://crrev.com/4af5a8646e7a71978cf5e00dd62c4ab8926eaf10/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/4af5a8646e7a71978cf5e00dd62c4ab8926eaf10/chrome/browser/resource_coordinator/tab_manager.h
[modify] https://crrev.com/4af5a8646e7a71978cf5e00dd62c4ab8926eaf10/chrome/browser/resource_coordinator/tab_manager_unittest.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Jul 27 2017

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

commit 700d01a85c01dafab99da154d7480eac1a0d2bf0
Author: Zhen Wang <zhenw@chromium.org>
Date: Thu Jul 27 17:13:08 2017

Add loading slots to TabManager for background tab opening

This CL adds loading slots to TabManager to control how many background tabs
can load in parallel. There is one loading slot currently.

Bug:  730098 
Change-Id: I3748356c1f46cf553c9e6b0f04f970efc572602a
Reviewed-on: https://chromium-review.googlesource.com/587434
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489996}
[modify] https://crrev.com/700d01a85c01dafab99da154d7480eac1a0d2bf0/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/700d01a85c01dafab99da154d7480eac1a0d2bf0/chrome/browser/resource_coordinator/tab_manager.h
[modify] https://crrev.com/700d01a85c01dafab99da154d7480eac1a0d2bf0/chrome/browser/resource_coordinator/tab_manager_unittest.cc

Comment 12 by zh...@chromium.org, Jul 28 2017

Blockedon: 749789
Project Member

Comment 13 by bugdroid1@chromium.org, Jul 31 2017

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

commit a1506da71baf1fa9da8580fe5357a373c8d8eff0
Author: Zhen Wang <zhenw@chromium.org>
Date: Mon Jul 31 05:10:00 2017

Defer loading internal pages for background tabs

Internal pages are deferred to load after other pages.

Bug:  730098 
Change-Id: I3b8f2dbbb1d7e2e4d858750432597e882ef60b9f
Reviewed-on: https://chromium-review.googlesource.com/585241
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Cr-Commit-Position: refs/heads/master@{#490710}
[modify] https://crrev.com/a1506da71baf1fa9da8580fe5357a373c8d8eff0/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/a1506da71baf1fa9da8580fe5357a373c8d8eff0/chrome/browser/resource_coordinator/tab_manager.h
[modify] https://crrev.com/a1506da71baf1fa9da8580fe5357a373c8d8eff0/chrome/browser/resource_coordinator/tab_manager_unittest.cc

Project Member

Comment 14 by bugdroid1@chromium.org, Aug 1 2017

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

commit 1188b63121cd08fe3120d84de55f34b9b15ecfde
Author: Zhen Wang <zhenw@chromium.org>
Date: Tue Aug 01 17:55:50 2017

Add BackgroundTabLoadingMode to TabManager

This CL adds BackgroundTabLoadingMode to TabManager. So TabManager can pause
loading background tabs when memory pressure gets critical.

Bug:  730098 
Change-Id: I1add97d91b9bb9abeeb3b483046da310ba9abff9
Reviewed-on: https://chromium-review.googlesource.com/585212
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491049}
[modify] https://crrev.com/1188b63121cd08fe3120d84de55f34b9b15ecfde/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/1188b63121cd08fe3120d84de55f34b9b15ecfde/chrome/browser/resource_coordinator/tab_manager.h
[modify] https://crrev.com/1188b63121cd08fe3120d84de55f34b9b15ecfde/chrome/browser/resource_coordinator/tab_manager_unittest.cc

Blocking: 751210
Cc: ojan@chromium.org
Project Member

Comment 17 by bugdroid1@chromium.org, Aug 11 2017

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

commit 25794689bb4687ce8cff08dd6e17ae70bea1751d
Author: Zhen Wang <zhenw@chromium.org>
Date: Fri Aug 11 17:48:57 2017

Add feature to control the experiment of staggered background tab open

This CL:
1. adds StaggeredBackgroundTabOpenExperiment feature;
2. adds TabManager::IsLoadingBackgroundTabs.

Existing StaggeredBackgroundTabOpen feature is not enough. Because when StaggeredBackgroundTabOpen is disabled, the navigation throttle is not created. Then navigation information would not be sent to TabManager, so TabManager cannot know when it starts/stops loading background tabs.

StaggeredBackgroundTabOpenExperiment is enabled by default. In a control group of the finch experiment, this feature will be disabled, so background tabs will not be delayed to open. This will be the control group in the finch experiment.

For detailed finch config, see cl/164193200

Bug:  730098 ,751210
Change-Id: I33ae0565a3d622240d93673c9775c1a514300300
Reviewed-on: https://chromium-review.googlesource.com/597315
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Reviewed-by: Fadi Meawad <fmeawad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#493793}
[modify] https://crrev.com/25794689bb4687ce8cff08dd6e17ae70bea1751d/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/25794689bb4687ce8cff08dd6e17ae70bea1751d/chrome/browser/resource_coordinator/tab_manager.h
[modify] https://crrev.com/25794689bb4687ce8cff08dd6e17ae70bea1751d/chrome/browser/resource_coordinator/tab_manager_unittest.cc
[modify] https://crrev.com/25794689bb4687ce8cff08dd6e17ae70bea1751d/chrome/common/chrome_features.cc
[modify] https://crrev.com/25794689bb4687ce8cff08dd6e17ae70bea1751d/chrome/common/chrome_features.h

Project Member

Comment 18 by bugdroid1@chromium.org, Aug 30 2017

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

commit a19a4e098a4c1fb019f0ade434dc116202bc7795
Author: Zhen Wang <zhenw@chromium.org>
Date: Wed Aug 30 01:19:25 2017

Define background tab opening session and record metrics

This CL defines background tab opening session, which is the duration from the 
time when the browser starts to load background tabs until the time when browser 
has finished loading those tabs. During the session, the session can end when 
background tabs' loading are paused due to memory pressure. A new session starts 
when background tabs' loading resume when memory pressure returns to normal.

Along with the session definition, this CL updates the feature name to 
StaggeredBackgroundTabOpening.

This CL also updates swap metrics collection code due to the above session 
definition.


Bug:  730098 ,751210
Change-Id: I1bf6f7a4036a68ce5417bdaeee85327ec9514f86
Reviewed-on: https://chromium-review.googlesource.com/606736
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Reviewed-by: Mark Pearson <mpearson@chromium.org>
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Reviewed-by: Fadi Meawad <fmeawad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#498329}
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/browser/resource_coordinator/background_tab_navigation_throttle.cc
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/browser/resource_coordinator/background_tab_navigation_throttle_unittest.cc
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/browser/resource_coordinator/tab_manager.h
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/browser/resource_coordinator/tab_manager_stats_collector.cc
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/browser/resource_coordinator/tab_manager_stats_collector.h
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/browser/resource_coordinator/tab_manager_stats_collector_unittest.cc
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/browser/resource_coordinator/tab_manager_unittest.cc
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/common/chrome_features.cc
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/chrome/common/chrome_features.h
[modify] https://crrev.com/a19a4e098a4c1fb019f0ade434dc116202bc7795/tools/metrics/histograms/histograms.xml

Project Member

Comment 19 by bugdroid1@chromium.org, Aug 31 2017

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

commit 735aa542f29fcb275781e927d4307b0381e2766c
Author: Zhen Wang <zhenw@chromium.org>
Date: Thu Aug 31 02:35:06 2017

Add tab count and overlap session statistics for staggered background tab opening

This CL adds tab count and overlap session statistics for staggered background tab opening feature.

Bug:  730098 ,751210
Change-Id: I91f55f894d37eba77e6f1d97dc910880c093f347
Reviewed-on: https://chromium-review.googlesource.com/610835
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Reviewed-by: Mark Pearson <mpearson@chromium.org>
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Reviewed-by: Fadi Meawad <fmeawad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#498734}
[modify] https://crrev.com/735aa542f29fcb275781e927d4307b0381e2766c/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/735aa542f29fcb275781e927d4307b0381e2766c/chrome/browser/resource_coordinator/tab_manager_stats_collector.cc
[modify] https://crrev.com/735aa542f29fcb275781e927d4307b0381e2766c/chrome/browser/resource_coordinator/tab_manager_stats_collector.h
[modify] https://crrev.com/735aa542f29fcb275781e927d4307b0381e2766c/chrome/browser/resource_coordinator/tab_manager_stats_collector_unittest.cc
[modify] https://crrev.com/735aa542f29fcb275781e927d4307b0381e2766c/tools/metrics/histograms/enums.xml
[modify] https://crrev.com/735aa542f29fcb275781e927d4307b0381e2766c/tools/metrics/histograms/histograms.xml

Labels: -Hotlist-GRC Hotlist-TooManyTabs
Labels: -OS-All OS-Linux OS-Mac OS-Windows
Labels: OS-Chrome
Blockedon: 762133
Project Member

Comment 24 by bugdroid1@chromium.org, Oct 5 2017

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

commit 6161e912bd613a6487e12410344cff99ba994db4
Author: Peiyong Lin <lpy@chromium.org>
Date: Thu Oct 05 17:10:25 2017

Merge network idleness signal with Performance Monitor.

Previously we have a dedicated detector to detect network idleness signal and
send it to services/resource_coordinator, however, it uses a timer, thus it
can't handle cases like, if a task is being processed for a long time, network
requests won't be able to be fired, thus when the task is finished processing
the network idleness signal will be fired before network requests are fired,
which results in inaccurate network idleness signal.

So, in this patch, we excluded task processing time in network idle time
accumulation, and merged Performance Monitor life cycle report into the current
detector.

Minor: renamed kNetworkIdle to kNetworkAlmostIdle, renamed class/file name to
IdlenessDetector.

BUG= 730098 ,  749789 

Change-Id: Ied003129cd5ddf7c1ebb93019723e11e9a31be04
Reviewed-on: https://chromium-review.googlesource.com/664094
Commit-Queue: lpy <lpy@chromium.org>
Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Zhen Wang <zhenw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506773}
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/services/resource_coordinator/observers/tab_signal_generator_impl.cc
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/services/resource_coordinator/public/interfaces/signals.mojom
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/BUILD.gn
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/dom/Document.cpp
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/frame/LocalFrame.cpp
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/frame/LocalFrame.h
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/frame/PerformanceMonitor.cpp
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/frame/PerformanceMonitor.h
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/loader/BUILD.gn
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
[add] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/loader/IdlenessDetector.cpp
[add] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/loader/IdlenessDetector.h
[add] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/loader/IdlenessDetectorTest.cpp
[delete] https://crrev.com/c10b27b49c452d8bd72bdbb9bb1a406bfeb3b919/third_party/WebKit/Source/core/loader/NetworkQuietDetector.cpp
[delete] https://crrev.com/c10b27b49c452d8bd72bdbb9bb1a406bfeb3b919/third_party/WebKit/Source/core/loader/NetworkQuietDetector.h
[delete] https://crrev.com/c10b27b49c452d8bd72bdbb9bb1a406bfeb3b919/third_party/WebKit/Source/core/loader/NetworkQuietDetectorTest.cpp
[modify] https://crrev.com/6161e912bd613a6487e12410344cff99ba994db4/third_party/WebKit/Source/core/probe/CoreProbes.json5

Project Member

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

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

commit 1ad4b66f825959ff6972cd54fde27834b31f60b5
Author: Zhen Wang <zhenw@chromium.org>
Date: Wed Oct 11 21:26:43 2017

Add trace events for staggered background tab opening

This CL adds trace events for staggered background tab opening feature for
easier debugging.

Bug:  762775 , 730098 ,751210
Change-Id: Iccedbd8e5b6be8eb1ad9ca6a9f979124c741c91c
Reviewed-on: https://chromium-review.googlesource.com/706676
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Reviewed-by: oysteine <oysteine@chromium.org>
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508121}
[modify] https://crrev.com/1ad4b66f825959ff6972cd54fde27834b31f60b5/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/1ad4b66f825959ff6972cd54fde27834b31f60b5/chrome/browser/resource_coordinator/tab_manager.h

Project Member

Comment 26 by bugdroid1@chromium.org, Oct 13 2017

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

commit ce94e240140c65613eaa1a3d65c2a063206076db
Author: Zhen Wang <zhenw@chromium.org>
Date: Fri Oct 13 00:46:22 2017

Record UKM metrics for staggered background tab opening

Staggered background tab opening targets a specific use case where it shows more
benefit when more background tabs are opening simultaneously in the background.
UMA cannot easily satisfy the need of connecting metric results to the number of
background tabs that are loading. Therefore, this CL records the metrics in UKM.

Command for testing:
./out/Release/chrome --enable-features=StaggeredBackgroundTabOpening,StaggeredBackgroundTabOpeningExperiment --force-enable-metrics-reporting

TBR=chrisha@chromium.org

Bug:  730098 ,751210
Change-Id: If12877cc24d42829d63ff79c8289dd9cd55c6210
Reviewed-on: https://chromium-review.googlesource.com/676503
Reviewed-by: Zhen Wang <zhenw@chromium.org>
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Reviewed-by: Fadi Meawad <fmeawad@chromium.org>
Reviewed-by: Steven Holte <holte@chromium.org>
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508569}
[modify] https://crrev.com/ce94e240140c65613eaa1a3d65c2a063206076db/chrome/browser/resource_coordinator/resource_coordinator_web_contents_observer.h
[modify] https://crrev.com/ce94e240140c65613eaa1a3d65c2a063206076db/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/ce94e240140c65613eaa1a3d65c2a063206076db/chrome/browser/resource_coordinator/tab_manager.h
[modify] https://crrev.com/ce94e240140c65613eaa1a3d65c2a063206076db/chrome/browser/resource_coordinator/tab_manager_stats_collector.cc
[modify] https://crrev.com/ce94e240140c65613eaa1a3d65c2a063206076db/chrome/browser/resource_coordinator/tab_manager_stats_collector.h
[modify] https://crrev.com/ce94e240140c65613eaa1a3d65c2a063206076db/tools/metrics/ukm/ukm.xml

Project Member

Comment 27 by bugdroid1@chromium.org, Oct 13 2017

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

commit e3c626d533117868a56d7bde40f3d3579cc3bce0
Author: Zhen Wang <zhenw@chromium.org>
Date: Fri Oct 13 22:08:29 2017

Update metrics descriptions for staggered background tab opening

This CL updates the UMA and UKM descriptions for staggered background tab
opening related metrics/events. It skips referencing memory pressure in the
definition of the background tab opening session.

Bug:  730098 ,751210
Change-Id: I022bf56a4c431271c59650f75fd3e0583bd785f9
Reviewed-on: https://chromium-review.googlesource.com/719242
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Reviewed-by: Steven Holte <holte@chromium.org>
Reviewed-by: Fadi Meawad <fmeawad@chromium.org>
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508838}
[modify] https://crrev.com/e3c626d533117868a56d7bde40f3d3579cc3bce0/tools/metrics/histograms/histograms.xml
[modify] https://crrev.com/e3c626d533117868a56d7bde40f3d3579cc3bce0/tools/metrics/ukm/ukm.xml

Project Member

Comment 28 by bugdroid1@chromium.org, Oct 17 2017

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

commit 3b5422d7ec8e4ab62512b3f1fb7b5fcb440e834d
Author: Peiyong Lin <lpy@chromium.org>
Date: Tue Oct 17 16:15:42 2017

Fix wrong request count when OnWillSendRequest is called.

When OnWillSendRequest is called, the new loader hasn't been added to
the fetcher, thus we should add 1 to ActiveRequestCount() so that we
have the correct network request count.

BUG= 730098 ,  749789 

Change-Id: I7e688d522d2f4272c05210ba2c6dd09666e1b5db
Reviewed-on: https://chromium-review.googlesource.com/713655
Commit-Queue: lpy <lpy@chromium.org>
Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509402}
[modify] https://crrev.com/3b5422d7ec8e4ab62512b3f1fb7b5fcb440e834d/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
[modify] https://crrev.com/3b5422d7ec8e4ab62512b3f1fb7b5fcb440e834d/third_party/WebKit/Source/core/loader/IdlenessDetector.cpp
[modify] https://crrev.com/3b5422d7ec8e4ab62512b3f1fb7b5fcb440e834d/third_party/WebKit/Source/core/loader/IdlenessDetector.h

Project Member

Comment 29 by bugdroid1@chromium.org, Oct 31 2017

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

commit 9e9145444160678e051bfe1e4bed1ad1647405c0
Author: Zhen Wang <zhenw@chromium.org>
Date: Tue Oct 31 17:37:31 2017

Do not pause/resume background tab opening based on memory pressure signal

Memory signal is currently unreliable. We should not pause or resume
background tab opening based on the memory pressure signal.

Bug:  762775 , 730098 
Change-Id: Ic976493bb7af94c451d54e8c8f655dbdd6b2421e
Reviewed-on: https://chromium-review.googlesource.com/736869
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512863}
[modify] https://crrev.com/9e9145444160678e051bfe1e4bed1ad1647405c0/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/9e9145444160678e051bfe1e4bed1ad1647405c0/chrome/browser/resource_coordinator/tab_manager_unittest.cc

Project Member

Comment 30 by bugdroid1@chromium.org, Nov 8 2017

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

commit 740f931411d0a01212d0d6cd7aa7d66d047bc09c
Author: Peiyong Lin <lpy@chromium.org>
Date: Wed Nov 08 00:26:56 2017

[PageAlmostIdle] Plumb idle signal to TabManager.

This patch plumbs idle signal to TabManager in order to better schedule
background tabs loading. When PageIdleSignal feature is enabled,
TabManager::WebContentsData will ignore DidStopLoading signal from WebContents,
and only use NotifyAlmostIdle to notify TabManager a loading is considered
done.

BUG= 730098 ,  749789 , 751210, 778766

Change-Id: Iaef8abe2608bd18537ca35838a3d2d8e1c81f972
Reviewed-on: https://chromium-review.googlesource.com/755483
Reviewed-by: Zhen Wang <zhenw@chromium.org>
Commit-Queue: lpy <lpy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#514668}
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/page_signal_receiver.cc
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/tab_manager.cc
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/tab_manager.h
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/tab_manager_resource_coordinator_signal_observer.cc
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/tab_manager_stats_collector.cc
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/tab_manager_stats_collector.h
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/tab_manager_stats_collector_unittest.cc
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/tab_manager_unittest.cc
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/tab_manager_web_contents_data.cc
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/chrome/browser/resource_coordinator/tab_manager_web_contents_data.h
[modify] https://crrev.com/740f931411d0a01212d0d6cd7aa7d66d047bc09c/services/resource_coordinator/observers/page_signal_generator_impl.cc

Project Member

Comment 31 by bugdroid1@chromium.org, Nov 22 2017

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

commit 3320e8a6289d7a8cfe44a4103df15a0f9b318404
Author: Zhen Wang <zhenw@chromium.org>
Date: Wed Nov 22 02:02:51 2017

Add finch param to control tab load timeout for session restore and background tab opening

This CL adds a finch param to control the tab load time out for both session
restore and background tab opening, and adds UMA metrics to record how often
timeout happens. It also moves staggered background tab opening feature
definition into its own file.

For testing, use:
./out/Release/chrome
--enable-features=StaggeredBackgroundTabOpening,\
  StaggeredBackgroundTabOpeningExperiment,\
  "CustomizedTabLoadTimeout<MyStudy" \
--force-fieldtrials=MyStudy/Group1 \
--force-fieldtrial-params=MyStudy.Group1:tabLoadTimeoutInMs/1000

Bug:  730098 , 749789 ,751210
Change-Id: If21052b1860e4a985986ef8869605998c1f7527e
Reviewed-on: https://chromium-review.googlesource.com/770256
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Steven Holte <holte@chromium.org>
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Reviewed-by: lpy <lpy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#518499}
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/BUILD.gn
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/resource_coordinator/background_tab_navigation_throttle.cc
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/resource_coordinator/background_tab_navigation_throttle_unittest.cc
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/resource_coordinator/tab_manager.cc
[add] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/resource_coordinator/tab_manager_features.cc
[add] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/resource_coordinator/tab_manager_features.h
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/resource_coordinator/tab_manager_stats_collector.cc
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/resource_coordinator/tab_manager_stats_collector.h
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/resource_coordinator/tab_manager_unittest.cc
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/sessions/session_restore_stats_collector.cc
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/sessions/session_restore_stats_collector.h
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/sessions/tab_loader.cc
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/browser/sessions/tab_loader_delegate.cc
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/common/chrome_features.cc
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/chrome/common/chrome_features.h
[modify] https://crrev.com/3320e8a6289d7a8cfe44a4103df15a0f9b318404/tools/metrics/histograms/histograms.xml

Project Member

Comment 32 by bugdroid1@chromium.org, Nov 27 2017

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

commit 146c2c3af97c1c4d2ac32baac457fc68d645c5cc
Author: Zhen Wang <zhenw@chromium.org>
Date: Mon Nov 27 20:27:12 2017

Do not delay navigation for prerenders

This CL skips delaying navigation for prerenders.

Related bug: http://crbug.com/788594#c3

Bug:  730098 
Change-Id: I9b249581b8f06847477c75f6cd08cfc1e6b8131f
Reviewed-on: https://chromium-review.googlesource.com/790931
Reviewed-by: Chris Hamilton <chrisha@chromium.org>
Commit-Queue: Zhen Wang <zhenw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#519385}
[modify] https://crrev.com/146c2c3af97c1c4d2ac32baac457fc68d645c5cc/chrome/browser/resource_coordinator/background_tab_navigation_throttle.cc

Comment 33 by zh...@chromium.org, Dec 18 2017

Status: Fixed (was: Started)
The implementation is completed. Marking this as fixed. New updates should go to the launch bug 751210.

Sign in to add a comment