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 ASH_SHELL_SHELL_DELEGATE_IMPL_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ASH_SHELL_SHELL_DELEGATE_IMPL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_delegate.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace content {
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class BrowserContext;
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace keyboard {
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class KeyboardControllerProxy;
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace shell {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class ShelfDelegateImpl;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WindowWatcher;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ShellDelegateImpl : public ash::ShellDelegate {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ShellDelegateImpl();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ShellDelegateImpl();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetWatcher(WindowWatcher* watcher);
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void set_browser_context(content::BrowserContext* browser_context) {
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    browser_context_ = browser_context;
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool IsFirstRunAfterBoot() const OVERRIDE;
380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  virtual bool IsIncognitoAllowed() const OVERRIDE;
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool IsMultiProfilesEnabled() const OVERRIDE;
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool IsRunningInForcedAppMode() const OVERRIDE;
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual bool IsMultiAccountEnabled() const OVERRIDE;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void PreInit() OVERRIDE;
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  virtual void PreShutdown() OVERRIDE;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Exit() OVERRIDE;
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual keyboard::KeyboardControllerProxy*
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      CreateKeyboardControllerProxy() OVERRIDE;
47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual void VirtualKeyboardActivated(bool activated) OVERRIDE;
48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual void AddVirtualKeyboardStateObserver(
49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      VirtualKeyboardStateObserver* observer) OVERRIDE;
50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual void RemoveVirtualKeyboardStateObserver(
51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      VirtualKeyboardStateObserver* observer) OVERRIDE;
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual content::BrowserContext* GetActiveBrowserContext() OVERRIDE;
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual app_list::AppListViewDelegate* GetAppListViewDelegate() OVERRIDE;
54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual ShelfDelegate* CreateShelfDelegate(ShelfModel* model) OVERRIDE;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ash::SystemTrayDelegate* CreateSystemTrayDelegate() OVERRIDE;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ash::UserWallpaperDelegate* CreateUserWallpaperDelegate() OVERRIDE;
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual ash::SessionStateDelegate* CreateSessionStateDelegate() OVERRIDE;
581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual ash::AccessibilityDelegate* CreateAccessibilityDelegate() OVERRIDE;
591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  virtual ash::NewWindowDelegate* CreateNewWindowDelegate() OVERRIDE;
600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  virtual ash::MediaDelegate* CreateMediaDelegate() OVERRIDE;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ui::MenuModel* CreateContextMenu(
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      aura::Window* root_window,
635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      ash::ShelfItemDelegate* item_delegate,
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      ash::ShelfItem* item) OVERRIDE;
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual GPUSupport* CreateGPUSupport() OVERRIDE;
66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual base::string16 GetProductName() const OVERRIDE;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to update Launcher. Owned by main.
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WindowWatcher* watcher_;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  ShelfDelegateImpl* shelf_delegate_;
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::BrowserContext* browser_context_;
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<app_list::AppListViewDelegate> app_list_view_delegate_;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ShellDelegateImpl);
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace shell
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // ASH_SHELL_SHELL_DELEGATE_IMPL_H_
83