// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_ROOT_WINDOW_SETTINGS_H_
#define ASH_ROOT_WINDOW_SETTINGS_H_

#include "ash/ash_export.h"
#include "base/basictypes.h"

namespace aura {
class Window;
}

namespace ash {
namespace internal {

class RootWindowController;

// Per root window information should be stored here
// instead of using plain aura root window property because
// it can prevent mis-using on non root window.
struct RootWindowSettings {
  RootWindowSettings();

  // ID of the display associated with the root window.
  int64 display_id;

  // RootWindowController for the root window. This may be NULL
  // for the root window used for mirroring.
  RootWindowController* controller;

  // True if the root window has already been shutdown.
  bool shutdown;
};

// Initializes and returns RootWindowSettings for |root|.
// It is owned by the |root|.
RootWindowSettings* InitRootWindowSettings(aura::Window* root);

// Returns the RootWindowSettings for |root|.
ASH_EXPORT RootWindowSettings* GetRootWindowSettings(aura::Window* root);

// const version of GetRootWindowSettings.
ASH_EXPORT const RootWindowSettings*
GetRootWindowSettings(const aura::Window* root);

}  // namespace internal
}  // namespace ash

#endif  // ASH_ROOT_WINDOW_SETTINGS_H_
