New issue
Advanced search Search tips

Issue 914321 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Dec 17
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Task



Sign in to add a comment

[Task] Implement a basic BackForwardCache behing a flag.

Project Member Reported by arthurso...@chromium.org, Dec 12

Issue description

Task:
− Add the BackForwardCache feature. Disabled by default.
− On cross-process navigations, when swapping the old and the new RenderFrameHostImpl, keep the old one.
− On history navigation, find the previous document in the BackForwardCache and swap it back if possible.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Dec 13

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

commit 620cec69a1f207df3e1c743dba3b745c3e98d4be
Author: Arthur Sonzogni <arthursonzogni@chromium.org>
Date: Thu Dec 13 13:08:57 2018

Initial BackForwardCache implementation.

− Add the BackForwardCache feature. Disabled by default.
− On cross-process navigations, keep the old RenderFrameHost. Store it in a
  |BackForwardCache| object.
− On history navigation, find the previous document in the BFCache and swap it
  back if possible.
− The BackForwardCache works as a least recently used cache.
  A basic cache eviction is implemented when it is full.

Major things that aren't supported yet:
- Freezing the frame in the BackForwardCache. They are still able to execute
  JavaScript in the background. They can still interact using IPCs with the
  browser process and causes crashes.
- Removing a RenderFrameHost from the BackForwardCache cleanly.
- Handling same-process navigations.

Bug:  914321 
Change-Id: I1b83fe59dc4868b5a6093738d2f5c65f67d60a78
Reviewed-on: https://chromium-review.googlesource.com/c/1358434
Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Camille Lamy <clamy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616284}
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/BUILD.gn
[add] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/back_forward_cache_browsertest.cc
[add] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/frame_host/back_forward_cache.cc
[add] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/frame_host/back_forward_cache.h
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/frame_host/navigation_controller_impl.cc
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/frame_host/navigation_controller_impl.h
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/frame_host/render_frame_host_impl.h
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/frame_host/render_frame_host_manager.cc
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/frame_host/render_frame_host_manager.h
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/browser/web_contents/web_contents_impl.cc
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/public/common/content_features.cc
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/public/common/content_features.h
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/public/common/navigation_policy.cc
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/public/common/navigation_policy.h
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/test/BUILD.gn
[modify] https://crrev.com/620cec69a1f207df3e1c743dba3b745c3e98d4be/content/test/web_contents_observer_sanity_checker.cc

Status: Fixed (was: Started)

Sign in to add a comment