chromium/chrome/browser/ui/views/frame/immersive_mode_controller.h

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

#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_H_
#define CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_H_

#include <memory>

#include "base/observer_list.h"

class BrowserView;

namespace gfx {
class Rect;
class Size;
}

namespace views {
class Widget;
}

// A lock which will keep the top-of-window views revealed for its
// lifetime.
// See ImmersiveModeController::GetRevealedLock for details.
class ImmersiveRevealedLock {};

// Controller for an "immersive mode" similar to MacOS presentation mode where
// the top-of-window views are hidden until the mouse hits the top of the
// screen. The tab strip is optionally painted with miniature "tab indicator"
// rectangles.
// Currently, immersive mode is only available for Chrome OS and macOS.
class ImmersiveModeController {};

class BrowserView;

namespace chrome {

// Implemented in immersive_mode_controller_factory.cc.
std::unique_ptr<ImmersiveModeController> CreateImmersiveModeController(
    const BrowserView* browser_view);

}  // namespace chrome

#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_IMMERSIVE_MODE_CONTROLLER_H_