blob: b65ef8e3df142c4c332dbdcb1fca9da47e66b548 [file] [log] [blame]
// Copyright (c) 2015 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.
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/native_widget_types.h"
class ExclusiveAccessManager;
namespace ui {
class AcceleratorProvider;
namespace views {
class Widget;
// Context in which the exclusive access bubble view is initiated.
class ExclusiveAccessBubbleViewsContext {
// Returns ExclusiveAccessManager controlling exclusive access for the given
// webview.
virtual ExclusiveAccessManager* GetExclusiveAccessManager() = 0;
// Returns the Widget that hosts the view containing the exclusive access
// bubble. Not used for the simplified fullscreen UI.
virtual views::Widget* GetBubbleAssociatedWidget() = 0;
// Returns the AcceleratorProvider, providing the shortcut key to exit the
// exclusive access.
virtual ui::AcceleratorProvider* GetAcceleratorProvider() = 0;
// Returns the view used to parent the bubble Widget.
virtual gfx::NativeView GetBubbleParentView() const = 0;
// Return the current mouse cursor location, offset from the top-left of the
// parent window.
virtual gfx::Point GetCursorPointInParent() const = 0;
// Return the current bounds (not restored bounds) of the parent window.
virtual gfx::Rect GetClientAreaBoundsInScreen() const = 0;
// Returns true if immersive mode is enabled.
virtual bool IsImmersiveModeEnabled() const = 0;
// Returns the bounds of the top level View in screen coordinate system.
virtual gfx::Rect GetTopContainerBoundsInScreen() = 0;
// Destroy any exclusive access bubble. This allows the bubble to ask its
// owner to clean up when the bubble observes its native widget being
// destroyed before the owner requested it.
virtual void DestroyAnyExclusiveAccessBubble() = 0;
// Returns true if mouse position can trigger showing the bubble.
virtual bool CanTriggerOnMouse() const = 0;