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

Side by Side Diff: athena/activity/activity_view_manager_impl.cc

Issue 536013002: Decoupling visibility states from webcontent, adding visibility management in ResourceManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a few more unittests 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "athena/activity/public/activity_view_manager.h" 5 #include "athena/activity/public/activity_view_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 9
10 #include "athena/activity/activity_widget_delegate.h" 10 #include "athena/activity/activity_widget_delegate.h"
(...skipping 11 matching lines...) Expand all
22 22
23 typedef std::map<Activity*, views::Widget*> ActivityWidgetMap; 23 typedef std::map<Activity*, views::Widget*> ActivityWidgetMap;
24 24
25 views::Widget* CreateWidget(Activity* activity) { 25 views::Widget* CreateWidget(Activity* activity) {
26 ActivityViewModel* view_model = activity->GetActivityViewModel(); 26 ActivityViewModel* view_model = activity->GetActivityViewModel();
27 views::Widget* widget = new views::Widget; 27 views::Widget* widget = new views::Widget;
28 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); 28 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
29 params.delegate = new ActivityWidgetDelegate(view_model); 29 params.delegate = new ActivityWidgetDelegate(view_model);
30 params.activatable = views::Widget::InitParams::ACTIVATABLE_YES; 30 params.activatable = views::Widget::InitParams::ACTIVATABLE_YES;
31 widget->Init(params); 31 widget->Init(params);
32 activity->GetActivityViewModel()->Init();
33 return widget; 32 return widget;
34 } 33 }
35 34
36 ActivityViewManager* instance = NULL; 35 ActivityViewManager* instance = NULL;
37 36
38 class ActivityViewManagerImpl : public ActivityViewManager, 37 class ActivityViewManagerImpl : public ActivityViewManager,
39 public views::WidgetObserver { 38 public views::WidgetObserver {
40 public: 39 public:
41 ActivityViewManagerImpl() { 40 ActivityViewManagerImpl() {
42 CHECK(!instance); 41 CHECK(!instance);
43 instance = this; 42 instance = this;
44 } 43 }
45 44
46 virtual ~ActivityViewManagerImpl() { 45 virtual ~ActivityViewManagerImpl() {
47 CHECK_EQ(this, instance); 46 CHECK_EQ(this, instance);
48 instance = NULL; 47 instance = NULL;
49 } 48 }
50 49
51 // ActivityViewManager: 50 // ActivityViewManager:
52 virtual void AddActivity(Activity* activity) OVERRIDE { 51 virtual void AddActivity(Activity* activity) OVERRIDE {
53 CHECK(activity_widgets_.end() == activity_widgets_.find(activity)); 52 CHECK(activity_widgets_.end() == activity_widgets_.find(activity));
54 views::Widget* container = CreateWidget(activity); 53 views::Widget* container = CreateWidget(activity);
55 container->AddObserver(this); 54 container->AddObserver(this);
56 activity_widgets_[activity] = container; 55 activity_widgets_[activity] = container;
57 container->UpdateWindowTitle(); 56 container->UpdateWindowTitle();
58 container->Show(); 57 container->Show();
59 container->Activate(); 58 container->Activate();
59 // Call the Activity model to initialize itself (and maybe re-order
60 // the activity against others).
61 activity->GetActivityViewModel()->Init();
60 } 62 }
61 63
62 virtual void RemoveActivity(Activity* activity) OVERRIDE { 64 virtual void RemoveActivity(Activity* activity) OVERRIDE {
63 ActivityWidgetMap::iterator find = activity_widgets_.find(activity); 65 ActivityWidgetMap::iterator find = activity_widgets_.find(activity);
64 if (find != activity_widgets_.end()) { 66 if (find != activity_widgets_.end()) {
65 views::Widget* widget = find->second; 67 views::Widget* widget = find->second;
66 widget->RemoveObserver(this); 68 widget->RemoveObserver(this);
67 widget->Close(); 69 widget->Close();
68 activity_widgets_.erase(activity); 70 activity_widgets_.erase(activity);
69 } 71 }
70 } 72 }
71 73
72 virtual void UpdateActivity(Activity* activity) OVERRIDE { 74 virtual void UpdateActivity(Activity* activity) OVERRIDE {
73 ActivityWidgetMap::iterator find = activity_widgets_.find(activity); 75 ActivityWidgetMap::iterator find = activity_widgets_.find(activity);
74 if (find != activity_widgets_.end()) 76 if (find != activity_widgets_.end())
75 find->second->UpdateWindowTitle(); 77 find->second->UpdateWindowTitle();
76 } 78 }
77 79
78 // views::WidgetObserver: 80 // views::WidgetObserver:
79 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE { 81 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE {
80 for (ActivityWidgetMap::iterator iter = activity_widgets_.begin(); 82 for (ActivityWidgetMap::iterator iter = activity_widgets_.begin();
81 iter != activity_widgets_.end(); 83 iter != activity_widgets_.end();
82 ++iter) { 84 ++iter) {
83 if (iter->second == widget) { 85 if (iter->second == widget) {
84 delete iter->first; 86 Activity::CloseActivity(iter->first);
85 break; 87 break;
86 } 88 }
87 } 89 }
88 } 90 }
89 91
90 private: 92 private:
91 ActivityWidgetMap activity_widgets_; 93 ActivityWidgetMap activity_widgets_;
92 94
93 DISALLOW_COPY_AND_ASSIGN(ActivityViewManagerImpl); 95 DISALLOW_COPY_AND_ASSIGN(ActivityViewManagerImpl);
94 }; 96 };
(...skipping 10 matching lines...) Expand all
105 ActivityViewManager* ActivityViewManager::Get() { 107 ActivityViewManager* ActivityViewManager::Get() {
106 return instance; 108 return instance;
107 } 109 }
108 110
109 void ActivityViewManager::Shutdown() { 111 void ActivityViewManager::Shutdown() {
110 CHECK(instance); 112 CHECK(instance);
111 delete instance; 113 delete instance;
112 } 114 }
113 115
114 } // namespace athena 116 } // namespace athena
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698