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

Side by Side Diff: ui/aura_shell/shell.cc

Issue 8509027: Add status area to Aura builds. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move status area view ids back to chromeos Created 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/aura_shell/shell.h ('k') | ui/aura_shell/shell_delegate.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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ui/aura_shell/shell.h" 5 #include "ui/aura_shell/shell.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "ui/aura/aura_switches.h" 9 #include "ui/aura/aura_switches.h"
10 #include "ui/aura/desktop.h" 10 #include "ui/aura/desktop.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 } 75 }
76 76
77 } // namespace 77 } // namespace
78 78
79 // static 79 // static
80 Shell* Shell::instance_ = NULL; 80 Shell* Shell::instance_ = NULL;
81 81
82 //////////////////////////////////////////////////////////////////////////////// 82 ////////////////////////////////////////////////////////////////////////////////
83 // Shell, public: 83 // Shell, public:
84 84
85 Shell::Shell() 85 Shell::Shell(ShellDelegate* delegate)
86 : ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { 86 : ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)),
87 delegate_(delegate) {
87 aura::Desktop::GetInstance()->SetEventFilter( 88 aura::Desktop::GetInstance()->SetEventFilter(
88 new internal::DesktopEventFilter); 89 new internal::DesktopEventFilter);
89 aura::Desktop::GetInstance()->SetStackingClient( 90 aura::Desktop::GetInstance()->SetStackingClient(
90 new internal::StackingController); 91 new internal::StackingController);
91 } 92 }
92 93
93 Shell::~Shell() { 94 Shell::~Shell() {
94 // Make sure we delete WorkspaceController before launcher is 95 // Make sure we delete WorkspaceController before launcher is
95 // deleted as it has a reference to launcher model. 96 // deleted as it has a reference to launcher model.
96 workspace_controller_.reset(); 97 workspace_controller_.reset();
97 } 98 }
98 99
99 // static 100 // static
101 Shell* Shell::CreateInstance(ShellDelegate* delegate) {
102 CHECK(!instance_);
103 instance_ = new Shell(delegate);
104 instance_->Init();
105 return instance_;
106 }
107
108 // static
100 Shell* Shell::GetInstance() { 109 Shell* Shell::GetInstance() {
101 if (!instance_) { 110 DCHECK(instance_);
102 instance_ = new Shell;
103 instance_->Init();
104 }
105 return instance_; 111 return instance_;
106 } 112 }
107 113
108 // static 114 // static
109 void Shell::DeleteInstanceForTesting() { 115 void Shell::DeleteInstanceForTesting() {
110 delete instance_; 116 delete instance_;
111 instance_ = NULL; 117 instance_ = NULL;
112 } 118 }
113 119
114 void Shell::Init() { 120 void Shell::Init() {
(...skipping 11 matching lines...) Expand all
126 132
127 internal::DesktopLayoutManager* desktop_layout = 133 internal::DesktopLayoutManager* desktop_layout =
128 new internal::DesktopLayoutManager(desktop_window); 134 new internal::DesktopLayoutManager(desktop_window);
129 desktop_window->SetLayoutManager(desktop_layout); 135 desktop_window->SetLayoutManager(desktop_layout);
130 136
131 desktop_layout->set_background_widget(internal::CreateDesktopBackground()); 137 desktop_layout->set_background_widget(internal::CreateDesktopBackground());
132 aura::Window* default_container = 138 aura::Window* default_container =
133 GetContainer(internal::kShellWindowId_DefaultContainer); 139 GetContainer(internal::kShellWindowId_DefaultContainer);
134 launcher_.reset(new Launcher(default_container)); 140 launcher_.reset(new Launcher(default_container));
135 141
142 views::Widget* status_widget = NULL;
143 if (delegate_.get())
144 status_widget = delegate_->CreateStatusArea();
145 if (!status_widget)
146 status_widget = internal::CreateStatusArea();
147
136 shelf_layout_controller_.reset(new internal::ShelfLayoutController( 148 shelf_layout_controller_.reset(new internal::ShelfLayoutController(
137 launcher_->widget(), internal::CreateStatusArea())); 149 launcher_->widget(), status_widget));
150
138 desktop_layout->set_shelf(shelf_layout_controller_.get()); 151 desktop_layout->set_shelf(shelf_layout_controller_.get());
139 152
140 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAuraWindows)) { 153 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAuraWindows)) {
141 EnableWorkspaceManager(); 154 EnableWorkspaceManager();
142 } else { 155 } else {
143 internal::ToplevelLayoutManager* toplevel_layout_manager = 156 internal::ToplevelLayoutManager* toplevel_layout_manager =
144 new internal::ToplevelLayoutManager(); 157 new internal::ToplevelLayoutManager();
145 default_container->SetLayoutManager(toplevel_layout_manager); 158 default_container->SetLayoutManager(toplevel_layout_manager);
146 toplevel_layout_manager->set_shelf(shelf_layout_controller_.get()); 159 toplevel_layout_manager->set_shelf(shelf_layout_controller_.get());
147 } 160 }
148 161
149 // Force a layout. 162 // Force a layout.
150 desktop_layout->OnWindowResized(); 163 desktop_layout->OnWindowResized();
151 } 164 }
152 165
153 void Shell::SetDelegate(ShellDelegate* delegate) {
154 delegate_.reset(delegate);
155 }
156
157 aura::Window* Shell::GetContainer(int container_id) { 166 aura::Window* Shell::GetContainer(int container_id) {
158 return const_cast<aura::Window*>( 167 return const_cast<aura::Window*>(
159 const_cast<const aura_shell::Shell*>(this)->GetContainer(container_id)); 168 const_cast<const aura_shell::Shell*>(this)->GetContainer(container_id));
160 } 169 }
161 170
162 const aura::Window* Shell::GetContainer(int container_id) const { 171 const aura::Window* Shell::GetContainer(int container_id) const {
163 return aura::Desktop::GetInstance()->GetChildById(container_id); 172 return aura::Desktop::GetInstance()->GetChildById(container_id);
164 } 173 }
165 174
166 void Shell::ToggleOverview() { 175 void Shell::ToggleOverview() {
(...skipping 12 matching lines...) Expand all
179 new internal::WorkspaceController(default_container)); 188 new internal::WorkspaceController(default_container));
180 workspace_controller_->SetLauncherModel(launcher_->model()); 189 workspace_controller_->SetLauncherModel(launcher_->model());
181 default_container->SetEventFilter( 190 default_container->SetEventFilter(
182 new internal::DefaultContainerEventFilter(default_container)); 191 new internal::DefaultContainerEventFilter(default_container));
183 default_container->SetLayoutManager( 192 default_container->SetLayoutManager(
184 new internal::DefaultContainerLayoutManager( 193 new internal::DefaultContainerLayoutManager(
185 workspace_controller_->workspace_manager())); 194 workspace_controller_->workspace_manager()));
186 } 195 }
187 196
188 } // namespace aura_shell 197 } // namespace aura_shell
OLDNEW
« no previous file with comments | « ui/aura_shell/shell.h ('k') | ui/aura_shell/shell_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698