Chromium Code Reviews| Index: services/ui/ws/window_tree.cc |
| diff --git a/services/ui/ws/window_tree.cc b/services/ui/ws/window_tree.cc |
| index f642e1f1c3291f98d25ebcc946bb1336a56e9068..f227b6cbcdaca550b06a74b05f4aa8cf1213d363 100644 |
| --- a/services/ui/ws/window_tree.cc |
| +++ b/services/ui/ws/window_tree.cc |
| @@ -100,9 +100,20 @@ void WindowTree::Init(std::unique_ptr<WindowTreeBinding> binding, |
| if (roots_.empty()) |
| return; |
| + DoOnEmbed(std::move(tree), nullptr /*ServerWindow*/); |
| +} |
| + |
| +void WindowTree::DoOnEmbed(mojom::WindowTreePtr tree, |
| + ServerWindow* root_window) { |
| std::vector<const ServerWindow*> to_send; |
| - CHECK_EQ(1u, roots_.size()); |
| - const ServerWindow* root = *roots_.begin(); |
| + |
| + bool in_external_window_mode = !!root_window; |
| + if (in_external_window_mode) |
| + CHECK_LE(1u, roots_.size()); |
| + else |
| + CHECK_EQ(1u, roots_.size()); |
|
fwang
2017/03/01 06:38:47
Does that compile when assertions are disabled?
|
| + |
| + const ServerWindow* root = root_window ? root_window : *roots_.begin(); |
| GetUnknownWindowsFrom(root, &to_send); |
| Display* display = GetDisplay(root); |
| @@ -189,8 +200,7 @@ void WindowTree::PrepareForWindowServerShutdown() { |
| window_manager_internal_ = binding_->GetWindowManager(); |
| } |
| -void WindowTree::AddRootForWindowManager(const ServerWindow* root) { |
| - DCHECK(window_manager_internal_); |
| +void WindowTree::AddRoot(const ServerWindow* root) { |
| const ClientWindowId client_window_id(WindowIdToTransportId(root->id())); |
| DCHECK_EQ(0u, client_id_to_window_id_map_.count(client_window_id)); |
| client_id_to_window_id_map_[client_window_id] = root->id(); |
| @@ -199,8 +209,12 @@ void WindowTree::AddRootForWindowManager(const ServerWindow* root) { |
| Display* display = GetDisplay(root); |
| DCHECK(display); |
| +} |
| - window_manager_internal_->WmNewDisplayAdded(display->ToDisplay(), |
| +void WindowTree::AddRootForWindowManager(const ServerWindow* root) { |
| + DCHECK(window_manager_internal_); |
| + AddRoot(root); |
| + window_manager_internal_->WmNewDisplayAdded(GetDisplay(root)->ToDisplay(), |
| WindowToWindowData(root), |
| root->parent()->IsDrawn()); |
| } |