| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef IOS_CHROME_BROWSER_OVERLAYS_MODEL_PUBLIC_OVERLAY_PRESENTER_H_ |
| #define IOS_CHROME_BROWSER_OVERLAYS_MODEL_PUBLIC_OVERLAY_PRESENTER_H_ |
| |
| |
| #include "ios/chrome/browser/overlays/model/public/overlay_modality.h" |
| |
| class Browser; |
| class OverlayPresenterObserver; |
| class OverlayPresentationContext; |
| |
| // OverlayPresenter handles the presentation of overlay UI for OverlayRequests |
| // added to the OverlayRequestQueues for WebStates in a Browser. |
| class OverlayPresenter { |
| public: |
| virtual ~OverlayPresenter() = default; |
| |
| // Retrieves the OverlayPresenter for `browser` that manages overlays at |
| // `modality`, creating one if necessary. |
| static OverlayPresenter* FromBrowser(Browser* browser, |
| OverlayModality modality); |
| |
| // Returns the presenter's modality. |
| virtual OverlayModality GetModality() const = 0; |
| |
| // Sets the presentation context in which to show overlay UI. Upon being set, |
| // the presenter will attempt to begin presenting overlay UI for the active |
| // WebState in its Browser. |
| virtual void SetPresentationContext( |
| OverlayPresentationContext* presentation_context) = 0; |
| |
| // Adds and removes observers. |
| virtual void AddObserver(OverlayPresenterObserver* observer) = 0; |
| virtual void RemoveObserver(OverlayPresenterObserver* observer) = 0; |
| |
| // Whether overlay UI is currently shown in the presentation context. |
| virtual bool IsShowingOverlayUI() const = 0; |
| }; |
| |
| #endif // IOS_CHROME_BROWSER_OVERLAYS_MODEL_PUBLIC_OVERLAY_PRESENTER_H_ |