Index: athena/activity/activity_manager_impl.cc |
diff --git a/athena/activity/activity_manager_impl.cc b/athena/activity/activity_manager_impl.cc |
deleted file mode 100644 |
index a9981556d7f65dfc60e35944efe99fd01790b9e5..0000000000000000000000000000000000000000 |
--- a/athena/activity/activity_manager_impl.cc |
+++ /dev/null |
@@ -1,164 +0,0 @@ |
-// 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/activity/activity_manager_impl.h" |
- |
-#include <algorithm> |
- |
-#include "athena/activity/activity_widget_delegate.h" |
-#include "athena/activity/public/activity.h" |
-#include "athena/activity/public/activity_manager_observer.h" |
-#include "athena/activity/public/activity_view_model.h" |
-#include "athena/screen/public/screen_manager.h" |
-#include "base/logging.h" |
-#include "base/observer_list.h" |
-#include "ui/aura/window.h" |
-#include "ui/views/widget/widget.h" |
-#include "ui/wm/public/activation_client.h" |
- |
-namespace athena { |
- |
-namespace { |
- |
-ActivityManager* instance = nullptr; |
- |
-views::Widget* CreateWidget(Activity* activity) { |
- aura::Window* window = activity->GetWindow(); |
- views::Widget* widget = |
- window ? views::Widget::GetWidgetForNativeView(window) : nullptr; |
- if (widget) |
- return widget; |
- widget = new views::Widget; |
- views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
- params.delegate = |
- new ActivityWidgetDelegate(activity->GetActivityViewModel()); |
- widget->Init(params); |
- return widget; |
-} |
- |
-views::Widget* GetWidget(Activity* activity) { |
- CHECK(activity); |
- CHECK(activity->GetWindow()); |
- return views::Widget::GetWidgetForNativeWindow(activity->GetWindow()); |
-} |
- |
-} // namespace |
- |
-ActivityManagerImpl::ActivityManagerImpl() { |
- CHECK(!instance); |
- instance = this; |
- |
- aura::Window* root_window = |
- ScreenManager::Get()->GetContext()->GetRootWindow(); |
- aura::client::GetActivationClient(root_window)->AddObserver(this); |
-} |
- |
-ActivityManagerImpl::~ActivityManagerImpl() { |
- aura::Window* root_window = |
- ScreenManager::Get()->GetContext()->GetRootWindow(); |
- aura::client::GetActivationClient(root_window)->RemoveObserver(this); |
- while (!activities_.empty()) |
- Activity::Delete(activities_.front()); |
- |
- CHECK_EQ(this, instance); |
- instance = nullptr; |
-} |
- |
-void ActivityManagerImpl::AddActivity(Activity* activity) { |
- CHECK(activities_.end() == |
- std::find(activities_.begin(), activities_.end(), activity)); |
- activities_.insert(activities_.begin(), activity); |
- views::Widget* widget = CreateWidget(activity); |
- widget->GetNativeView()->AddObserver(this); |
- activity->GetActivityViewModel()->Init(); |
- |
- FOR_EACH_OBSERVER(ActivityManagerObserver, |
- observers_, |
- OnActivityStarted(activity)); |
-} |
- |
-void ActivityManagerImpl::RemoveActivity(Activity* activity) { |
- std::vector<Activity*>::iterator find = |
- std::find(activities_.begin(), activities_.end(), activity); |
- DCHECK(find != activities_.end()); |
- if (find != activities_.end()) { |
- FOR_EACH_OBSERVER( |
- ActivityManagerObserver, observers_, OnActivityEnding(activity)); |
- activities_.erase(find); |
- views::Widget* widget = GetWidget(activity); |
- widget->GetNativeView()->RemoveObserver(this); |
- widget->Close(); |
- } |
-} |
- |
-const ActivityList& ActivityManagerImpl::GetActivityList() { |
- return activities_; |
-} |
- |
-Activity* ActivityManagerImpl::GetActivityForWindow(aura::Window* window) { |
- struct Matcher { |
- Matcher(aura::Window* w) : window(w) {} |
- bool operator()(Activity* activity) { |
- return activity->GetWindow() == window; |
- } |
- aura::Window* window; |
- }; |
- std::vector<Activity*>::iterator iter = |
- std::find_if(activities_.begin(), activities_.end(), Matcher(window)); |
- return iter != activities_.end() ? *iter : nullptr; |
-} |
- |
-void ActivityManagerImpl::AddObserver(ActivityManagerObserver* observer) { |
- observers_.AddObserver(observer); |
-} |
- |
-void ActivityManagerImpl::RemoveObserver(ActivityManagerObserver* observer) { |
- observers_.RemoveObserver(observer); |
-} |
- |
-void ActivityManagerImpl::OnWindowDestroying(aura::Window* window) { |
- Activity* activity = GetActivityForWindow(window); |
- if (activity) { |
- window->RemoveObserver(this); |
- Activity::Delete(activity); |
- } |
-} |
- |
-void ActivityManagerImpl::OnWindowActivated(aura::Window* gained_active, |
- aura::Window* lost_active) { |
- Activity* activity = GetActivityForWindow(gained_active); |
- if (!activity) |
- return; |
- CHECK(!activities_.empty()); |
- if (activity == activities_.front()) |
- return; |
- // Move the activity for |gained_active| at the front of the list. |
- ActivityList::reverse_iterator iter = std::find(activities_.rbegin(), |
- activities_.rend(), |
- activity); |
- CHECK(iter != activities_.rend()); |
- std::rotate(iter, iter + 1, activities_.rend()); |
- FOR_EACH_OBSERVER(ActivityManagerObserver, |
- observers_, |
- OnActivityOrderChanged()); |
-} |
- |
-// static |
-ActivityManager* ActivityManager::Create() { |
- new ActivityManagerImpl(); |
- CHECK(instance); |
- return instance; |
-} |
- |
-ActivityManager* ActivityManager::Get() { |
- return instance; |
-} |
- |
-void ActivityManager::Shutdown() { |
- CHECK(instance); |
- delete instance; |
-} |
- |
- |
-} // namespace athena |