Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(462)

Issue 1997413003: Revert of Add support for entering/exiting HTML fullscreen from OOPIFs. (Closed)

Created:
4 years, 7 months ago by kolos1
Modified:
4 years, 7 months ago
CC:
blink-reviews, blink-reviews-api_chromium.org, blink-reviews-dom_chromium.org, blink-reviews-layout_chromium.org, chromium-reviews, creis+watch_chromium.org, darin-cc_chromium.org, dglazkov+blink, eae+blinkwatch, jam, jchaffraix+rendering, leviw+renderwatch, mkwst+moarreviews-renderer_chromium.org, mlamouri+watch-content_chromium.org, mlamouri+watch-blink_chromium.org, nasko+codewatch_chromium.org, pdr+renderingwatchlist_chromium.org, rwlbuis, sof, site-isolation-reviews_chromium.org, szager+layoutwatch_chromium.org, zoltan1
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Revert of Add support for entering/exiting HTML fullscreen from OOPIFs. (patchset #13 id:240001 of https://codereview.chromium.org/1914643005/ ) Reason for revert: interactive_ui_tests failures on Mac10.10 and Mac10.11 (https://build.chromium.org/p/chromium.mac/builders/Mac10.11%20Tests/builds/1684) BUG=614304 Original issue's description: > Add support for entering/exiting HTML fullscreen from OOPIFs. > > Currently, entering HTML fullscreen utilizes a number of ancestor > frame walks. This is because entering fullscreen for an element (1) > alters layout for all its ancestor <iframes> (by applying > :-webkit-full-screen styles to them, which applies some UA CSS rules), > (2) fires fullscreenchange in all ancestor documents on <iframe> > elements along the ancestor chain, and (3) makes > document.webkitFullscreenElement return the <iframe> element > containing the fullscreened element in ancestor frames. > > Currently, the logic behind this assumes that all ancestor frames are > local and does nothing when it encounters a remote frame. This CL > takes the first step to fix this. > > The existing flow for entering HTML fullscreen goes like this: > 1. JS on the page calls element.webkitRequestFullscreen() > 2. Fullscreen::requestFullscreen(): > a. Checks if fullscreen is allowed by ancestors (allowFullscreen) > b. Creates fullscreenchange events for |element| and its ancestor > <iframes> and saves them in its m_eventQueue. > c. Puts |element| on its fullscreen element stack. > 3. FullscreenController::enterFullScreenForElement(element) > a. Saves |element| as provisional fullscreen element. > b. Saves some page sizing info (to be restored after fullscreen) > 4. RenderFrameImpl::enterFullscreen sends a FrameHostMsg_ToggleFullscreen > to browser process. > 5. RenderFrameHostImpl::OnToggleFullscreen() asks the current tab to > enter fullscreen. > 6. After the tab is resized for fullscreen, browser process generates a > ViewMsg_Resize to the main frame renderer, with > is_fullscreen_granted=1 in ResizeParams. > 7. RenderWidget::Resize realizes there's a fullscreen change and calls > into FullscreenController::didEnterFullScreen(). > 8. FullscreenController::didEnterFullScreen picks up the stored > provisional fullscreen element and calls > Fullscreen::didEnterFullScreenForElement on it. > 9. Fullscreen::didEnterFullScreenForElement(element): > a. Adjusts layout on |element| for fullscreen > b. Sets fullscreen CSS styles on the fullscreen element and all > ancestor elements. > c. Fires fullscreenchange events from step 2b. > > The main changes in this CL are: > > - in step 5, before entering fullscreen for tab, we will send an IPC > to ancestor OOPIFs so that they do steps 2 and 3 for their > respective ancestor <iframe> elements (i.e., set up provisional > fullscreen elements and prepare their share of the fullscreenchange > events). > - ViewMsg_Resize will trigger fullscreen in subframe widgets in > addition to main frame ones. When fullscreen is entered, > ViewMsg_Resize is sent to all widgets on the page. WebFrameWidgets > now also support picking up the fullscreen change and calling into > the page's FullscreenController. > - blink::Fullscreen and FullscreenController now support entering > fullscreen for <iframe> elements which contain out-of-process > fullscreen elements. > > There are still various issues to be dealt with in followup CLs: > - further refactoring ancestor walks in Fullscreen::requestFullscreen > and exitFullscreen to be compatible with hierarchies with a > RemoteFrame between LocalFrames (such as A-B-A). This is needed to > fire all ancestor fullscreenchange events properly in such cases. > - dealing with nested fullscreen elements. > - optimizing fullscreen layout in ancestor processes. > - correcting background color when fullscreening an OOP <iframe> > element. > > More info in design doc: https://goo.gl/Y5wdqi > > BUG=550497 > CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_site_isolation > > Committed: https://crrev.com/3cf9343f4602d4ec11717cb6ff56a793c1d5f84b > Cr-Commit-Position: refs/heads/master@{#395500} TBR=dcheng@chromium.org,creis@chromium.org,falken@chromium.org,alexmos@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=550497 Committed: https://crrev.com/ac446a2973988dd917c7934b925c4878dc34bd43 Cr-Commit-Position: refs/heads/master@{#395553}

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+18 lines, -674 lines) Patch
M chrome/browser/site_per_process_interactive_browsertest.cc View 3 chunks +0 lines, -465 lines 0 comments Download
M content/browser/frame_host/render_frame_host_impl.cc View 2 chunks +0 lines, -39 lines 0 comments Download
M content/browser/web_contents/web_contents_impl.cc View 1 chunk +3 lines, -1 line 0 comments Download
M content/common/frame_messages.h View 1 chunk +0 lines, -6 lines 0 comments Download
M content/renderer/render_frame_proxy.h View 1 chunk +0 lines, -1 line 0 comments Download
M content/renderer/render_frame_proxy.cc View 2 chunks +0 lines, -5 lines 0 comments Download
D content/test/data/fullscreen_frame.html View 1 chunk +0 lines, -48 lines 0 comments Download
M third_party/WebKit/Source/core/dom/Element.cpp View 1 chunk +3 lines, -19 lines 0 comments Download
M third_party/WebKit/Source/core/dom/Fullscreen.h View 1 chunk +2 lines, -8 lines 0 comments Download
M third_party/WebKit/Source/core/dom/Fullscreen.cpp View 4 chunks +2 lines, -15 lines 0 comments Download
M third_party/WebKit/Source/web/FullscreenController.h View 2 chunks +0 lines, -6 lines 0 comments Download
M third_party/WebKit/Source/web/FullscreenController.cpp View 4 chunks +6 lines, -11 lines 0 comments Download
M third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp View 2 chunks +2 lines, -4 lines 0 comments Download
M third_party/WebKit/Source/web/WebViewImpl.h View 1 chunk +0 lines, -3 lines 0 comments Download
M third_party/WebKit/Source/web/WebViewImpl.cpp View 3 chunks +0 lines, -35 lines 0 comments Download
M third_party/WebKit/public/web/WebView.h View 1 chunk +0 lines, -8 lines 0 comments Download

Messages

Total messages: 6 (2 generated)
kolos1
Created Revert of Add support for entering/exiting HTML fullscreen from OOPIFs.
4 years, 7 months ago (2016-05-24 09:17:41 UTC) #1
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1997413003/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1997413003/1
4 years, 7 months ago (2016-05-24 09:17:57 UTC) #2
commit-bot: I haz the power
Committed patchset #1 (id:1)
4 years, 7 months ago (2016-05-24 09:18:43 UTC) #4
commit-bot: I haz the power
4 years, 7 months ago (2016-05-24 09:20:33 UTC) #6
Message was sent while issue was closed.
Patchset 1 (id:??) landed as
https://crrev.com/ac446a2973988dd917c7934b925c4878dc34bd43
Cr-Commit-Position: refs/heads/master@{#395553}

Powered by Google App Engine
This is Rietveld 408576698