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

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: Addressed 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
« no previous file with comments | « athena/activity/activity_manager_unittest.cc ('k') | athena/activity/public/activity.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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's initializer. It might re-order the activity
60 // against others, which has to be done before before registering it to the
61 // system.
62 activity->GetActivityViewModel()->Init();
60 } 63 }
61 64
62 virtual void RemoveActivity(Activity* activity) OVERRIDE { 65 virtual void RemoveActivity(Activity* activity) OVERRIDE {
63 ActivityWidgetMap::iterator find = activity_widgets_.find(activity); 66 ActivityWidgetMap::iterator find = activity_widgets_.find(activity);
64 if (find != activity_widgets_.end()) { 67 if (find != activity_widgets_.end()) {
65 views::Widget* widget = find->second; 68 views::Widget* widget = find->second;
66 widget->RemoveObserver(this); 69 widget->RemoveObserver(this);
67 widget->Close(); 70 widget->Close();
68 activity_widgets_.erase(activity); 71 activity_widgets_.erase(activity);
69 } 72 }
70 } 73 }
71 74
72 virtual void UpdateActivity(Activity* activity) OVERRIDE { 75 virtual void UpdateActivity(Activity* activity) OVERRIDE {
73 ActivityWidgetMap::iterator find = activity_widgets_.find(activity); 76 ActivityWidgetMap::iterator find = activity_widgets_.find(activity);
74 if (find != activity_widgets_.end()) 77 if (find != activity_widgets_.end())
75 find->second->UpdateWindowTitle(); 78 find->second->UpdateWindowTitle();
76 } 79 }
77 80
78 // views::WidgetObserver: 81 // views::WidgetObserver:
79 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE { 82 virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE {
80 for (ActivityWidgetMap::iterator iter = activity_widgets_.begin(); 83 for (ActivityWidgetMap::iterator iter = activity_widgets_.begin();
81 iter != activity_widgets_.end(); 84 iter != activity_widgets_.end();
82 ++iter) { 85 ++iter) {
83 if (iter->second == widget) { 86 if (iter->second == widget) {
84 delete iter->first; 87 Activity::Delete(iter->first);
85 break; 88 break;
86 } 89 }
87 } 90 }
88 } 91 }
89 92
90 private: 93 private:
91 ActivityWidgetMap activity_widgets_; 94 ActivityWidgetMap activity_widgets_;
92 95
93 DISALLOW_COPY_AND_ASSIGN(ActivityViewManagerImpl); 96 DISALLOW_COPY_AND_ASSIGN(ActivityViewManagerImpl);
94 }; 97 };
(...skipping 10 matching lines...) Expand all
105 ActivityViewManager* ActivityViewManager::Get() { 108 ActivityViewManager* ActivityViewManager::Get() {
106 return instance; 109 return instance;
107 } 110 }
108 111
109 void ActivityViewManager::Shutdown() { 112 void ActivityViewManager::Shutdown() {
110 CHECK(instance); 113 CHECK(instance);
111 delete instance; 114 delete instance;
112 } 115 }
113 116
114 } // namespace athena 117 } // namespace athena
OLDNEW
« no previous file with comments | « athena/activity/activity_manager_unittest.cc ('k') | athena/activity/public/activity.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698