| // Copyright 2014 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 "athena/main/athena_launcher.h" |
| |
| #include "athena/activity/public/activity_factory.h" |
| #include "athena/activity/public/activity_manager.h" |
| #include "athena/home/public/home_card.h" |
| #include "athena/input/public/input_manager.h" |
| #include "athena/main/placeholder.h" |
| #include "athena/screen/public/screen_manager.h" |
| #include "athena/wm/public/window_manager.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "ui/aura/window_property.h" |
| #include "ui/wm/core/visibility_controller.h" |
| |
| #if defined(USE_X11) |
| #include "ui/events/x/touch_factory_x11.h" |
| #endif |
| |
| namespace athena { |
| struct RootWindowState; |
| } |
| |
| DECLARE_WINDOW_PROPERTY_TYPE(athena::RootWindowState*); |
| |
| namespace athena { |
| |
| // Athena's per root window state. |
| struct RootWindowState { |
| scoped_ptr< ::wm::VisibilityController> visibility_client; |
| }; |
| |
| DEFINE_OWNED_WINDOW_PROPERTY_KEY(athena::RootWindowState, |
| kRootWindowStateKey, |
| NULL); |
| |
| void StartAthena(aura::Window* root_window, |
| athena::ActivityFactory* activity_factory, |
| athena::AppModelBuilder* app_model_builder) { |
| #if defined(USE_X11) |
| ui::TouchFactory::SetTouchDeviceListFromCommandLine(); |
| #endif |
| RootWindowState* root_window_state = new RootWindowState; |
| root_window->SetProperty(kRootWindowStateKey, root_window_state); |
| |
| root_window_state->visibility_client.reset(new ::wm::VisibilityController); |
| aura::client::SetVisibilityClient(root_window, |
| root_window_state->visibility_client.get()); |
| |
| athena::InputManager::Create()->OnRootWindowCreated(root_window); |
| athena::ScreenManager::Create(root_window); |
| athena::WindowManager::Create(); |
| athena::HomeCard::Create(app_model_builder); |
| athena::ActivityManager::Create(); |
| athena::ActivityFactory::RegisterActivityFactory(activity_factory); |
| SetupBackgroundImage(); |
| } |
| |
| void ShutdownAthena() { |
| athena::ActivityFactory::Shutdown(); |
| athena::ActivityManager::Shutdown(); |
| athena::HomeCard::Shutdown(); |
| athena::WindowManager::Shutdown(); |
| athena::ScreenManager::Shutdown(); |
| athena::InputManager::Shutdown(); |
| } |
| |
| } // namespace athena |