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)#ifndef CHROME_BROWSER_UI_ASH_CHROME_SHELL_DELEGATE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_ASH_CHROME_SHELL_DELEGATE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/shelf/shelf_item_types.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_delegate.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/observer_list.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Browser; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace ash { 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ShelfItemDelegate; 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace content { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class WebContents; 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace keyboard { 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class KeyboardControllerProxy; 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS) 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace chromeos { 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class DisplayConfigurationObserver; 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ChromeLauncherController; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ChromeShellDelegate : public ash::ShellDelegate, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public content::NotificationObserver { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeShellDelegate(); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ChromeShellDelegate(); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static ChromeShellDelegate* instance() { return instance_; } 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ash::ShellDelegate overrides; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsFirstRunAfterBoot() const OVERRIDE; 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool IsMultiProfilesEnabled() const OVERRIDE; 520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) virtual bool IsIncognitoAllowed() const OVERRIDE; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool IsRunningInForcedAppMode() const OVERRIDE; 54a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual bool IsMultiAccountEnabled() const OVERRIDE; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void PreInit() OVERRIDE; 56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual void PreShutdown() OVERRIDE; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Exit() OVERRIDE; 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual keyboard::KeyboardControllerProxy* 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CreateKeyboardControllerProxy() OVERRIDE; 60c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void VirtualKeyboardActivated(bool activated) OVERRIDE; 61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void AddVirtualKeyboardStateObserver( 62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ash::VirtualKeyboardStateObserver* observer) OVERRIDE; 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void RemoveVirtualKeyboardStateObserver( 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ash::VirtualKeyboardStateObserver* observer) OVERRIDE; 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual content::BrowserContext* GetActiveBrowserContext() OVERRIDE; 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual app_list::AppListViewDelegate* GetAppListViewDelegate() OVERRIDE; 67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual ash::ShelfDelegate* CreateShelfDelegate( 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ash::ShelfModel* model) OVERRIDE; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ash::SystemTrayDelegate* CreateSystemTrayDelegate() OVERRIDE; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ash::UserWallpaperDelegate* CreateUserWallpaperDelegate() OVERRIDE; 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual ash::SessionStateDelegate* CreateSessionStateDelegate() OVERRIDE; 721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual ash::AccessibilityDelegate* CreateAccessibilityDelegate() OVERRIDE; 731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual ash::NewWindowDelegate* CreateNewWindowDelegate() OVERRIDE; 740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) virtual ash::MediaDelegate* CreateMediaDelegate() OVERRIDE; 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ui::MenuModel* CreateContextMenu( 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) aura::Window* root, 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ash::ShelfItemDelegate* item_delegate, 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ash::ShelfItem* item) OVERRIDE; 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ash::GPUSupport* CreateGPUSupport() OVERRIDE; 80a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetProductName() const OVERRIDE; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content::NotificationObserver override: 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Observe(int type, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationSource& source, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const content::NotificationDetails& details) OVERRIDE; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void PlatformInit(); 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static ChromeShellDelegate* instance_; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationRegistrar registrar_; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 94a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ChromeLauncherController* shelf_delegate_; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 96c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ObserverList<ash::VirtualKeyboardStateObserver> keyboard_state_observer_list_; 97c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS) 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<chromeos::DisplayConfigurationObserver> 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) display_configuration_observer_; 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChromeShellDelegate); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_UI_ASH_CHROME_SHELL_DELEGATE_H_ 107