New issue
Advanced search Search tips

Issue 628704 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug

Blocked on:
issue 770195
issue 628700



Sign in to add a comment

OOPIF: CrossProcessFrameConnector::OnVisibilityChanged needs to notify all descendants in the tree

Project Member Reported by lfg@chromium.org, Jul 15 2016

Issue description

When a RemoteFrame is set to 'display: none' the renderer sends an IPC and the browser notifies the child renderer that it doesn't need to produce frames anymore through ViewMsg_WasHidden.

However, when we have nested cross-origin iframes, all nested children should be notified when setting the visibility, since they also don't need to render.

 

Comment 1 by lfg@chromium.org, Jul 15 2016

Blockedon: 628700
Project Member

Comment 2 by sheriffbot@chromium.org, Jul 17 2017

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.

Sorry for the inconvenience if the bug really should have been left as Available. If you change it back, also remove the "Hotlist-Recharge-Cold" label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 3 by lfg@chromium.org, Jul 17 2017

Labels: -Hotlist-Recharge-Cold
Status: Available (was: Untriaged)
This is still an issue. The IPC in the original comment was wrong, the correct one is FrameHostMsg_VisibilityChanged, which triggers the ViewMsg_WasHidden/WasShown.
Labels: OS-All
Owner: ekaramad@chromium.org
Status: Assigned (was: Available)
I agree with comment #3 that this is still an issue (I verified locally). I can take a look at this soon.
Project Member

Comment 5 by bugdroid1@chromium.org, Aug 21 2017

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

commit 2075c7ed7438b0b0796f29ec3a88e14ffeba51ff
Author: EhsanK <ekaramad@chromium.org>
Date: Mon Aug 21 02:42:39 2017

Show/Hide RenderWidgetHostViews under an OOPIF when its Frame Owner becomes Visible/Hidden

Right now changing the visibility state of a cross-origin iframe will
lead to calls to RenderWidgetHostView::Show/Hide on its corresponding
view. Therefore, when hiding a frame the RenderWidget will stop
generating compositor frames.

However, when the iframe itself has nested cross-origin frames, the
current calls to Hide() and Show() are not replicated for their views.
This CL adds the missing code to inform the subviews about changes in
the visibility state.

The CL also modifies the existing test for visibility change a test to
further verify that hiding a cross origin iframe will also hide any
child view nested within it.

Bug:  628704 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
Change-Id: I3589d1e90ae7ee8bfdb654625c451cc0e6704785
Reviewed-on: https://chromium-review.googlesource.com/599006
Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Lucas Gadani <lfg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#495861}
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/frame_host/cross_process_frame_connector.cc
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/frame_host/cross_process_frame_connector.h
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/frame_host/render_frame_host_impl.h
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/renderer_host/frame_connector_delegate.h
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/renderer_host/render_widget_host_view_child_frame.cc
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/site_per_process_browsertest.cc
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/web_contents/web_contents_impl.cc
[modify] https://crrev.com/2075c7ed7438b0b0796f29ec3a88e14ffeba51ff/content/browser/web_contents/web_contents_impl.h

Project Member

Comment 6 by bugdroid1@chromium.org, Sep 29 2017

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

commit ef59187a703146dc49481629842004c39734f310
Author: Igor Eremeev <myrth@yandex-team.ru>
Date: Fri Sep 29 00:25:42 2017

Fix a typo that caused child views to stay visible after hide.

R=ekaramad@chromium.org,lfg@chromium.org
BUG= 628704 

Change-Id: I88b95a335e8f97ef5076329a49b52d482fe297f4
Reviewed-on: https://chromium-review.googlesource.com/690348
Reviewed-by: Bo <boliu@chromium.org>
Commit-Queue: Bo <boliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505228}
[modify] https://crrev.com/ef59187a703146dc49481629842004c39734f310/content/browser/web_contents/web_contents_impl.cc

Blockedon: 770195
Status: Fixed (was: Assigned)
This bug is fixed per comment #5.

Sign in to add a comment