| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ash/test/test_shell_delegate.h" |
| |
| #include <limits> |
| |
| #include "ash/default_accessibility_delegate.h" |
| #include "ash/gpu_support_stub.h" |
| #include "ash/media_delegate.h" |
| #include "ash/new_window_delegate.h" |
| #include "ash/session/session_state_delegate.h" |
| #include "ash/shell.h" |
| #include "ash/shell/keyboard_controller_proxy_stub.h" |
| #include "ash/shell_window_ids.h" |
| #include "ash/test/test_session_state_delegate.h" |
| #include "ash/test/test_shelf_delegate.h" |
| #include "ash/test/test_system_tray_delegate.h" |
| #include "ash/test/test_user_wallpaper_delegate.h" |
| #include "ash/wm/window_state.h" |
| #include "ash/wm/window_util.h" |
| #include "base/logging.h" |
| #include "content/public/test/test_browser_context.h" |
| #include "ui/app_list/app_list_model.h" |
| #include "ui/app_list/app_list_view_delegate.h" |
| #include "ui/app_list/test/app_list_test_view_delegate.h" |
| #include "ui/aura/window.h" |
| |
| #if defined(OS_CHROMEOS) |
| #include "ash/system/tray/system_tray_notifier.h" |
| #endif |
| |
| namespace ash { |
| namespace test { |
| namespace { |
| |
| class NewWindowDelegateImpl : public NewWindowDelegate { |
| public: |
| NewWindowDelegateImpl() {} |
| virtual ~NewWindowDelegateImpl() {} |
| |
| private: |
| // NewWindowDelegate: |
| virtual void NewTab() OVERRIDE {} |
| virtual void NewWindow(bool incognito) OVERRIDE {} |
| virtual void OpenFileManager() OVERRIDE {} |
| virtual void OpenCrosh() OVERRIDE {} |
| virtual void RestoreTab() OVERRIDE {} |
| virtual void ShowKeyboardOverlay() OVERRIDE {} |
| virtual void ShowTaskManager() OVERRIDE {} |
| virtual void OpenFeedbackPage() OVERRIDE {} |
| |
| DISALLOW_COPY_AND_ASSIGN(NewWindowDelegateImpl); |
| }; |
| |
| class MediaDelegateImpl : public MediaDelegate { |
| public: |
| MediaDelegateImpl() : state_(MEDIA_CAPTURE_NONE) {} |
| virtual ~MediaDelegateImpl() {} |
| |
| void set_media_capture_state(MediaCaptureState state) { state_ = state; } |
| |
| private: |
| // MediaDelegate: |
| virtual void HandleMediaNextTrack() OVERRIDE {} |
| virtual void HandleMediaPlayPause() OVERRIDE {} |
| virtual void HandleMediaPrevTrack() OVERRIDE {} |
| virtual MediaCaptureState GetMediaCaptureState( |
| content::BrowserContext* context) OVERRIDE { |
| return state_; |
| } |
| |
| MediaCaptureState state_; |
| |
| DISALLOW_COPY_AND_ASSIGN(MediaDelegateImpl); |
| }; |
| |
| } // namespace |
| |
| TestShellDelegate::TestShellDelegate() |
| : num_exit_requests_(0), |
| multi_profiles_enabled_(false), |
| test_session_state_delegate_(NULL) { |
| } |
| |
| TestShellDelegate::~TestShellDelegate() { |
| } |
| |
| bool TestShellDelegate::IsFirstRunAfterBoot() const { |
| return false; |
| } |
| |
| bool TestShellDelegate::IsIncognitoAllowed() const { |
| return true; |
| } |
| |
| bool TestShellDelegate::IsMultiProfilesEnabled() const { |
| return multi_profiles_enabled_; |
| } |
| |
| bool TestShellDelegate::IsRunningInForcedAppMode() const { |
| return false; |
| } |
| |
| bool TestShellDelegate::IsMultiAccountEnabled() const { |
| return false; |
| } |
| |
| void TestShellDelegate::PreInit() { |
| } |
| |
| void TestShellDelegate::PreShutdown() { |
| } |
| |
| void TestShellDelegate::Exit() { |
| num_exit_requests_++; |
| } |
| |
| keyboard::KeyboardControllerProxy* |
| TestShellDelegate::CreateKeyboardControllerProxy() { |
| return new KeyboardControllerProxyStub(); |
| } |
| |
| void TestShellDelegate::VirtualKeyboardActivated(bool activated) { |
| FOR_EACH_OBSERVER(ash::VirtualKeyboardStateObserver, |
| keyboard_state_observer_list_, |
| OnVirtualKeyboardStateChanged(activated)); |
| } |
| |
| void TestShellDelegate::AddVirtualKeyboardStateObserver( |
| VirtualKeyboardStateObserver* observer) { |
| keyboard_state_observer_list_.AddObserver(observer); |
| } |
| |
| void TestShellDelegate::RemoveVirtualKeyboardStateObserver( |
| VirtualKeyboardStateObserver* observer) { |
| keyboard_state_observer_list_.RemoveObserver(observer); |
| } |
| |
| content::BrowserContext* TestShellDelegate::GetActiveBrowserContext() { |
| active_browser_context_.reset(new content::TestBrowserContext()); |
| return active_browser_context_.get(); |
| } |
| |
| app_list::AppListViewDelegate* TestShellDelegate::CreateAppListViewDelegate() { |
| return new app_list::test::AppListTestViewDelegate; |
| } |
| |
| ShelfDelegate* TestShellDelegate::CreateShelfDelegate(ShelfModel* model) { |
| return new TestShelfDelegate(model); |
| } |
| |
| SystemTrayDelegate* TestShellDelegate::CreateSystemTrayDelegate() { |
| return new TestSystemTrayDelegate; |
| } |
| |
| UserWallpaperDelegate* TestShellDelegate::CreateUserWallpaperDelegate() { |
| return new TestUserWallpaperDelegate(); |
| } |
| |
| SessionStateDelegate* TestShellDelegate::CreateSessionStateDelegate() { |
| DCHECK(!test_session_state_delegate_); |
| test_session_state_delegate_ = new TestSessionStateDelegate(); |
| return test_session_state_delegate_; |
| } |
| |
| AccessibilityDelegate* TestShellDelegate::CreateAccessibilityDelegate() { |
| return new DefaultAccessibilityDelegate(); |
| } |
| |
| NewWindowDelegate* TestShellDelegate::CreateNewWindowDelegate() { |
| return new NewWindowDelegateImpl; |
| } |
| |
| MediaDelegate* TestShellDelegate::CreateMediaDelegate() { |
| return new MediaDelegateImpl; |
| } |
| |
| ui::MenuModel* TestShellDelegate::CreateContextMenu( |
| aura::Window* root, |
| ash::ShelfItemDelegate* item_delegate, |
| ash::ShelfItem* item) { |
| return NULL; |
| } |
| |
| GPUSupport* TestShellDelegate::CreateGPUSupport() { |
| // Real GPU support depends on src/content, so just use a stub. |
| return new GPUSupportStub; |
| } |
| |
| base::string16 TestShellDelegate::GetProductName() const { |
| return base::string16(); |
| } |
| |
| void TestShellDelegate::SetMediaCaptureState(MediaCaptureState state) { |
| #if defined(OS_CHROMEOS) |
| Shell* shell = Shell::GetInstance(); |
| static_cast<MediaDelegateImpl*>(shell->media_delegate()) |
| ->set_media_capture_state(state); |
| shell->system_tray_notifier()->NotifyMediaCaptureChanged(); |
| #endif |
| } |
| |
| } // namespace test |
| } // namespace ash |