| Index: athena/activity/activity_manager_impl.cc
|
| diff --git a/athena/activity/activity_manager_impl.cc b/athena/activity/activity_manager_impl.cc
|
| index 7313b24430169ab240aad14b54de00335799099c..bf8572114a2b6e0a998fcb9d2e117816902dfac4 100644
|
| --- a/athena/activity/activity_manager_impl.cc
|
| +++ b/athena/activity/activity_manager_impl.cc
|
| @@ -85,6 +85,19 @@ void ActivityManagerImpl::UpdateActivity(Activity* activity) {
|
| widget->UpdateWindowTitle();
|
| }
|
|
|
| +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 : NULL;
|
| +}
|
| +
|
| void ActivityManagerImpl::AddObserver(ActivityManagerObserver* observer) {
|
| observers_.AddObserver(observer);
|
| }
|
| @@ -94,22 +107,10 @@ void ActivityManagerImpl::RemoveObserver(ActivityManagerObserver* 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()) {
|
| + Activity* activity = GetActivityForWindow(widget->GetNativeWindow());
|
| + if (activity) {
|
| widget->RemoveObserver(this);
|
| - Activity::Delete(*iter);
|
| + Activity::Delete(activity);
|
| }
|
| }
|
|
|
|
|