Autoresize path with surface sync may result in too many notifications / surface allocations |
|||||
Issue description
Chrome Version: refs/heads/master@{#530170}
OS: Linux
What steps will reproduce the problem?
(1) Open Chrome and select menu > cast
(2) Wait for the cast dialog to stabilize
(3) Click the arrow next to "cast to" to toggle between this and the "select source" view.
(4) Note that on each click, the RenderWidget sends a single ViewHostMsg_ResizeOrRepaint_ACK
(5) Note that for each ViewHostMsg_ResizeOrRepaint_ACK, the Browser performs two surface ID allocations and sends three ViewMsg_SetLocalSurfaceIdForAutoResize responses.
What is the expected result?
I would expect the renderer to receive one ViewMsg_SetLocalSurfaceIdForAutoResize for each ViewHostMsg_ResizeOrRepaint_ACK. I would also expect only one surface allocation.
For a bit more info, here are the stacks showing where we allocate new surfaces (note that this all stems from the same RenderWidgetHostImpl::DelayedAutoResized call triggered by the ViewHostMsg_ResizeOrRepaint_ACK:
----------- stack (A) -------------
#1 0x7ff0b81f9d43 aura::WindowPortLocal::OnDidChangeBounds()
#2 0x7ff0b824b6a2 aura::Window::OnLayerBoundsChanged()
#3 0x7ff0b816054d ui::Layer::SetBoundsFromAnimation()
#4 0x7ff0b82454e2 aura::Window::SetBounds()
#5 0x7ff0bad992de content::RenderWidgetHostViewAura::InternalSetBounds()
#6 0x7ff0bad99201 content::RenderWidgetHostViewAura::SetSize()
#7 0x7ff0bafb935e content::WebContentsViewAura::OnBoundsChanged()
#8 0x7ff0b824b70a aura::Window::OnLayerBoundsChanged()
#9 0x7ff0b816054d ui::Layer::SetBoundsFromAnimation()
#10 0x7ff0b82454e2 aura::Window::SetBounds()
#11 0x7ff0b71a8eaf views::NativeViewHostAura::ShowWidget()
#12 0x7ff0b71064d3 views::NativeViewHost::Layout()
#13 0x7ff0b716e5d7 views::View::BoundsChanged()
#14 0x7ff0b716d85e views::View::SetBoundsRect()
#15 0x7ff0b6b2c6ff views::WebView::OnBoundsChanged()
#16 0x7ff0b716e47d views::View::BoundsChanged()
#17 0x7ff0b716d85e views::View::SetBoundsRect()
#18 0x7ff0b716d6a7 views::View::SetBounds()
#19 0x7ff0b716e5d7 views::View::BoundsChanged()
#20 0x7ff0b716d85e views::View::SetBoundsRect()
#21 0x7ff0b719e23d views::NonClientView::Layout()
#22 0x7ff0b716e5d7 views::View::BoundsChanged()
#23 0x7ff0b716d85e views::View::SetBoundsRect()
#24 0x7ff0b7158756 views::FillLayout::Layout()
#25 0x7ff0b717121c views::View::Layout()
#26 0x7ff0b716e5d7 views::View::BoundsChanged()
#27 0x7ff0b716d85e views::View::SetBoundsRect()
#28 0x7ff0b716e75a views::View::SetSize()
#29 0x7ff0b718d696 views::Widget::OnNativeWidgetSizeChanged()
#30 0x7ff0b824b70a aura::Window::OnLayerBoundsChanged()
#31 0x7ff0b816054d ui::Layer::SetBoundsFromAnimation()
#32 0x7ff0b82454e2 aura::Window::SetBounds()
#33 0x7ff0b71bc874 views::DesktopScreenPositionClient::SetBounds()
#34 0x7ff0b71be48e views::NativeWidgetAura::SetBounds()
#35 0x55d9e6861d0f constrained_window::(anonymous namespace)::UpdateModalDialogPosition()
#36 0x55d9e6861a28 constrained_window::UpdateWebContentsModalDialogPosition()
#37 0x7ff0baf990a1 content::WebContentsImpl::ResizeDueToAutoResize()
#38 0x7ff0bad83d75 content::RenderWidgetHostImpl::DelayedAutoResized()
----------- stack (B) -------------
#1 0x7ff0b81fa6ea aura::WindowPortLocal::AllocateLocalSurfaceId()
#2 0x7ff0bada22a2 content::RenderWidgetHostViewAura::ResizeDueToAutoResize()
#3 0x7ff0baf990e1 content::WebContentsImpl::ResizeDueToAutoResize()
#4 0x7ff0bad83d75 content::RenderWidgetHostImpl::DelayedAutoResized()
Additionally, here are the three stacks showing where we send ViewMsg_SetLocalSurfaceIdForAutoResizes back to the renderer. These also all come from the same base RenderWidgetHostImpl::DelayedAutoResized call:
----------- stack (C) -------------
#1 0x7ff0bad8676f content::RenderWidgetHostImpl::DidAllocateLocalSurfaceIdForAutoResize()
#2 0x7ff0bad99201 content::RenderWidgetHostViewAura::SetSize()
#3 0x7ff0bad9e5e7 content::RenderWidgetHostViewAura::OnBoundsChanged()
#4 0x7ff0b824b70a aura::Window::OnLayerBoundsChanged()
#5 0x7ff0b816054d ui::Layer::SetBoundsFromAnimation()
#6 0x7ff0b82454e2 aura::Window::SetBounds()
#7 0x7ff0bad992de content::RenderWidgetHostViewAura::InternalSetBounds()
#8 0x7ff0bad99201 content::RenderWidgetHostViewAura::SetSize()
#9 0x7ff0bafb935e content::WebContentsViewAura::OnBoundsChanged()
#10 0x7ff0b824b70a aura::Window::OnLayerBoundsChanged()
#11 0x7ff0b816054d ui::Layer::SetBoundsFromAnimation()
#12 0x7ff0b82454e2 aura::Window::SetBounds()
#13 0x7ff0b71a8eaf views::NativeViewHostAura::ShowWidget()
#14 0x7ff0b71064d3 views::NativeViewHost::Layout()
#15 0x7ff0b716e5d7 views::View::BoundsChanged()
#16 0x7ff0b716d85e views::View::SetBoundsRect()
#17 0x7ff0b6b2c6ff views::WebView::OnBoundsChanged()
#18 0x7ff0b716e47d views::View::BoundsChanged()
#19 0x7ff0b716d85e views::View::SetBoundsRect()
#20 0x7ff0b716d6a7 views::View::SetBounds()
#21 0x7ff0b716e5d7 views::View::BoundsChanged()
#22 0x7ff0b716d85e views::View::SetBoundsRect()
#23 0x7ff0b719e23d views::NonClientView::Layout()
#24 0x7ff0b716e5d7 views::View::BoundsChanged()
#25 0x7ff0b716d85e views::View::SetBoundsRect()
#26 0x7ff0b7158756 views::FillLayout::Layout()
#27 0x7ff0b717121c views::View::Layout()
#28 0x7ff0b716e5d7 views::View::BoundsChanged()
#29 0x7ff0b716d85e views::View::SetBoundsRect()
#30 0x7ff0b716e75a views::View::SetSize()
#31 0x7ff0b718d696 views::Widget::OnNativeWidgetSizeChanged()
#32 0x7ff0b824b70a aura::Window::OnLayerBoundsChanged()
#33 0x7ff0b816054d ui::Layer::SetBoundsFromAnimation()
#34 0x7ff0b82454e2 aura::Window::SetBounds()
#35 0x7ff0b71bc874 views::DesktopScreenPositionClient::SetBounds()
#36 0x7ff0b71be48e views::NativeWidgetAura::SetBounds()
#37 0x55d9e6861d0f constrained_window::(anonymous namespace)::UpdateModalDialogPosition()
#38 0x55d9e6861a28 constrained_window::UpdateWebContentsModalDialogPosition()
#39 0x7ff0baf990a1 content::WebContentsImpl::ResizeDueToAutoResize()
#40 0x7ff0bad83d75 content::RenderWidgetHostImpl::DelayedAutoResized()
----------- stack (D) -------------
content::RenderWidgetHostImpl::DidAllocateLocalSurfaceIdForAutoResize()
#2 0x7ff0bad99201 content::RenderWidgetHostViewAura::SetSize()
#3 0x7ff0bafb935e content::WebContentsViewAura::OnBoundsChanged()
#4 0x7ff0b824b70a aura::Window::OnLayerBoundsChanged()
#5 0x7ff0b816054d ui::Layer::SetBoundsFromAnimation()
#6 0x7ff0b82454e2 aura::Window::SetBounds()
#7 0x7ff0b71a8eaf views::NativeViewHostAura::ShowWidget()
#8 0x7ff0b71064d3 views::NativeViewHost::Layout()
#9 0x7ff0b716e5d7 views::View::BoundsChanged()
#10 0x7ff0b716d85e views::View::SetBoundsRect()
#11 0x7ff0b6b2c6ff views::WebView::OnBoundsChanged()
#12 0x7ff0b716e47d views::View::BoundsChanged()
#13 0x7ff0b716d85e views::View::SetBoundsRect()
#14 0x7ff0b716d6a7 views::View::SetBounds()
#15 0x7ff0b716e5d7 views::View::BoundsChanged()
#16 0x7ff0b716d85e views::View::SetBoundsRect()
#17 0x7ff0b719e23d views::NonClientView::Layout()
#18 0x7ff0b716e5d7 views::View::BoundsChanged()
#19 0x7ff0b716d85e views::View::SetBoundsRect()
#20 0x7ff0b7158756 views::FillLayout::Layout()
#21 0x7ff0b717121c views::View::Layout()
#22 0x7ff0b716e5d7 views::View::BoundsChanged()
#23 0x7ff0b716d85e views::View::SetBoundsRect()
#24 0x7ff0b716e75a views::View::SetSize()
#25 0x7ff0b718d696 views::Widget::OnNativeWidgetSizeChanged()
#26 0x7ff0b824b70a aura::Window::OnLayerBoundsChanged()
#27 0x7ff0b816054d ui::Layer::SetBoundsFromAnimation()
#28 0x7ff0b82454e2 aura::Window::SetBounds()
#29 0x7ff0b71bc874 views::DesktopScreenPositionClient::SetBounds()
#30 0x7ff0b71be48e views::NativeWidgetAura::SetBounds()
#31 0x55d9e6861d0f constrained_window::(anonymous namespace)::UpdateModalDialogPosition()
#32 0x55d9e6861a28 constrained_window::UpdateWebContentsModalDialogPosition()
#33 0x7ff0baf990a1 content::WebContentsImpl::ResizeDueToAutoResize()
#34 0x7ff0bad83d75 content::RenderWidgetHostImpl::DelayedAutoResized()
----------- stack (E) -------------
#1 0x7ff0bad8676f content::RenderWidgetHostImpl::DidAllocateLocalSurfaceIdForAutoResize()
#2 0x7ff0baf990e1 content::WebContentsImpl::ResizeDueToAutoResize()
#3 0x7ff0bad83d75 content::RenderWidgetHostImpl::DelayedAutoResized()
Note that it looks like (in this situation at least) we can safely drop the alloc in stack (A) and the notifications in stack (C) and (D), as these will always be covered by the later alloc/noficiation in stacks (B) and (E).
,
Jan 30 2018
->P3, probably best to go to fsamuel. Of note is that Mac does not currently support this path yet (patches in flight)
,
Feb 16 2018
cblume@ has a patch in flight that will address this.
,
Mar 2 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/54fcb1d19faa80571613c47c03e70f313f03ccbd commit 54fcb1d19faa80571613c47c03e70f313f03ccbd Author: Chris Blume <cblume@chromium.org> Date: Fri Mar 02 18:51:53 2018 Add ScopedSurfaceIdAllocator Adds a ScopedSurfaceIdAllocator which can be used to suppress allocation of LocalSurfaceId in the parent during its lifetime. When it is destroyed, it runs its own allocation. BUG= 789259 , 805073 Change-Id: I56d4435922031b625cdbcddb012f89b309b36ba1 Reviewed-on: https://chromium-review.googlesource.com/918405 Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Eric Karl <ericrk@chromium.org> Reviewed-by: Fady Samuel <fsamuel@chromium.org> Commit-Queue: Chris Blume <cblume@chromium.org> Cr-Commit-Position: refs/heads/master@{#540569} [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/components/viz/common/BUILD.gn [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/components/viz/common/surfaces/parent_local_surface_id_allocator.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/components/viz/common/surfaces/parent_local_surface_id_allocator.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/components/viz/common/surfaces/parent_local_surface_id_allocator_unittest.cc [add] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/components/viz/common/surfaces/scoped_surface_id_allocator.cc [add] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/components/viz/common/surfaces/scoped_surface_id_allocator.h [add] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/components/viz/common/surfaces/scoped_surface_id_allocator_unittest.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/frame_host/render_widget_host_view_guest.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/frame_host/render_widget_host_view_guest.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/browser_compositor_view_mac.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/render_widget_host_impl.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/render_widget_host_view_aura.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/render_widget_host_view_aura.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/render_widget_host_view_base.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/render_widget_host_view_base.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/render_widget_host_view_child_frame.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/render_widget_host_view_child_frame.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/render_widget_host_view_mac.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/renderer_host/render_widget_host_view_mac.mm [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/browser/web_contents/web_contents_impl.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/content/test/mock_render_widget_host_delegate.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/BUILD.gn [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/local/window_port_local.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/local/window_port_local.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/mus/window_port_mus.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/mus/window_port_mus.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/window.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/window.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/window_port.h [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/window_port_for_shutdown.cc [modify] https://crrev.com/54fcb1d19faa80571613c47c03e70f313f03ccbd/ui/aura/window_port_for_shutdown.h
,
Apr 16 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f18f8124227f751f390b5aefe31c125a12194ed5 commit f18f8124227f751f390b5aefe31c125a12194ed5 Author: Eric Karl <ericrk@chromium.org> Date: Mon Apr 16 21:13:31 2018 Suppress surface ID allocations during autoresize for child frames This change makes the ResizeDueToAutoResize messages for child frames transactional, with a begin/end. It also ensures that during a transaction we don't allocate new LocalSurfaceIds, instead waiting for the transaction to complete. Bug: 789259 , 805073 Change-Id: I585ac6d14b9978280847f49205d03bf49b9bb4f8 Reviewed-on: https://chromium-review.googlesource.com/960981 Commit-Queue: Eric Karl <ericrk@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Chris Blume <cblume@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Cr-Commit-Position: refs/heads/master@{#551114} [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/frame_host/cross_process_frame_connector.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/frame_host/cross_process_frame_connector.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/renderer_host/frame_connector_delegate.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/renderer_host/render_widget_host_view_child_frame.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/renderer_host/render_widget_host_view_child_frame.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/common/frame_messages.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/renderer/render_frame_impl_browsertest.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/renderer/render_frame_proxy.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/renderer/render_frame_proxy.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/test/content_browser_test_utils_internal.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/test/content_browser_test_utils_internal.h
,
Apr 17 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f18f8124227f751f390b5aefe31c125a12194ed5 commit f18f8124227f751f390b5aefe31c125a12194ed5 Author: Eric Karl <ericrk@chromium.org> Date: Mon Apr 16 21:13:31 2018 Suppress surface ID allocations during autoresize for child frames This change makes the ResizeDueToAutoResize messages for child frames transactional, with a begin/end. It also ensures that during a transaction we don't allocate new LocalSurfaceIds, instead waiting for the transaction to complete. Bug: 789259 , 805073 Change-Id: I585ac6d14b9978280847f49205d03bf49b9bb4f8 Reviewed-on: https://chromium-review.googlesource.com/960981 Commit-Queue: Eric Karl <ericrk@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Chris Blume <cblume@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Cr-Commit-Position: refs/heads/master@{#551114} [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/frame_host/cross_process_frame_connector.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/frame_host/cross_process_frame_connector.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/renderer_host/frame_connector_delegate.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/renderer_host/render_widget_host_view_child_frame.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/renderer_host/render_widget_host_view_child_frame.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/common/frame_messages.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/renderer/render_frame_impl_browsertest.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/renderer/render_frame_proxy.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/renderer/render_frame_proxy.h [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/test/content_browser_test_utils_internal.cc [modify] https://crrev.com/f18f8124227f751f390b5aefe31c125a12194ed5/content/test/content_browser_test_utils_internal.h
,
Apr 19 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ba177d2ea70e292a846ee0a04117d82f27d674b2 commit ba177d2ea70e292a846ee0a04117d82f27d674b2 Author: Chris Blume <cblume@chromium.org> Date: Thu Apr 19 22:57:05 2018 Suppress select IPCs during LSI allocation on Mac When a child LSI allocation is being processed by the parent, the parent should not send extra IPCs which it will later overwrite. This suppression currently happens on Aura platforms but not Mac. This patch adds it to Mac. BUG= 805073 Change-Id: I3bda7dbdb97afb982e031ac354f06ce1c385e07d Reviewed-on: https://chromium-review.googlesource.com/1011556 Commit-Queue: Chris Blume <cblume@chromium.org> Reviewed-by: ccameron <ccameron@chromium.org> Reviewed-by: Fady Samuel <fsamuel@chromium.org> Reviewed-by: Eric Karl <ericrk@chromium.org> Cr-Commit-Position: refs/heads/master@{#552195} [modify] https://crrev.com/ba177d2ea70e292a846ee0a04117d82f27d674b2/content/browser/renderer_host/browser_compositor_view_mac.h [modify] https://crrev.com/ba177d2ea70e292a846ee0a04117d82f27d674b2/content/browser/renderer_host/browser_compositor_view_mac.mm [modify] https://crrev.com/ba177d2ea70e292a846ee0a04117d82f27d674b2/content/browser/renderer_host/render_widget_host_impl.h [modify] https://crrev.com/ba177d2ea70e292a846ee0a04117d82f27d674b2/content/browser/renderer_host/render_widget_host_view_mac.h [modify] https://crrev.com/ba177d2ea70e292a846ee0a04117d82f27d674b2/content/browser/renderer_host/render_widget_host_view_mac.mm [modify] https://crrev.com/ba177d2ea70e292a846ee0a04117d82f27d674b2/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
,
Apr 22 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e commit 12a2646d7f7df9ffcfff2b44dbb49ff58289d11e Author: Chris Blume <cblume@chromium.org> Date: Sun Apr 22 02:00:12 2018 Pass child allocated LSIs to Guests/ChildFrames This change passes child allocated surface IDs from the browser to ChildFrames / Guests. Additionally, it updates the existing ChildFrame tests and adds Guest tests to ensure that: - The ID we pass is correctly received. - The Guest/ChildFrame does not have extra allocations. Bug: 789259 , 805073 , 811944 Change-Id: I82e0677d46801bfe721e30674493ffe0406d87e9 Reviewed-on: https://chromium-review.googlesource.com/996920 Commit-Queue: Fady Samuel <fsamuel@chromium.org> Reviewed-by: Fady Samuel <fsamuel@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Cr-Commit-Position: refs/heads/master@{#552597} [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/chrome/browser/apps/guest_view/web_view_browsertest.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/browser_plugin/browser_plugin_guest.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/browser_plugin/browser_plugin_guest.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/browser_plugin/browser_plugin_message_filter.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/browser_plugin/browser_plugin_message_filter.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/frame_host/cross_process_frame_connector.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/frame_host/cross_process_frame_connector.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/frame_host/render_widget_host_view_guest.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/renderer_host/frame_connector_delegate.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/renderer_host/render_process_host_impl.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/renderer_host/render_process_host_impl.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/renderer_host/render_widget_host_view_child_frame.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/renderer_host/render_widget_host_view_child_frame.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/browser/renderer_host/render_widget_host_view_child_frame_browsertest.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/common/browser_plugin/browser_plugin_messages.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/common/frame_messages.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/public/test/browser_test_utils.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/public/test/browser_test_utils.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/renderer/browser_plugin/browser_plugin.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/renderer/browser_plugin/browser_plugin.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/renderer/render_frame_impl_browsertest.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/renderer/render_frame_proxy.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/renderer/render_frame_proxy.h [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/test/content_browser_test_utils_internal.cc [modify] https://crrev.com/12a2646d7f7df9ffcfff2b44dbb49ff58289d11e/content/test/content_browser_test_utils_internal.h
,
Apr 23 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b commit 7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b Author: Chris Blume <cblume@chromium.org> Date: Mon Apr 23 21:30:48 2018 Short circuit LocalSurfaceId allocation When a child allocates a LocalSurfaceId, it informs the parent of that new allocation. The child doesn't begin using it until the parent acknowledges that it was accepted. We can short circuit this case and assume it will be accepted. In the case where the parent does not accept, it will continue to inform the child that there is a new LocalSurfaceId to use. BUG= 805073 , 811944 Change-Id: Ica8e1e2b6e98ef4392fec4cfc3cc4c9f806c88ac Reviewed-on: https://chromium-review.googlesource.com/1020533 Reviewed-by: Fady Samuel <fsamuel@chromium.org> Commit-Queue: Chris Blume <cblume@chromium.org> Cr-Commit-Position: refs/heads/master@{#552838} [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/browser_plugin/browser_plugin_guest.cc [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/renderer_host/frame_connector_delegate.cc [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/renderer_host/render_widget_host_impl.cc [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/renderer_host/render_widget_host_impl.h [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/renderer_host/render_widget_host_view_aura.cc [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/renderer_host/render_widget_host_view_base.cc [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/renderer_host/render_widget_host_view_base.h [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/renderer_host/render_widget_host_view_child_frame.cc [modify] https://crrev.com/7c21abdbea95e1cba6141dd0e1de7e4a558a0e5b/content/browser/renderer_host/render_widget_host_view_mac.mm
,
Apr 24 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8be47737dac4c9971c977ba4081db6e15db8e3fa commit 8be47737dac4c9971c977ba4081db6e15db8e3fa Author: Chris Blume <cblume@chromium.org> Date: Tue Apr 24 21:06:56 2018 Remove early call to DidResizeOrRepaintAck() Previously, we would defer commit when the child didn't yet have a LocalSurfaceId. This meant we needed a special case to call DidResizeOrRepaintAck() early when commit would be deferred. But now the child has the ability to allocate its own LocalSurfaceId. As a result, we no longer need to defer commit. And thus, no longer need to call DidResizeOrRepaintAck() early. BUG= 805073 , 811944 , 836009 Change-Id: I4e85e926f217cf0fd2d4b5ed3854f09e7145e5a8 Reviewed-on: https://chromium-review.googlesource.com/1024739 Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Fady Samuel <fsamuel@chromium.org> Commit-Queue: Fady Samuel <fsamuel@chromium.org> Cr-Commit-Position: refs/heads/master@{#553276} [modify] https://crrev.com/8be47737dac4c9971c977ba4081db6e15db8e3fa/content/renderer/render_view_impl.cc [modify] https://crrev.com/8be47737dac4c9971c977ba4081db6e15db8e3fa/content/renderer/render_widget.cc [modify] https://crrev.com/8be47737dac4c9971c977ba4081db6e15db8e3fa/content/renderer/render_widget.h [modify] https://crrev.com/8be47737dac4c9971c977ba4081db6e15db8e3fa/content/renderer/render_widget_unittest.cc
,
May 15 2018
|
|||||
►
Sign in to add a comment |
|||||
Comment 1 by afakhry@chromium.org
, Jan 30 2018Status: Assigned (was: Available)