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

Unified Diff: athena/activity/activity_manager_impl.cc

Issue 596623005: Do not show the activity widget in ActivityManager::AddActivity (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: rebase Created 6 years, 3 months 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/activity_manager_unittest.cc » ('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 b0074cbab3cfcc8e657578ecb396f465d425b0df..7313b24430169ab240aad14b54de00335799099c 100644
--- a/athena/activity/activity_manager_impl.cc
+++ b/athena/activity/activity_manager_impl.cc
@@ -6,11 +6,13 @@
#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_manager.h"
+#include "athena/activity/public/activity_view_model.h"
#include "base/logging.h"
#include "base/observer_list.h"
+#include "ui/views/widget/widget.h"
namespace athena {
@@ -18,6 +20,25 @@ namespace {
ActivityManager* instance = NULL;
+views::Widget* CreateWidget(Activity* activity) {
+ ActivityViewModel* view_model = activity->GetActivityViewModel();
+ views::Widget* widget = view_model->CreateWidget();
+ if (widget)
+ return widget;
+ widget = new views::Widget;
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
+ params.delegate = new ActivityWidgetDelegate(view_model);
+ widget->Init(params);
+ activity->GetActivityViewModel()->Init();
+ return widget;
+}
+
+views::Widget* GetWidget(Activity* activity) {
+ CHECK(activity);
+ CHECK(activity->GetWindow());
+ return views::Widget::GetWidgetForNativeWindow(activity->GetWindow());
+}
+
} // namespace
ActivityManagerImpl::ActivityManagerImpl() {
@@ -37,8 +58,8 @@ void ActivityManagerImpl::AddActivity(Activity* activity) {
CHECK(activities_.end() ==
std::find(activities_.begin(), activities_.end(), activity));
activities_.push_back(activity);
- ActivityViewManager* manager = ActivityViewManager::Get();
- manager->AddActivity(activity);
+ views::Widget* widget = CreateWidget(activity);
+ widget->AddObserver(this);
FOR_EACH_OBSERVER(ActivityManagerObserver,
observers_,
OnActivityStarted(activity));
@@ -47,19 +68,21 @@ void ActivityManagerImpl::AddActivity(Activity* activity) {
void ActivityManagerImpl::RemoveActivity(Activity* activity) {
std::vector<Activity*>::iterator find =
std::find(activities_.begin(), activities_.end(), activity);
- FOR_EACH_OBSERVER(ActivityManagerObserver,
- observers_,
- OnActivityEnding(activity));
+ DCHECK(find != activities_.end());
if (find != activities_.end()) {
+ FOR_EACH_OBSERVER(
+ ActivityManagerObserver, observers_, OnActivityEnding(activity));
activities_.erase(find);
- ActivityViewManager* manager = ActivityViewManager::Get();
- manager->RemoveActivity(activity);
+ views::Widget* widget = GetWidget(activity);
+ widget->RemoveObserver(this);
+ widget->Close();
}
}
void ActivityManagerImpl::UpdateActivity(Activity* activity) {
- ActivityViewManager* manager = ActivityViewManager::Get();
- manager->UpdateActivity(activity);
+ views::Widget* widget = GetWidget(activity);
+ widget->UpdateWindowIcon();
+ widget->UpdateWindowTitle();
}
void ActivityManagerImpl::AddObserver(ActivityManagerObserver* observer) {
@@ -70,10 +93,28 @@ void ActivityManagerImpl::RemoveObserver(ActivityManagerObserver* observer) {
observers_.RemoveObserver(observer);
}
+void ActivityManagerImpl::OnWidgetDestroying(views::Widget* widget) {
+ 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(widget->GetNativeWindow()));
+ DCHECK(iter != activities_.end());
+ if (iter != activities_.end()) {
+ widget->RemoveObserver(this);
+ Activity::Delete(*iter);
+ }
+}
+
// static
ActivityManager* ActivityManager::Create() {
- ActivityViewManager::Create();
-
new ActivityManagerImpl();
CHECK(instance);
return instance;
@@ -86,7 +127,6 @@ ActivityManager* ActivityManager::Get() {
void ActivityManager::Shutdown() {
CHECK(instance);
delete instance;
- ActivityViewManager::Shutdown();
}
« no previous file with comments | « athena/activity/activity_manager_impl.h ('k') | athena/activity/activity_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698