| // 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_DISMISSAL_CALLBACK_H_ |
| #define IOS_CHROME_BROWSER_OVERLAYS_MODEL_PUBLIC_OVERLAY_DISMISSAL_CALLBACK_H_ |
| |
| #include "base/functional/callback.h" |
| |
| // Enum type categorizing the different reasons overlay UI may be dismissed. |
| // Used in OverlayDismissalCallbacks to notify the OverlayPresenter why the |
| // overlay UI was dismissed. |
| enum class OverlayDismissalReason { |
| // Used when the overlay UI is dismissed by the user. |
| kUserInteraction, |
| // Used when the overlay is hidden by the presenter. |
| kHiding, |
| // Used when the overlay is cancelled by the presenter. |
| kCancellation, |
| }; |
| |
| // Overlay UI presented by OverlayPresenter::Delegate are provided with an |
| // OverlayDismissalCallback that is used to notify the presenter when requested |
| // overlay UI has finished being dismissed. `reason` is used to communicate |
| // what triggered the dismissal. Overlays that are hidden may be shown again, |
| // so the callback will not update the OverlayRequestQueue. Overlays dismissed |
| // for user interaction will never be shown again; executing the dismissal |
| // callback for this reason will execute the request's callback and remove it |
| // from its queue. |
| typedef base::OnceCallback<void(OverlayDismissalReason reason)> |
| OverlayDismissalCallback; |
| |
| #endif // IOS_CHROME_BROWSER_OVERLAYS_MODEL_PUBLIC_OVERLAY_DISMISSAL_CALLBACK_H_ |