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

Issue 653113 link

Starred by 5 users

Issue metadata

Status: Verified
Owner:
Closed: Oct 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

chrome crashes when moving windows on external monitor

Project Member Reported by semenzato@chromium.org, Oct 5 2016

Issue description


"I am trying to work and move some windows on my external monitor. EVERY time I try to move a window, Chrome crashes to a black screen."

https://feedback.corp.google.com/product/208/neutron?lView=rd&lRSort=1&lROrder=2&lRFilter=1&lReport=19151161430


 
Cc: osh...@chromium.org
Labels: -Pri-2 M-55 ReleaseBlock-Beta Pri-1
Owner: afakhry@chromium.org
Status: Assigned (was: Untriaged)
I think this is a dupe of an issue that might have been fixed yesterday, but I'm unable to find the bug number.
Cc: blaies@google.com
blaies, this is the bug tracking your issue. I just tried to repro on a pixel 2 device, and couldn't. 

I want to know the exact repro steps, and how you customized your external display. Basically what's in the attached settings page.
Screenshot 2016-10-05 at 11.20.49 - Display 2.png
212 KB View Download

Comment 3 by blaies@google.com, Oct 5 2016

Sure.

I have my main window on external w/ email, and my working tabs (About 6).
My internal has my calendar and hangouts.

I was trying to separate the tabs on my external monitor to have "doc 1" open on top and "doc 2" open on bottom so I could work on both at the same time, but every time I would "pull" the tab away from the main browser window and start to move it, Chrome would crash.
Screenshot 2016-10-05 at 1.24.10 PM.png
26.8 KB View Download
Screenshot 2016-10-05 at 1.24.44 PM.png
27.1 KB View Download
I was able to repro a crash by continuously dragging a tab between the two displays back and forth. Is that what you do when the crash happens? It seems from your description in #3 that you're moving a tab inside the same display.

 0  chrome!ui::Layer::ScheduleDraw [layer.cc : 43 + 0x3]
 1  chrome!ui::Layer::SchedulePaint [layer.cc : 668 + 0x8]
 2  chrome!ui::Layer::PaintContentsToDisplayList [layer.cc : 798 + 0xf]
 3  chrome!cc::PictureLayer::Update [picture_layer.cc : 127 + 0x4]
 4  chrome!cc::LayerTree::UpdateLayers [layer_tree.cc : 272 + 0x3]
 5  chrome!cc::LayerTreeHostInProcess::DoUpdateLayers [layer_tree_host_in_process.cc : 814 + 0x5]
 6  chrome!cc::LayerTreeHostInProcess::UpdateLayers [layer_tree_host_in_process.cc : 714 + 0xa]
 7  chrome!cc::SingleThreadProxy::DoBeginMainFrame [single_thread_proxy.cc : 666 + 0x5]
 8  chrome!cc::SingleThreadProxy::BeginMainFrame [single_thread_proxy.cc : 645 + 0xb]
 9  chrome!base::debug::TaskAnnotator::RunTask [callback.h : 64 + 0x5]
10  chrome!base::MessageLoop::DoWork [message_loop.cc : 405 + 0x17]
11  chrome!base::MessagePumpLibevent::Run [message_pump_libevent.cc : 217 + 0xb]
12  chrome!base::RunLoop::Run [run_loop.cc : 35 + 0x8]
13  chrome!ash::ToplevelWindowEventHandler::RunMoveLoop [toplevel_window_event_handler.cc : 90 + 0x8]
14  chrome!views::NativeWidgetAura::RunMoveLoop [native_widget_aura.cc : 706 + 0xf]
15  chrome!TabDragController::RunMoveLoop [tab_drag_controller.cc : 1117 + 0x5]
16  chrome!TabDragController::DetachIntoNewBrowserAndRunMoveLoop [tab_drag_controller.cc : 1085 + 0xd]
17  chrome!TabDragController::DragBrowserToNewTabStrip [tab_drag_controller.cc : 598 + 0x5]
18  chrome!TabDragController::ContinueDragging [tab_drag_controller.cc : 563 + 0x5]
19  chrome!TabDragController::Drag [tab_drag_controller.cc : 420 + 0xb]
20  chrome!TabStrip::ContinueDrag [tab_strip.cc : 1231 + 0xf]
21  chrome!TabStrip::OnMouseDragged [tab_strip.cc : 2703 + 0x6]
22  chrome!views::View::ProcessMouseDragged [view.cc : 2231 + 0x10]
23  chrome!views::View::OnMouseEvent [view.cc : 1023 + 0xb]
24  chrome!ui::EventDispatcher::DispatchEvent [event_dispatcher.cc : 191 + 0xd]
25  chrome!ui::EventDispatcher::ProcessEvent [event_dispatcher.cc : 139 + 0xf]
26  chrome!ui::EventDispatcherDelegate::DispatchEventToTarget [event_dispatcher.cc : 86 + 0x5]
27  chrome!ui::EventDispatcherDelegate::DispatchEvent [event_dispatcher.cc : 58 + 0xe]
28  chrome!views::internal::RootView::OnMouseDragged [root_view.cc : 429 + 0x5]
29  chrome!views::Widget::OnMouseEvent [widget.cc : 1229 + 0x10]
30  chrome!ui::EventDispatcher::DispatchEvent [event_dispatcher.cc : 191 + 0xd]
31  chrome!ui::EventDispatcher::ProcessEvent [event_dispatcher.cc : 139 + 0xf]
32  chrome!ui::EventDispatcherDelegate::DispatchEventToTarget [event_dispatcher.cc : 86 + 0x5]
33  chrome!ui::EventDispatcherDelegate::DispatchEvent [event_dispatcher.cc : 58 + 0xe]
34  chrome!ui::EventProcessor::OnEventFromSource [event_processor.cc : 35 + 0xe]
35  chrome!ui::EventSource::DeliverEventToProcessor [event_source.cc : 73 + 0xc]
36  chrome!ui::EventSource::SendEventToProcessor [event_source.cc : 51 + 0xb]
37  chrome!ash::AshWindowTreeHostPlatform::DispatchEvent [ash_window_tree_host_platform.cc : 110 + 0xc]
38  chrome!ui::DispatchEventFromNativeUiEvent [callback.h : 64 + 0xb]
39  chrome!ui::DrmWindowHost::DispatchEvent [drm_window_host.cc : 185 + 0xb]
40  chrome!ui::PlatformEventSource::DispatchEvent [platform_event_source.cc : 83 + 0xd]
41  chrome!ui::EventFactoryEvdev::DispatchMouseMoveEvent [event_factory_evdev.cc : 356 + 0x4]
42  chrome!base::debug::TaskAnnotator::RunTask [callback.h : 64 + 0x5]
43  chrome!base::MessageLoop::DoWork [message_loop.cc : 405 + 0x17]
44  chrome!base::MessagePumpLibevent::Run [message_pump_libevent.cc : 217 + 0xb]
45  chrome!base::RunLoop::Run [run_loop.cc : 35 + 0x8]
46  chrome!ChromeBrowserMainParts::MainMessageLoopRun [chrome_browser_main.cc : 2113 + 0x8]
47  chrome!content::BrowserMainLoop::RunMainMessageLoopParts [browser_main_loop.cc : 977 + 0x3]
48  chrome!content::BrowserMainRunnerImpl::Run [browser_main_runner.cc : 155 + 0x9]
49  chrome!content::BrowserMain [browser_main.cc : 46 + 0x8]
50  chrome!content::ContentMainRunnerImpl::Run [content_main_runner.cc : 786 + 0xa]
51  chrome!content::ContentMain [content_main.cc : 20 + 0x8]
52  chrome!ChromeMain [chrome_main.cc : 97 + 0x8]
53  libc-2.19.so!__libc_start_main [libc-start.c : 292 + 0x1a]
54  chrome!_start + 0x29
55  0x7ffc42104798
crash_ext_disp.txt
145 KB View Download

Comment 5 by blaies@google.com, Oct 6 2016

Correct, I was moving it on the same display (Though to be fair, the edges
may have bounced off the side a little bit, therefore simulating me
changing screens?)
Cc: afakhry@chromium.org
Owner: domlasko...@chromium.org
I believe domlaskowski is working on a fix for this. 

The problem is that as::wm::ForwardingLayerDelegate::DidPaintLayer() is accessing an already destructed Layer |client_layer_|.

Here's the stack trace that led to the destruction of that layer:

|#2 0x7fffeb0c1d3e ui::Layer::~Layer()
|#3 0x7fffeb0c27e9 ui::Layer::~Layer()
|#4 0x7fffeb0f67ba ui::(anonymous namespace)::DeepDeleteLayers()
|#5 0x7fffeb0f677d ui::(anonymous namespace)::DeepDeleteLayers()
|#6 0x7fffeb0f66ba ui::LayerTreeOwner::~LayerTreeOwner()
|#7 0x7fffe9386cfb std::default_delete<>::operator()()
|#8 0x7fffe9386c7c std::unique_ptr<>::reset()
|#9 0x7fffe96aefae ash::DragWindowController::DragWindowDetails::Update()
|#10 0x7fffe96ae1c1 ash::DragWindowController::Update()
|#11 0x7fffe96b35b6 ash::DragWindowResizer::UpdateDragWindow()
|#12 0x7fffe96b33cb ash::DragWindowResizer::Drag()
|#13 0x7fffe953bbeb ash::DockedWindowResizer::Drag()
|#14 0x7fffe95a2318 ash::wm::WmToplevelWindowEventHandler::HandleDrag()
|#15 0x7fffe95a1f31 ash::wm::WmToplevelWindowEventHandler::OnMouseEvent()
|#16 0x7fffe96cd382 ash::ToplevelWindowEventHandler::OnMouseEvent()
|#17 0x7fffeb035143 ui::EventHandler::OnEvent()
|#18 0x7fffeb030dd0 ui::EventDispatcher::DispatchEvent()
|#19 0x7fffeb030b85 ui::EventDispatcher::DispatchEventToEventHandlers()
|#20 0x7fffeb030694 ui::EventDispatcher::ProcessEvent()
|#21 0x7fffeb0304c2 ui::EventDispatcherDelegate::DispatchEventToTarget()
|#22 0x7fffeb0303a2 ui::EventDispatcherDelegate::DispatchEvent()
|#23 0x7fffeb035dbb ui::EventProcessor::OnEventFromSource()
|#24 0x7fffeb036de5 ui::EventSource::DeliverEventToProcessor()
|#25 0x7fffeb036a6c ui::EventSource::SendEventToProcessor()
|#26 0x7fffe965ee2b ash::AshWindowTreeHostX11::TranslateAndDispatchLocatedEvent()
|#27 0x7fffeb5887b8 aura::WindowTreeHostX11::DispatchXI2Event()
|#28 0x7fffeb588289 aura::WindowTreeHostX11::DispatchEvent()
|#29 0x7ffff4e3624f ui::PlatformEventSource::DispatchEvent()
|#30 0x7fffe8241574 ui::X11EventSourceGlib::ProcessXEvent()
|#31 0x7fffe822e83d ui::X11EventSource::ExtractCookieDataDispatchEvent()
|#32 0x7fffe822e7c1 ui::X11EventSource::DispatchXEvents()
|#33 0x7fffe8241715 ui::(anonymous namespace)::XSourceDispatch()
|#34 0x7fffe50eace5 g_main_context_dispatch
|#35 0x7fffe50eb048 <unknown>
|#36 0x7fffe50eb0ec g_main_context_iteration
|#37 0x7ffff785bd6f base::MessagePumpGlib::Run()
|#38 0x7ffff7846841 base::MessageLoop::RunHandler()
|#39 0x7ffff78e0314 base::RunLoop::Run()
|#40 0x7fffe96cd9c8 ash::ToplevelWindowEventHandler::RunMoveLoop()
|#41 0x7fffeb44fd23 views::NativeWidgetAura::RunMoveLoop()
|#42 0x7fffeb4130b2 views::Widget::RunMoveLoop()
|#43 0x55555a9d6a5f TabDragController::RunMoveLoop()
|#44 0x55555a9d9299 TabDragController::DetachIntoNewBrowserAndRunMoveLoop()
|#45 0x55555a9d8339 TabDragController::DragBrowserToNewTabStrip()
|#46 0x55555a9d7179 TabDragController::ContinueDragging()
|#47 0x55555a9d5033 TabDragController::Drag()
|#48 0x55555a616641 TabStrip::ContinueDrag()
|#49 0x55555a61bc38 TabStrip::OnMouseDragged()
|#50 0x7fffeb3f8c48 views::View::ProcessMouseDragged()
|#51 0x7fffeb3f860b views::View::OnMouseEvent()
|#52 0x7fffeb035143 ui::EventHandler::OnEvent()
|#53 0x7fffeb030dd0 ui::EventDispatcher::DispatchEvent()
|#54 0x7fffeb03072b ui::EventDispatcher::ProcessEvent()
|#55 0x7fffeb0304c2 ui::EventDispatcherDelegate::DispatchEventToTarget()
|#56 0x7fffeb0303a2 ui::EventDispatcherDelegate::DispatchEvent()
|#57 0x7fffeb40da07 views::internal::RootView::OnMouseDragged()
|#58 0x7fffeb41592d views::Widget::OnMouseEvent()
|#59 0x7fffeb451237 views::NativeWidgetAura::OnMouseEvent()
|#60 0x7fffeb035143 ui::EventHandler::OnEvent()
|#61 0x7fffeb030dd0 ui::EventDispatcher::DispatchEvent()
Status: Started (was: Assigned)
Yup, dangling pointers. Fixed in this CL: https://codereview.chromium.org/2383263002/

Comment 8 by tic...@gmail.com, Oct 17 2016

Confirm happening on:
Version 55.0.2883.7 dev (64-bit)
Platform 8872.6.0 (Official Build) dev-channel samus
ARC Version 3337798
Firmware Google_Samus.6300.174.0

Feedback sent 08:29 BST

#CBC-RS/TC-watchlist
Just a heads up that this bug is marked as ReleaseBlock-Beta for R55, and we are looking to promote R55 to beta with the build on Monday evening. 

Do you think we can get the CL landed in the next day or so and merged to R55 by Monday afternoon?

Since this is a Chrome side CL we should probably try to get this landed by Sunday afternoon so it exists in the Chrome build on Monday.
The CL needs two more approvals, but I expect it to land tomorrow, barring more refactoring requests.
It looks like the CL is about ready, do you think we can get this merged and into 55 in the next day?
Landing as soon as the tree opens...
Looks like it is in the CQ again, though I am afraid we are probably going to miss the first R55 beta with this, since we start a build at 9 and will not have time to PFQ a chrome, we may have to go without it :(. 

Does this effectively make external monitor usage impossible? Or is this more like a flake, occasional failure?
Project Member

Comment 14 by bugdroid1@chromium.org, Oct 27 2016

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

commit 4b33bfeda856f7ae20ffa43176e5bd529d5a100a
Author: domlaskowski <domlaskowski@chromium.org>
Date: Thu Oct 27 00:34:22 2016

Generalize layer mirroring for phantom windows

Previously, the layers of a phantom window were recreated when the
surface changed in the corresponding layers of the original window.
The code also assumed that layers with surfaces are leaves in the
layer tree, but Exosphere surfaces are nested. Recursive layer
cloning would be inefficient for surfaces changing in each frame,
so this CL adds an alternative way to mirror layers. In addition,
the bounds of Exosphere surfaces relative to their parent window
are updated whenever the window moves, so this CL provides a way
to synchronize relative positions of layers in phantom windows.

In addition to implementing phantom windows for ARC apps, this CL
fixes three bugs related to mirroring:

  1) Memory corruption due to the non-recursive layer cloning.
  2) Dangling pointers due to observers sticking around.
  3) Black Alt+Tab previews for ARC windows.

BUG= 642894 
BUG=649452
BUG= 653113 
TEST=ARC apps that render continuously (e.g. games, video players)
     can be dragged to external displays, and their content is
     mirrored in phantom windows.
TEST=ARC apps are mirrored in Alt+Tab previews.
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

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

[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ash/BUILD.gn
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ash/aura/wm_window_aura.cc
[delete] https://crrev.com/9da2eea3e67b631828d981152ff80f68ae599ef5/ash/common/wm/forwarding_layer_delegate.cc
[delete] https://crrev.com/9da2eea3e67b631828d981152ff80f68ae599ef5/ash/common/wm/forwarding_layer_delegate.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ash/common/wm/window_cycle_list.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ash/rotator/screen_rotation_animator.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ash/utility/screenshot_controller.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ash/wm/drag_window_controller.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ash/wm/window_mirror_view.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ash/wm/window_mirror_view.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/cc/layers/surface_layer.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/chrome/browser/ui/views/frame/contents_web_view.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/components/exo/surface.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/components/exo/surface.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/components/exo/surface_unittest.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/content/browser/renderer_host/delegated_frame_host.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/content/browser/renderer_host/delegated_frame_host.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/arc/notification/arc_custom_notification_view.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/aura/window.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer_observer.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer_owner.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer_owner.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer_owner_delegate.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer_owner_unittest.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer_tree_owner.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer_tree_owner.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/compositor/layer_unittest.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/views/cocoa/bridged_native_widget.mm
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/views/view.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/views/view_unittest_aura.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/wm/core/window_animations.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/wm/core/window_util.cc
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/wm/core/window_util.h
[modify] https://crrev.com/4b33bfeda856f7ae20ffa43176e5bd529d5a100a/ui/wm/core/window_util_unittest.cc

Labels: Merge-Request-55
IIRC, the crashes are sporadic, so it's not completely unusable.
Labels: -Merge-Request-55 Merge-Approved-55
Ok thanks, then we will probably just be missing this one for the first beta, but can pick it up in the second (we are running low on time to get a new Chrome into it). 
Labels: -ReleaseBlock-Beta
Removing the release block based on comment 15, we should still get this merged for the next beta candidate though.
Project Member

Comment 18 by bugdroid1@chromium.org, Oct 27 2016

Labels: -merge-approved-55 merge-merged-2883
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/497b50fc19904a059de566474ff099519a4c881a

commit 497b50fc19904a059de566474ff099519a4c881a
Author: Luis Hector Chavez <lhchavez@google.com>
Date: Thu Oct 27 21:11:39 2016

[M55] Generalize layer mirroring for phantom windows

Previously, the layers of a phantom window were recreated when the
surface changed in the corresponding layers of the original window.
The code also assumed that layers with surfaces are leaves in the
layer tree, but Exosphere surfaces are nested. Recursive layer
cloning would be inefficient for surfaces changing in each frame,
so this CL adds an alternative way to mirror layers. In addition,
the bounds of Exosphere surfaces relative to their parent window
are updated whenever the window moves, so this CL provides a way
to synchronize relative positions of layers in phantom windows.

In addition to implementing phantom windows for ARC apps, this CL
fixes three bugs related to mirroring:

  1) Memory corruption due to the non-recursive layer cloning.
  2) Dangling pointers due to observers sticking around.
  3) Black Alt+Tab previews for ARC windows.

R=lhchavez@chromium.org
TBR=danakj@chromium.org, oshima@chromium.org, reveman@chromium.org, sadrul@chromium.org, sky@chromium.org
BUG= 642894 
BUG=649452
BUG= 653113 
TEST=ARC apps that render continuously (e.g. games, video players)
     can be dragged to external displays, and their content is
     mirrored in phantom windows.
TEST=ARC apps are mirrored in Alt+Tab previews.
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

Review-Url: https://codereview.chromium.org/2383263002
Cr-Commit-Position: refs/heads/master@{#427891}
(cherry picked from commit 4b33bfeda856f7ae20ffa43176e5bd529d5a100a)

Review URL: https://codereview.chromium.org/2459653003 .

Cr-Commit-Position: refs/branch-heads/2883@{#345}
Cr-Branched-From: 614d31daee2f61b0180df403a8ad43f20b9f6dd7-refs/heads/master@{#423768}

[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/BUILD.gn
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/aura/wm_window_aura.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/common/wm/window_cycle_list.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/rotator/screen_rotation_animator.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/utility/screenshot_controller.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/wm/drag_window_controller.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/wm/window_mirror_view.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/wm/window_mirror_view.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/cc/layers/surface_layer.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/chrome/browser/ui/views/frame/contents_web_view.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/components/exo/surface.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/components/exo/surface.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/components/exo/surface_unittest.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/delegated_frame_host.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/delegated_frame_host.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/arc/notification/arc_custom_notification_view.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/aura/window.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_observer.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_owner.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_owner.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_owner_delegate.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_owner_unittest.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_tree_owner.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_tree_owner.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_unittest.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/views/cocoa/bridged_native_widget.mm
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/views/view.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/views/view_unittest_aura.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/wm/core/window_animations.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/wm/core/window_util.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/wm/core/window_util.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/wm/core/window_util_unittest.cc

Project Member

Comment 19 by bugdroid1@chromium.org, Oct 27 2016

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

commit 1d94ce480b3688a564ca4e7ff57cc93191d95743
Author: lhchavez <lhchavez@chromium.org>
Date: Thu Oct 27 21:55:00 2016

Revert of [M55] Generalize layer mirroring for phantom windows (patchset #1 id:1 of https://codereview.chromium.org/2459653003/ )

Reason for revert:
This broke Windows build: https://bugs.chromium.org/p/chromium/issues/detail?id=660183

Original issue's description:
> [M55] Generalize layer mirroring for phantom windows
>
> Previously, the layers of a phantom window were recreated when the
> surface changed in the corresponding layers of the original window.
> The code also assumed that layers with surfaces are leaves in the
> layer tree, but Exosphere surfaces are nested. Recursive layer
> cloning would be inefficient for surfaces changing in each frame,
> so this CL adds an alternative way to mirror layers. In addition,
> the bounds of Exosphere surfaces relative to their parent window
> are updated whenever the window moves, so this CL provides a way
> to synchronize relative positions of layers in phantom windows.
>
> In addition to implementing phantom windows for ARC apps, this CL
> fixes three bugs related to mirroring:
>
>   1) Memory corruption due to the non-recursive layer cloning.
>   2) Dangling pointers due to observers sticking around.
>   3) Black Alt+Tab previews for ARC windows.
>
> R=lhchavez@chromium.org
> TBR=danakj@chromium.org, oshima@chromium.org, reveman@chromium.org, sadrul@chromium.org, sky@chromium.org
> BUG= 642894 
> BUG=649452
> BUG= 653113 
> TEST=ARC apps that render continuously (e.g. games, video players)
>      can be dragged to external displays, and their content is
>      mirrored in phantom windows.
> TEST=ARC apps are mirrored in Alt+Tab previews.
> CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
>
> Review-Url: https://codereview.chromium.org/2383263002
> Cr-Commit-Position: refs/heads/master@{#427891}
> (cherry picked from commit 4b33bfeda856f7ae20ffa43176e5bd529d5a100a)
>
> Committed: https://chromium.googlesource.com/chromium/src/+/497b50fc19904a059de566474ff099519a4c881a

TBR=danakj@chromium.org,oshima@chromium.org,reveman@chromium.org,sadrul@chromium.org,sky@chromium.org,domlaskowski@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 642894 

Review-Url: https://codereview.chromium.org/2458833003
Cr-Commit-Position: refs/branch-heads/2883@{#346}
Cr-Branched-From: 614d31daee2f61b0180df403a8ad43f20b9f6dd7-refs/heads/master@{#423768}

[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/BUILD.gn
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/aura/wm_window_aura.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/common/wm/window_cycle_list.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/rotator/screen_rotation_animator.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/utility/screenshot_controller.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/wm/drag_window_controller.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/wm/window_mirror_view.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/wm/window_mirror_view.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/cc/layers/surface_layer.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/chrome/browser/ui/views/frame/contents_web_view.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/components/exo/surface.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/components/exo/surface.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/components/exo/surface_unittest.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/delegated_frame_host.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/delegated_frame_host.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/arc/notification/arc_custom_notification_view.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/aura/window.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_observer.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_owner.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_owner.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_owner_delegate.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_owner_unittest.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_tree_owner.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_tree_owner.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_unittest.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/views/cocoa/bridged_native_widget.mm
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/views/view.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/views/view_unittest_aura.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/wm/core/window_animations.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/wm/core/window_util.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/wm/core/window_util.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/wm/core/window_util_unittest.cc

Project Member

Comment 20 by bugdroid1@chromium.org, Oct 27 2016

Labels: merge-merged-2840
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/497b50fc19904a059de566474ff099519a4c881a

commit 497b50fc19904a059de566474ff099519a4c881a
Author: Luis Hector Chavez <lhchavez@google.com>
Date: Thu Oct 27 21:11:39 2016

[M55] Generalize layer mirroring for phantom windows

Previously, the layers of a phantom window were recreated when the
surface changed in the corresponding layers of the original window.
The code also assumed that layers with surfaces are leaves in the
layer tree, but Exosphere surfaces are nested. Recursive layer
cloning would be inefficient for surfaces changing in each frame,
so this CL adds an alternative way to mirror layers. In addition,
the bounds of Exosphere surfaces relative to their parent window
are updated whenever the window moves, so this CL provides a way
to synchronize relative positions of layers in phantom windows.

In addition to implementing phantom windows for ARC apps, this CL
fixes three bugs related to mirroring:

  1) Memory corruption due to the non-recursive layer cloning.
  2) Dangling pointers due to observers sticking around.
  3) Black Alt+Tab previews for ARC windows.

R=lhchavez@chromium.org
TBR=danakj@chromium.org, oshima@chromium.org, reveman@chromium.org, sadrul@chromium.org, sky@chromium.org
BUG= 642894 
BUG=649452
BUG= 653113 
TEST=ARC apps that render continuously (e.g. games, video players)
     can be dragged to external displays, and their content is
     mirrored in phantom windows.
TEST=ARC apps are mirrored in Alt+Tab previews.
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

Review-Url: https://codereview.chromium.org/2383263002
Cr-Commit-Position: refs/heads/master@{#427891}
(cherry picked from commit 4b33bfeda856f7ae20ffa43176e5bd529d5a100a)

Review URL: https://codereview.chromium.org/2459653003 .

Cr-Commit-Position: refs/branch-heads/2883@{#345}
Cr-Branched-From: 614d31daee2f61b0180df403a8ad43f20b9f6dd7-refs/heads/master@{#423768}

[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/BUILD.gn
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/aura/wm_window_aura.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/common/wm/window_cycle_list.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/rotator/screen_rotation_animator.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/utility/screenshot_controller.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/wm/drag_window_controller.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/wm/window_mirror_view.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ash/wm/window_mirror_view.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/cc/layers/surface_layer.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/chrome/browser/ui/views/frame/contents_web_view.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/components/exo/surface.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/components/exo/surface.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/components/exo/surface_unittest.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/delegated_frame_host.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/delegated_frame_host.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/arc/notification/arc_custom_notification_view.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/aura/window.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_observer.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_owner.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_owner.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_owner_delegate.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_owner_unittest.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_tree_owner.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_tree_owner.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/compositor/layer_unittest.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/views/cocoa/bridged_native_widget.mm
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/views/view.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/views/view_unittest_aura.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/wm/core/window_animations.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/wm/core/window_util.cc
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/wm/core/window_util.h
[modify] https://crrev.com/497b50fc19904a059de566474ff099519a4c881a/ui/wm/core/window_util_unittest.cc

Project Member

Comment 21 by bugdroid1@chromium.org, Oct 27 2016

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

commit 1d94ce480b3688a564ca4e7ff57cc93191d95743
Author: lhchavez <lhchavez@chromium.org>
Date: Thu Oct 27 21:55:00 2016

Revert of [M55] Generalize layer mirroring for phantom windows (patchset #1 id:1 of https://codereview.chromium.org/2459653003/ )

Reason for revert:
This broke Windows build: https://bugs.chromium.org/p/chromium/issues/detail?id=660183

Original issue's description:
> [M55] Generalize layer mirroring for phantom windows
>
> Previously, the layers of a phantom window were recreated when the
> surface changed in the corresponding layers of the original window.
> The code also assumed that layers with surfaces are leaves in the
> layer tree, but Exosphere surfaces are nested. Recursive layer
> cloning would be inefficient for surfaces changing in each frame,
> so this CL adds an alternative way to mirror layers. In addition,
> the bounds of Exosphere surfaces relative to their parent window
> are updated whenever the window moves, so this CL provides a way
> to synchronize relative positions of layers in phantom windows.
>
> In addition to implementing phantom windows for ARC apps, this CL
> fixes three bugs related to mirroring:
>
>   1) Memory corruption due to the non-recursive layer cloning.
>   2) Dangling pointers due to observers sticking around.
>   3) Black Alt+Tab previews for ARC windows.
>
> R=lhchavez@chromium.org
> TBR=danakj@chromium.org, oshima@chromium.org, reveman@chromium.org, sadrul@chromium.org, sky@chromium.org
> BUG= 642894 
> BUG=649452
> BUG= 653113 
> TEST=ARC apps that render continuously (e.g. games, video players)
>      can be dragged to external displays, and their content is
>      mirrored in phantom windows.
> TEST=ARC apps are mirrored in Alt+Tab previews.
> CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
>
> Review-Url: https://codereview.chromium.org/2383263002
> Cr-Commit-Position: refs/heads/master@{#427891}
> (cherry picked from commit 4b33bfeda856f7ae20ffa43176e5bd529d5a100a)
>
> Committed: https://chromium.googlesource.com/chromium/src/+/497b50fc19904a059de566474ff099519a4c881a

TBR=danakj@chromium.org,oshima@chromium.org,reveman@chromium.org,sadrul@chromium.org,sky@chromium.org,domlaskowski@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 642894 

Review-Url: https://codereview.chromium.org/2458833003
Cr-Commit-Position: refs/branch-heads/2883@{#346}
Cr-Branched-From: 614d31daee2f61b0180df403a8ad43f20b9f6dd7-refs/heads/master@{#423768}

[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/BUILD.gn
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/aura/wm_window_aura.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/common/wm/window_cycle_list.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/rotator/screen_rotation_animator.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/utility/screenshot_controller.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/wm/drag_window_controller.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/wm/window_mirror_view.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ash/wm/window_mirror_view.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/cc/layers/surface_layer.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/chrome/browser/ui/views/frame/contents_web_view.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/components/exo/surface.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/components/exo/surface.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/components/exo/surface_unittest.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/delegated_frame_host.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/delegated_frame_host.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/arc/notification/arc_custom_notification_view.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/aura/window.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_observer.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_owner.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_owner.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_owner_delegate.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_owner_unittest.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_tree_owner.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_tree_owner.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/compositor/layer_unittest.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/views/cocoa/bridged_native_widget.mm
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/views/view.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/views/view_unittest_aura.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/wm/core/window_animations.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/wm/core/window_util.cc
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/wm/core/window_util.h
[modify] https://crrev.com/1d94ce480b3688a564ca4e7ff57cc93191d95743/ui/wm/core/window_util_unittest.cc

Cc: bhthompson@google.com
Sorry about the bad merge. I overlooked that crrev.com/6627dfc6e2247fd121673698eef9398c52fcd82d is a dependency of my CL.

Bernie: would it be possible to merge that CL as well, or should I refactor my CL so it applies cleanly on M55?
That is a pretty wide ranging CL, how sure are we that it is safe to merge itself?

Both cherry-picking that CL and modifying your CL carry risk, but it is hard for me to say which is safer, so I would defer to you. If you think we are safer taking the prior CL wholesale then refactoring lets go with that. 
It turns out that the refactoring was trivial, so we can skip merging that other CL.
Project Member

Comment 25 by bugdroid1@chromium.org, Oct 28 2016

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

commit cc5903023a09b0560e4041daa109c7b5431f7cb4
Author: Mitsuru Oshima <oshima@chromium.org>
Date: Fri Oct 28 21:55:07 2016

[M55] Generalize layer mirroring for phantom windows

Previously, the layers of a phantom window were recreated when the
surface changed in the corresponding layers of the original window.
The code also assumed that layers with surfaces are leaves in the
layer tree, but Exosphere surfaces are nested. Recursive layer
cloning would be inefficient for surfaces changing in each frame,
so this CL adds an alternative way to mirror layers. In addition,
the bounds of Exosphere surfaces relative to their parent window
are updated whenever the window moves, so this CL provides a way
to synchronize relative positions of layers in phantom windows.

In addition to implementing phantom windows for ARC apps, this CL
fixes three bugs related to mirroring:

  1) Memory corruption due to the non-recursive layer cloning.
  2) Dangling pointers due to observers sticking around.
  3) Black Alt+Tab previews for ARC windows.

BUG= 642894 
BUG=649452
BUG= 653113 
TEST=ARC apps that render continuously (e.g. games, video players)
     can be dragged to external displays, and their content is
     mirrored in phantom windows.
TEST=ARC apps are mirrored in Alt+Tab previews.

Review-Url: https://codereview.chromium.org/2383263002
Cr-Commit-Position: refs/heads/master@{#427891}
(cherry picked from commit 4b33bfeda856f7ae20ffa43176e5bd529d5a100a)
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel
R=oshima@chromium.org, sky@chromium.org

Review URL: https://codereview.chromium.org/2457163003 .

Cr-Commit-Position: refs/branch-heads/2883@{#364}
Cr-Branched-From: 614d31daee2f61b0180df403a8ad43f20b9f6dd7-refs/heads/master@{#423768}

[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ash/BUILD.gn
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ash/aura/wm_window_aura.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ash/common/wm/window_cycle_list.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ash/rotator/screen_rotation_animator.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ash/utility/screenshot_controller.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ash/wm/drag_window_controller.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ash/wm/window_mirror_view.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ash/wm/window_mirror_view.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/cc/layers/surface_layer.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/chrome/browser/ui/views/frame/contents_web_view.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/components/exo/surface.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/components/exo/surface.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/components/exo/surface_unittest.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/content/browser/renderer_host/delegated_frame_host.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/content/browser/renderer_host/delegated_frame_host.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/arc/notification/arc_custom_notification_view.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/aura/window.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer_observer.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer_owner.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer_owner.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer_owner_delegate.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer_owner_unittest.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer_tree_owner.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer_tree_owner.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/compositor/layer_unittest.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/views/cocoa/bridged_native_widget.mm
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/views/view.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/views/view_unittest_aura.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/wm/core/window_animations.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/wm/core/window_util.cc
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/wm/core/window_util.h
[modify] https://crrev.com/cc5903023a09b0560e4041daa109c7b5431f7cb4/ui/wm/core/window_util_unittest.cc

Status: Fixed (was: Started)
Status: Verified (was: Fixed)
Verified Chrome version 55.0.2883.35/8872.35.0

Comment 28 by dimu@google.com, Nov 4 2016

Labels: -merge-merged-2840
[Automated comment] removing mislabelled merge-merged-2840

Sign in to add a comment