15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell/shell_delegate_impl.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ash/accessibility_delegate.h" 81e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ash/default_accessibility_delegate.h" 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ash/default_user_wallpaper_delegate.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/gpu_support_stub.h" 110f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "ash/media_delegate.h" 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ash/new_window_delegate.h" 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ash/session/session_state_delegate.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/shell/context_menu.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell/example_factory.h" 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ash/shell/keyboard_controller_proxy_stub.h" 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "ash/shell/shelf_delegate_impl.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell/toplevel_window.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_window_ids.h" 20d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ash/system/tray/default_system_tray_delegate.h" 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ash/wm/window_state.h" 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/message_loop/message_loop.h" 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/strings/utf_string_conversions.h" 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/user_manager/user_info_impl.h" 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/app_list/app_list_view_delegate.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/window.h" 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/wm/core/input_method_event_filter.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace shell { 311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace { 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class NewWindowDelegateImpl : public NewWindowDelegate { 341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) public: 351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NewWindowDelegateImpl() {} 361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual ~NewWindowDelegateImpl() {} 371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // NewWindowDelegate: 391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void NewTab() OVERRIDE {} 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void NewWindow(bool incognito) OVERRIDE { 411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ash::shell::ToplevelWindow::CreateParams create_params; 421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) create_params.can_resize = true; 431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) create_params.can_maximize = true; 441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ash::shell::ToplevelWindow::CreateToplevelWindow(create_params); 451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void OpenFileManager() OVERRIDE {} 471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void OpenCrosh() OVERRIDE {} 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void RestoreTab() OVERRIDE {} 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void ShowKeyboardOverlay() OVERRIDE {} 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void ShowTaskManager() OVERRIDE {} 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void OpenFeedbackPage() OVERRIDE {} 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) private: 541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NewWindowDelegateImpl); 551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}; 561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class MediaDelegateImpl : public MediaDelegate { 580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) public: 590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) MediaDelegateImpl() {} 600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) virtual ~MediaDelegateImpl() {} 610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 62010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // MediaDelegate: 630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) virtual void HandleMediaNextTrack() OVERRIDE {} 640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) virtual void HandleMediaPlayPause() OVERRIDE {} 650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) virtual void HandleMediaPrevTrack() OVERRIDE {} 66010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual MediaCaptureState GetMediaCaptureState( 67010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) content::BrowserContext* context) OVERRIDE { 68010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return MEDIA_CAPTURE_VIDEO; 69010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) private: 720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MediaDelegateImpl); 730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}; 740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 75010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class SessionStateDelegateImpl : public SessionStateDelegate { 76010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) public: 77010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) SessionStateDelegateImpl() 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : screen_locked_(false), user_info_(new user_manager::UserInfoImpl()) {} 79010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 80010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual ~SessionStateDelegateImpl() {} 81010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 82010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // SessionStateDelegate: 83010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual content::BrowserContext* GetBrowserContextByIndex( 84010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) MultiProfileIndex index) OVERRIDE { 85010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return Shell::GetInstance()->delegate()->GetActiveBrowserContext(); 86010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 87010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual content::BrowserContext* GetBrowserContextForWindow( 88010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) aura::Window* window) OVERRIDE { 89010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return Shell::GetInstance()->delegate()->GetActiveBrowserContext(); 90010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 91010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual int GetMaximumNumberOfLoggedInUsers() const OVERRIDE { return 3; } 92010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual int NumberOfLoggedInUsers() const OVERRIDE { 93010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // ash_shell has 2 users. 94010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return 2; 95010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 96010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool IsActiveUserSessionStarted() const OVERRIDE { return true; } 97010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool CanLockScreen() const OVERRIDE { return true; } 98010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool IsScreenLocked() const OVERRIDE { return screen_locked_; } 99010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool ShouldLockScreenBeforeSuspending() const OVERRIDE { 100010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return false; 101010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 102010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void LockScreen() OVERRIDE { 103010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) shell::CreateLockScreen(); 104010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) screen_locked_ = true; 105010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Shell::GetInstance()->UpdateShelfVisibility(); 106010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 107010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void UnlockScreen() OVERRIDE { 108010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) screen_locked_ = false; 109010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Shell::GetInstance()->UpdateShelfVisibility(); 110010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 111010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool IsUserSessionBlocked() const OVERRIDE { 112010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return !IsActiveUserSessionStarted() || IsScreenLocked(); 113010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 114010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual SessionState GetSessionState() const OVERRIDE { 115010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Assume that if session is not active we're at login. 116010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return IsActiveUserSessionStarted() ? SESSION_STATE_ACTIVE 117010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) : SESSION_STATE_LOGIN_PRIMARY; 118010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual const user_manager::UserInfo* GetUserInfo( 120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MultiProfileIndex index) const OVERRIDE { 121010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return user_info_.get(); 122010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual const user_manager::UserInfo* GetUserInfo( 124010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) content::BrowserContext* context) const OVERRIDE { 125010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return user_info_.get(); 126010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 127010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual bool ShouldShowAvatar(aura::Window* window) const OVERRIDE { 128010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return !user_info_->GetImage().isNull(); 129010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) } 130010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void SwitchActiveUser(const std::string& user_id) OVERRIDE {} 131010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void CycleActiveUser(CycleUser cycle_user) OVERRIDE {} 1326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual bool IsMultiProfileAllowedByPrimaryUserPolicy() const OVERRIDE { 1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return true; 1346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 135010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void AddSessionStateObserver( 136010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ash::SessionStateObserver* observer) OVERRIDE {} 137010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void RemoveSessionStateObserver( 138010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ash::SessionStateObserver* observer) OVERRIDE {} 139010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 140010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) private: 141010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bool screen_locked_; 142010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 143010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // A pseudo user info. 144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<user_manager::UserInfo> user_info_; 145010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 146010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SessionStateDelegateImpl); 147010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}; 148010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 1491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} // namespace 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShellDelegateImpl::ShellDelegateImpl() 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : watcher_(NULL), 153a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) shelf_delegate_(NULL), 154f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) browser_context_(NULL) { 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShellDelegateImpl::~ShellDelegateImpl() { 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShellDelegateImpl::SetWatcher(WindowWatcher* watcher) { 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) watcher_ = watcher; 162a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (shelf_delegate_) 163a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) shelf_delegate_->set_watcher(watcher); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 166c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool ShellDelegateImpl::IsFirstRunAfterBoot() const { 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)bool ShellDelegateImpl::IsIncognitoAllowed() const { 1710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) return true; 1720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 1730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)bool ShellDelegateImpl::IsMultiProfilesEnabled() const { 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool ShellDelegateImpl::IsRunningInForcedAppMode() const { 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochbool ShellDelegateImpl::IsMultiAccountEnabled() const { 183a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch return false; 184a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch} 185a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ShellDelegateImpl::PreInit() { 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 189effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid ShellDelegateImpl::PreShutdown() { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ShellDelegateImpl::Exit() { 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::MessageLoopForUI::current()->Quit(); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)keyboard::KeyboardControllerProxy* 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ShellDelegateImpl::CreateKeyboardControllerProxy() { 1983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return new KeyboardControllerProxyStub(); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 201c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid ShellDelegateImpl::VirtualKeyboardActivated(bool activated) { 202c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 203c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 204c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid ShellDelegateImpl::AddVirtualKeyboardStateObserver( 205c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch VirtualKeyboardStateObserver* observer) { 206c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 207c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 208c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid ShellDelegateImpl::RemoveVirtualKeyboardStateObserver( 209c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch VirtualKeyboardStateObserver* observer) { 210c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 211c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)content::BrowserContext* ShellDelegateImpl::GetActiveBrowserContext() { 213f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return browser_context_; 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciapp_list::AppListViewDelegate* ShellDelegateImpl::GetAppListViewDelegate() { 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!app_list_view_delegate_) 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci app_list_view_delegate_.reset(ash::shell::CreateAppListViewDelegate()); 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return app_list_view_delegate_.get(); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 222a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)ShelfDelegate* ShellDelegateImpl::CreateShelfDelegate(ShelfModel* model) { 223a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) shelf_delegate_ = new ShelfDelegateImpl(watcher_); 224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return shelf_delegate_; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ash::SystemTrayDelegate* ShellDelegateImpl::CreateSystemTrayDelegate() { 228d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) return new DefaultSystemTrayDelegate; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ash::UserWallpaperDelegate* ShellDelegateImpl::CreateUserWallpaperDelegate() { 23268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return new DefaultUserWallpaperDelegate(); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ash::SessionStateDelegate* ShellDelegateImpl::CreateSessionStateDelegate() { 236010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) return new SessionStateDelegateImpl; 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)ash::AccessibilityDelegate* ShellDelegateImpl::CreateAccessibilityDelegate() { 240c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return new DefaultAccessibilityDelegate; 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)ash::NewWindowDelegate* ShellDelegateImpl::CreateNewWindowDelegate() { 2441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return new NewWindowDelegateImpl; 2451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 2461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 2470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)ash::MediaDelegate* ShellDelegateImpl::CreateMediaDelegate() { 2480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) return new MediaDelegateImpl; 2490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 2500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ui::MenuModel* ShellDelegateImpl::CreateContextMenu( 2525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) aura::Window* root, 2535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ash::ShelfItemDelegate* item_delegate, 2545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ash::ShelfItem* item) { 2555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return new ContextMenu(root); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)GPUSupport* ShellDelegateImpl::CreateGPUSupport() { 2595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Real GPU support depends on src/content, so just use a stub. 2605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return new GPUSupportStub; 2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 263c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)base::string16 ShellDelegateImpl::GetProductName() const { 264c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return base::string16(); 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace shell 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 269