// Copyright (c) 2012 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 UI_VIEWS_WIN_SCOPED_FULLSCREEN_VISIBILITY_H_
#define UI_VIEWS_WIN_SCOPED_FULLSCREEN_VISIBILITY_H_

#include <windows.h>

#include <map>

#include "base/basictypes.h"
#include "ui/views/views_export.h"

namespace views {

// Scoping class that ensures a HWND remains hidden while it enters or leaves
// the fullscreen state. This reduces some flicker-jank that an application UI
// might suffer.
class VIEWS_EXPORT ScopedFullscreenVisibility {
 public:
  explicit ScopedFullscreenVisibility(HWND hwnd);
  ~ScopedFullscreenVisibility();

  // Returns true if |hwnd| is currently hidden due to instance(s) of this
  // class.
  static bool IsHiddenForFullscreen(HWND hwnd);

 private:
  typedef std::map<HWND, int> FullscreenHWNDs;

  HWND hwnd_;

  static FullscreenHWNDs* full_screen_windows_;

  DISALLOW_COPY_AND_ASSIGN(ScopedFullscreenVisibility);
};

}  // namespace views

#endif  // UI_VIEWS_WIN_SCOPED_FULLSCREEN_VISIBILITY_H_
