blob: 4d9461fa3039071f2481d0d0c81d89f23ca3bc49 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/mojo_runner_state.h"
#include "components/mus/public/interfaces/window_manager.mojom.h"
#include "mojo/application/public/cpp/application_delegate.h"
#include "mojo/application/public/cpp/application_impl.h"
#include "mojo/converters/network/network_type_converters.h"
#include "mojo/runner/child/runner_connection.h"
#include "ui/views/mus/window_manager_connection.h"
class ChromeApplicationDelegate : public mojo::ApplicationDelegate {
public:
ChromeApplicationDelegate() {}
~ChromeApplicationDelegate() override {}
private:
void Initialize(mojo::ApplicationImpl* application) override {
mus::mojom::WindowManagerPtr window_manager;
application->ConnectToService(
mojo::URLRequest::From(std::string("mojo:example_wm")),
&window_manager);
views::WindowManagerConnection::Create(window_manager.Pass(), application);
}
bool ConfigureIncomingConnection(
mojo::ApplicationConnection* connection) override {
return false;
}
DISALLOW_COPY_AND_ASSIGN(ChromeApplicationDelegate);
};
MojoRunnerState::MojoRunnerState() {}
MojoRunnerState::~MojoRunnerState() {}
void MojoRunnerState::WaitForConnection() {
mojo::InterfaceRequest<mojo::Application> application_request;
runner_connection_.reset(
mojo::runner::RunnerConnection::ConnectToRunner(&application_request));
application_delegate_.reset(new ChromeApplicationDelegate);
application_impl_.reset(new mojo::ApplicationImpl(
application_delegate_.get(), application_request.Pass()));
application_impl_->WaitForInitialize();
}