blob: 20d0a7f65f6008337d564819f86cf96695ac2e0d [file] [log] [blame]
Torne (Richard Coles)58218062012-11-14 11:43:16 +00001// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ash/shell/shell_delegate_impl.h"
6
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +00007#include <limits>
8
Torne (Richard Coles)58218062012-11-14 11:43:16 +00009#include "ash/caps_lock_delegate_stub.h"
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000010#include "ash/host/root_window_host_factory.h"
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010011#include "ash/session_state_delegate.h"
12#include "ash/session_state_delegate_stub.h"
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000013#include "ash/shell/context_menu.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +000014#include "ash/shell/example_factory.h"
15#include "ash/shell/launcher_delegate_impl.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +000016#include "ash/shell/toplevel_window.h"
17#include "ash/shell_window_ids.h"
18#include "ash/wm/window_util.h"
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010019#include "base/message_loop/message_loop.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +000020#include "ui/aura/window.h"
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010021#include "ui/keyboard/keyboard_controller_proxy.h"
22#include "ui/views/corewm/input_method_event_filter.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +000023
24namespace ash {
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010025
26namespace {
27
28class DummyKeyboardControllerProxy : public keyboard::KeyboardControllerProxy {
29 public:
30 DummyKeyboardControllerProxy() {}
31 virtual ~DummyKeyboardControllerProxy() {}
32
33 private:
34 // Overridden from keyboard::KeyboardControllerProxy:
35 virtual content::BrowserContext* GetBrowserContext() OVERRIDE {
36 return Shell::GetInstance()->browser_context();
37 }
38
39 virtual ui::InputMethod* GetInputMethod() OVERRIDE {
40 return Shell::GetInstance()->input_method_filter()->input_method();
41 }
42
Torne (Richard Coles)90dce4d2013-05-29 14:40:03 +010043 virtual void RequestAudioInput(content::WebContents* web_contents,
44 const content::MediaStreamRequest& request,
45 const content::MediaResponseCallback& callback) OVERRIDE {
46 return;
47 }
48
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010049 DISALLOW_COPY_AND_ASSIGN(DummyKeyboardControllerProxy);
50};
51
52} // namespace
53
Torne (Richard Coles)58218062012-11-14 11:43:16 +000054namespace shell {
55
56ShellDelegateImpl::ShellDelegateImpl()
57 : watcher_(NULL),
58 launcher_delegate_(NULL),
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000059 spoken_feedback_enabled_(false),
60 high_contrast_enabled_(false),
61 screen_magnifier_enabled_(false),
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010062 screen_magnifier_type_(kDefaultMagnifierType),
63 large_cursor_enabled_(false) {
Torne (Richard Coles)58218062012-11-14 11:43:16 +000064}
65
66ShellDelegateImpl::~ShellDelegateImpl() {
67}
68
69void ShellDelegateImpl::SetWatcher(WindowWatcher* watcher) {
70 watcher_ = watcher;
71 if (launcher_delegate_)
72 launcher_delegate_->set_watcher(watcher);
73}
74
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010075bool ShellDelegateImpl::IsFirstRunAfterBoot() const {
Torne (Richard Coles)58218062012-11-14 11:43:16 +000076 return false;
77}
78
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010079bool ShellDelegateImpl::IsMultiProfilesEnabled() const {
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000080 return false;
81}
82
83bool ShellDelegateImpl::IsRunningInForcedAppMode() const {
84 return false;
85}
86
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000087void ShellDelegateImpl::PreInit() {
88}
89
Torne (Richard Coles)58218062012-11-14 11:43:16 +000090void ShellDelegateImpl::Shutdown() {
91}
92
93void ShellDelegateImpl::Exit() {
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +010094 base::MessageLoopForUI::current()->Quit();
Torne (Richard Coles)58218062012-11-14 11:43:16 +000095}
96
97void ShellDelegateImpl::NewTab() {
98}
99
100void ShellDelegateImpl::NewWindow(bool incognito) {
101 ash::shell::ToplevelWindow::CreateParams create_params;
102 create_params.can_resize = true;
103 create_params.can_maximize = true;
104 ash::shell::ToplevelWindow::CreateToplevelWindow(create_params);
105}
106
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100107void ShellDelegateImpl::ToggleFullscreen() {
108 ToggleMaximized();
109}
110
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000111void ShellDelegateImpl::ToggleMaximized() {
112 aura::Window* window = ash::wm::GetActiveWindow();
113 if (window)
114 ash::wm::ToggleMaximizedWindow(window);
115}
116
117void ShellDelegateImpl::OpenFileManager(bool as_dialog) {
118}
119
120void ShellDelegateImpl::OpenCrosh() {
121}
122
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000123void ShellDelegateImpl::RestoreTab() {
124}
125
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100126void ShellDelegateImpl::ShowKeyboardOverlay() {
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000127}
128
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100129keyboard::KeyboardControllerProxy*
130 ShellDelegateImpl::CreateKeyboardControllerProxy() {
131 return new DummyKeyboardControllerProxy();
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000132}
133
134void ShellDelegateImpl::ShowTaskManager() {
135}
136
137content::BrowserContext* ShellDelegateImpl::GetCurrentBrowserContext() {
138 return Shell::GetInstance()->browser_context();
139}
140
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000141void ShellDelegateImpl::ToggleSpokenFeedback(
142 AccessibilityNotificationVisibility notify) {
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000143 spoken_feedback_enabled_ = !spoken_feedback_enabled_;
144}
145
146bool ShellDelegateImpl::IsSpokenFeedbackEnabled() const {
147 return spoken_feedback_enabled_;
148}
149
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000150void ShellDelegateImpl::ToggleHighContrast() {
151 high_contrast_enabled_ = !high_contrast_enabled_;
152}
153
154bool ShellDelegateImpl::IsHighContrastEnabled() const {
155 return high_contrast_enabled_;
156}
157
158void ShellDelegateImpl::SetMagnifierEnabled(bool enabled) {
159 screen_magnifier_enabled_ = enabled;
160}
161
162void ShellDelegateImpl::SetMagnifierType(MagnifierType type) {
163 screen_magnifier_type_ = type;
164}
165
166bool ShellDelegateImpl::IsMagnifierEnabled() const {
167 return screen_magnifier_enabled_;
168}
169
170MagnifierType ShellDelegateImpl::GetMagnifierType() const {
171 return screen_magnifier_type_;
172}
173
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +0100174void ShellDelegateImpl::SetLargeCursorEnabled(bool enabled) {
175 large_cursor_enabled_ = enabled;
176}
177
178bool ShellDelegateImpl::IsLargeCursorEnabled() const {
179 return large_cursor_enabled_;
180}
181
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000182bool ShellDelegateImpl::ShouldAlwaysShowAccessibilityMenu() const {
183 return false;
184}
185
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100186void ShellDelegateImpl::SilenceSpokenFeedback() const {
187}
188
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000189app_list::AppListViewDelegate* ShellDelegateImpl::CreateAppListViewDelegate() {
190 return ash::shell::CreateAppListViewDelegate();
191}
192
193ash::LauncherDelegate* ShellDelegateImpl::CreateLauncherDelegate(
194 ash::LauncherModel* model) {
195 launcher_delegate_ = new LauncherDelegateImpl(watcher_);
196 return launcher_delegate_;
197}
198
199ash::SystemTrayDelegate* ShellDelegateImpl::CreateSystemTrayDelegate() {
200 return NULL;
201}
202
203ash::UserWallpaperDelegate* ShellDelegateImpl::CreateUserWallpaperDelegate() {
204 return NULL;
205}
206
207ash::CapsLockDelegate* ShellDelegateImpl::CreateCapsLockDelegate() {
208 return new CapsLockDelegateStub;
209}
210
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100211ash::SessionStateDelegate* ShellDelegateImpl::CreateSessionStateDelegate() {
212 return new SessionStateDelegateStub;
213}
214
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000215aura::client::UserActionClient* ShellDelegateImpl::CreateUserActionClient() {
216 return NULL;
217}
218
219void ShellDelegateImpl::OpenFeedbackPage() {
220}
221
222void ShellDelegateImpl::RecordUserMetricsAction(UserMetricsAction action) {
223}
224
225void ShellDelegateImpl::HandleMediaNextTrack() {
226}
227
228void ShellDelegateImpl::HandleMediaPlayPause() {
229}
230
231void ShellDelegateImpl::HandleMediaPrevTrack() {
232}
233
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000234void ShellDelegateImpl::SaveScreenMagnifierScale(double scale) {
235}
236
237double ShellDelegateImpl::GetSavedScreenMagnifierScale() {
238 return std::numeric_limits<double>::min();
239}
240
241ui::MenuModel* ShellDelegateImpl::CreateContextMenu(aura::RootWindow* root) {
242 return new ContextMenu(root);
243}
244
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000245RootWindowHostFactory* ShellDelegateImpl::CreateRootWindowHostFactory() {
246 return RootWindowHostFactory::Create();
247}
248
Torne (Richard Coles)c2e0dbd2013-05-09 18:35:53 +0100249base::string16 ShellDelegateImpl::GetProductName() const {
250 return base::string16();
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +0000251}
252
Torne (Richard Coles)58218062012-11-14 11:43:16 +0000253} // namespace shell
254} // namespace ash