blob: 49f44993c048d3ecd93d52a9db0cc377faf9e72d [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 "mash/session/session.h"
#include "base/bind.h"
#include "base/command_line.h"
#include "mash/common/config.h"
#include "services/service_manager/public/cpp/connector.h"
#if defined(OS_CHROMEOS)
#include "ash/components/quick_launch/public/mojom/constants.mojom.h" // nogncheck
#endif
namespace mash {
namespace session {
Session::Session(service_manager::mojom::ServiceRequest request)
: service_binding_(this, std::move(request)) {}
Session::~Session() = default;
void Session::OnStart() {
StartWindowManager();
#if defined(OS_CHROMEOS)
// TODO(jonross): Re-enable when QuickLaunch for all builds once it no longer
// deadlocks with ServiceManager shutdown in mash_browser_tests.
// (crbug.com/594852)
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
quick_launch::mojom::kServiceName)) {
// TODO(https://crbug.com/904148): This should not use |WarmService()|.
service_binding_.GetConnector()->WarmService(
service_manager::ServiceFilter::ByName(
quick_launch::mojom::kServiceName));
}
#endif // defined(OS_CHROMEOS)
}
void Session::StartWindowManager() {
// TODO(beng): monitor this service for death & bring down the whole system
// if necessary.
service_binding_.GetConnector()->WarmService(
service_manager::ServiceFilter::ByName(
common::GetWindowManagerServiceName()));
}
} // namespace session
} // namespace main