desktop_controller.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright 2014 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#ifndef EXTENSIONS_SHELL_BROWSER_DESKTOP_CONTROLLER_H_ 6#define EXTENSIONS_SHELL_BROWSER_DESKTOP_CONTROLLER_H_ 7 8namespace aura { 9class Window; 10class WindowTreeHost; 11} 12 13namespace content { 14class BrowserContext; 15} 16 17namespace extensions { 18class AppWindow; 19class Extension; 20class ShellAppWindow; 21 22// DesktopController is an interface to construct the window environment in 23// extensions shell. ShellDesktopController provides a default implementation 24// for app_shell, and embedder (such as athena) can provide its own. 25// TODO(jamescook|oshima): Clean up this interface now that there is only one 26// way to create an app window. 27class DesktopController { 28 public: 29 DesktopController(); 30 virtual ~DesktopController(); 31 32 // Returns the single instance of the desktop. (Stateless functions like 33 // ShellAppWindowCreateFunction need to be able to access the desktop, so 34 // we need a singleton somewhere). 35 static DesktopController* instance(); 36 37 // Returns the WindowTreeHost created by this DesktopController. 38 virtual aura::WindowTreeHost* GetHost() = 0; 39 40 // Creates a new app window and adds it to the desktop. The desktop maintains 41 // ownership of the window. The window must be closed before |extension| is 42 // destroyed. 43 virtual AppWindow* CreateAppWindow(content::BrowserContext* context, 44 const Extension* extension) = 0; 45 46 // Attaches the window to our window hierarchy. 47 virtual void AddAppWindow(aura::Window* window) = 0; 48 49 // Closes and destroys the app windows. 50 virtual void CloseAppWindows() = 0; 51}; 52 53} // namespace extensions 54 55#endif // EXTENSIONS_SHELL_BROWSER_DESKTOP_CONTROLLER_H_ 56