Home | History | Annotate | Download | only in public
      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 
     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