| // 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_OBSERVER_H_ |
| #define IOS_CHROME_BROWSER_OVERLAYS_MODEL_PUBLIC_OVERLAY_PRESENTER_OBSERVER_H_ |
| |
| #include "base/observer_list_types.h" |
| |
| class OverlayPresenter; |
| class OverlayRequestSupport; |
| class OverlayRequest; |
| |
| // Observer interface for objects interested in overlay presentation events |
| // triggered by OverlayPresenter. |
| class OverlayPresenterObserver : public base::CheckedObserver { |
| public: |
| OverlayPresenterObserver(); |
| ~OverlayPresenterObserver() override; |
| |
| // The request support for this observer. Request-specific observer callbacks |
| // will not be executed for unsupported requests. By default, all requests |
| // are supported. Subclasses can override to use a more specific request |
| // support. |
| virtual const OverlayRequestSupport* GetRequestSupport( |
| OverlayPresenter* presenter) const; |
| |
| // Called when `presenter` is about to show the overlay UI for `request`. |
| // `initial_presentation` is true if this is the first time the UI for |
| // `request` is being shown in the current OverlayPresentationContext. |
| virtual void WillShowOverlay(OverlayPresenter* presenter, |
| OverlayRequest* request, |
| bool initial_presentation) {} |
| |
| // Called when `presenter` has finished showing the overlay UI for |
| // `request`. |
| virtual void DidShowOverlay(OverlayPresenter* presenter, |
| OverlayRequest* request) {} |
| |
| // Called when `presenter` is finished dismissing its overlay UI. |
| virtual void DidHideOverlay(OverlayPresenter* presenter, |
| OverlayRequest* request) {} |
| |
| // Called when `presenter` is destroyed. |
| virtual void OverlayPresenterDestroyed(OverlayPresenter* presenter) {} |
| }; |
| |
| #endif // IOS_CHROME_BROWSER_OVERLAYS_MODEL_PUBLIC_OVERLAY_PRESENTER_OBSERVER_H_ |