Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2081)

Unified Diff: athena/activity/activity_manager_impl.cc

Issue 707603002: athena: Use ActivityList where appropriate, and fix AppActivity tests. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « athena/activity/activity_manager_impl.h ('k') | athena/activity/public/DEPS » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: athena/activity/activity_manager_impl.cc
diff --git a/athena/activity/activity_manager_impl.cc b/athena/activity/activity_manager_impl.cc
index a9981556d7f65dfc60e35944efe99fd01790b9e5..210c83b11301960ef6a992e3b4a5215c9a192ae5 100644
--- a/athena/activity/activity_manager_impl.cc
+++ b/athena/activity/activity_manager_impl.cc
@@ -69,27 +69,29 @@ 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));
+ InitializeActivity(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();
- }
+ if (find == activities_.end())
+ return;
+ activities_.erase(find);
+ UninitializeActivity(activity);
+}
+
+ScopedActivity ActivityManagerImpl::ReplaceActivity(Activity* to_replace,
+ Activity* replace_with) {
+ std::vector<Activity*>::iterator find =
+ std::find(activities_.begin(), activities_.end(), to_replace);
+ if (find == activities_.end())
+ return ScopedActivity();
+ std::replace(find, find + 1, to_replace, replace_with);
+
+ UninitializeActivity(to_replace);
+ InitializeActivity(replace_with);
+ return ScopedActivity(to_replace);
}
const ActivityList& ActivityManagerImpl::GetActivityList() {
@@ -117,6 +119,23 @@ void ActivityManagerImpl::RemoveObserver(ActivityManagerObserver* observer) {
observers_.RemoveObserver(observer);
}
+void ActivityManagerImpl::InitializeActivity(Activity* activity) {
+ views::Widget* widget = CreateWidget(activity);
+ widget->GetNativeView()->AddObserver(this);
+ activity->GetActivityViewModel()->Init();
+ FOR_EACH_OBSERVER(ActivityManagerObserver,
+ observers_,
+ OnActivityStarted(activity));
+}
+
+void ActivityManagerImpl::UninitializeActivity(Activity* activity) {
+ FOR_EACH_OBSERVER(
+ ActivityManagerObserver, observers_, OnActivityEnding(activity));
+ views::Widget* widget = GetWidget(activity);
+ widget->GetNativeView()->RemoveObserver(this);
+ widget->Close();
+}
+
void ActivityManagerImpl::OnWindowDestroying(aura::Window* window) {
Activity* activity = GetActivityForWindow(window);
if (activity) {
« no previous file with comments | « athena/activity/activity_manager_impl.h ('k') | athena/activity/public/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698