Chromium Code Reviews| Index: services/ui/ws/window_tree_host_factory.cc |
| diff --git a/services/ui/ws/window_tree_host_factory.cc b/services/ui/ws/window_tree_host_factory.cc |
| index 1a2170b0a67144aeeaf31f6260afcce47ada1e00..5d617e50d1297b99bc89252d625bc7c12e581ccd 100644 |
| --- a/services/ui/ws/window_tree_host_factory.cc |
| +++ b/services/ui/ws/window_tree_host_factory.cc |
| @@ -4,9 +4,12 @@ |
| #include "services/ui/ws/window_tree_host_factory.h" |
| +#include "services/ui/ws/default_access_policy.h" |
| #include "services/ui/ws/display.h" |
| #include "services/ui/ws/display_binding.h" |
| #include "services/ui/ws/window_server.h" |
| +#include "services/ui/ws/window_tree.h" |
| +#include "services/ui/ws/window_tree_binding.h" |
| namespace ui { |
| namespace ws { |
| @@ -22,18 +25,39 @@ WindowTreeHostFactory::WindowTreeHostFactory(WindowServer* window_server, |
| WindowTreeHostFactory::~WindowTreeHostFactory() {} |
| -void WindowTreeHostFactory::AddBinding( |
| - mojom::WindowTreeHostFactoryRequest request) { |
| +void WindowTreeHostFactory::Init(mojom::WindowTreeHostFactoryRequest request, |
| + mojom::WindowTreeRequest tree_request, |
| + mojom::WindowTreeClientPtr tree_client) { |
| bindings_.AddBinding(this, std::move(request)); |
| + |
| + std::unique_ptr<ws::WindowTree> tree( |
| + new ws::WindowTree(window_server_, user_id_, nullptr /*ServerWindow*/, |
| + base::WrapUnique(new DefaultAccessPolicy))); |
| + |
| + std::unique_ptr<ws::DefaultWindowTreeBinding> tree_binding( |
| + new ws::DefaultWindowTreeBinding(tree.get(), window_server_, |
| + std::move(tree_request), |
| + std::move(tree_client))); |
| + |
| + tree_ = tree.get(); |
| + |
| + // Pass nullptr as mojom::WindowTreePtr (3rd paramaneter), because in external |
|
fwang
2017/02/27 20:06:50
parameter
tonikitoo
2017/03/01 05:05:44
Done.
|
| + // window mode, the WindowTreePtr is created on the aura/WindowTreeClient |
| + // side. |
| + // |
| + // NOTE: This call to ::AddTree calls ::Init. However, it wont trigger a |
|
fwang
2017/02/28 08:23:53
won't
tonikitoo
2017/03/01 05:05:44
Done.
|
| + // ::OnEmbed call because the WindowTree instance was created above passing |
| + // 'nullptr' as the ServerWindow, hence there is no 'root' yet. |
| + window_server_->AddTree(std::move(tree), std::move(tree_binding), |
| + nullptr /*mojom::WindowTreePtr*/); |
| } |
| void WindowTreeHostFactory::CreateWindowTreeHost( |
| - mojom::WindowTreeHostRequest host, |
| - mojom::WindowTreeClientPtr tree_client) { |
| + mojom::WindowTreeHostRequest tree_host_request) { |
| Display* display = new Display(window_server_); |
| std::unique_ptr<DisplayBindingImpl> display_binding( |
| - new DisplayBindingImpl(std::move(host), display, user_id_, |
| - std::move(tree_client), window_server_)); |
| + new DisplayBindingImpl(std::move(tree_host_request), display, user_id_, |
| + nullptr /* tree_client */, window_server_)); |
|
fwang
2017/02/28 08:23:53
ditto about /* */
|
| display->Init(platform_display_init_params_, std::move(display_binding)); |
| } |