• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 ATHENA_ENV_PUBLIC_ATHENA_ENV_H_
6 #define ATHENA_ENV_PUBLIC_ATHENA_ENV_H_
7 
8 #include "athena/athena_export.h"
9 #include "base/callback_forward.h"
10 
11 namespace aura {
12 class WindowTreeHost;
13 }
14 
15 namespace gfx {
16 class Insets;
17 }
18 
19 namespace athena {
20 
21 // AthenaEnv creates/shuts down the environment necessary to
22 // start Athena shell.
23 class ATHENA_EXPORT AthenaEnv {
24  public:
25   static void Create();
26   static AthenaEnv* Get();
27   static void Shutdown();
28 
~AthenaEnv()29   virtual ~AthenaEnv() {}
30 
31   // Returns the single WindowTreeHost for the primary display.
32   virtual aura::WindowTreeHost* GetHost() = 0;
33 
34   // Sets the insets for the primary displays's work area.
35   virtual void SetDisplayWorkAreaInsets(const gfx::Insets& insets) = 0;
36 
37   // Adds the callback called when the athena is about to exit.
38   virtual void AddTerminatingCallback(const base::Closure& closure) = 0;
39   virtual void RemoveTerminatingCallback(const base::Closure& closure) = 0;
40 
41   // Called when the athena is about to exist.
42   virtual void OnTerminating() = 0;
43 };
44 
45 }  // namespace athena
46 
47 #endif  // ATHENA_ENV_PUBLIC_ATHENA_ENV_H_
48