| 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..f0c9075a0252d94024beab94b3080cd9e2cd5c19 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 parameter), because in external
|
| + // window mode, the WindowTreePtr is created on the aura/WindowTreeClient
|
| + // side.
|
| + //
|
| + // NOTE: This call to ::AddTree calls ::Init. However, it will not trigger a
|
| + // ::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_));
|
| display->Init(platform_display_init_params_, std::move(display_binding));
|
| }
|
|
|
|
|