| // 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. |
| |
| #ifndef CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_EXCLUSIVE_ACCESS_CONTEXT_H_ |
| #define CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_EXCLUSIVE_ACCESS_CONTEXT_H_ |
| |
| #include "chrome/browser/ui/exclusive_access/exclusive_access_bubble_type.h" |
| |
| class GURL; |
| class Profile; |
| |
| namespace content { |
| class WebContents; |
| } |
| |
| // Context in which exclusive access operation is being performed. This |
| // interface is implemented once in Browser context and in Platform Application |
| // context. |
| class ExclusiveAccessContext { |
| public: |
| virtual ~ExclusiveAccessContext() {} |
| |
| // Returns the current profile associated with the window. |
| virtual Profile* GetProfile() = 0; |
| |
| // Returns true if the window hosting the exclusive access bubble is |
| // fullscreen. |
| virtual bool IsFullscreen() const = 0; |
| |
| // Returns true if fullscreen with toolbar is supported. |
| virtual bool SupportsFullscreenWithToolbar() const; |
| |
| // Shows or hides the tab strip, toolbar and bookmark bar with in browser |
| // fullscreen. |
| // Currently only supported on Mac. |
| virtual void UpdateFullscreenWithToolbar(bool with_toolbar); |
| |
| // Returns true if the window is fullscreen with additional UI elements. See |
| // EnterFullscreen |with_toolbar|. |
| virtual bool IsFullscreenWithToolbar() const = 0; |
| |
| // Enters fullscreen and update exit bubble. |
| // On Mac, the tab strip and toolbar will be shown if |with_toolbar| is true, |
| // |with_toolbar| is ignored on other platforms. |
| virtual void EnterFullscreen(const GURL& url, |
| ExclusiveAccessBubbleType bubble_type, |
| bool with_toolbar) = 0; |
| |
| // Exits fullscreen and update exit bubble. |
| virtual void ExitFullscreen() = 0; |
| |
| // Updates the content of exclusive access exit bubble content. |
| virtual void UpdateExclusiveAccessExitBubbleContent( |
| const GURL& url, |
| ExclusiveAccessBubbleType bubble_type) = 0; |
| |
| #if defined(OS_WIN) |
| // Sets state for entering or exiting Win8 Metro snap mode. |
| virtual void SetMetroSnapMode(bool enable); |
| |
| // Returns whether the window is currently in Win8 Metro snap mode. |
| virtual bool IsInMetroSnapMode() const; |
| #endif // defined(OS_WIN) |
| |
| // Returns the currently active WebContents, or nullptr if there is none. |
| virtual content::WebContents* GetActiveWebContents() = 0; |
| |
| // TODO(sriramsr): This is abstraction violation as the following two function |
| // does not apply to a platform app window. Ideally, the BrowserView should |
| // hide/unhide its download shelf widget when it is instructed to enter/exit |
| // fullscreen mode. |
| // Displays the download shelf associated with currently active window. |
| virtual void UnhideDownloadShelf(); |
| |
| // Hides download shelf associated with currently active window. |
| virtual void HideDownloadShelf(); |
| }; |
| |
| #endif // CHROME_BROWSER_UI_EXCLUSIVE_ACCESS_EXCLUSIVE_ACCESS_CONTEXT_H_ |