chromium/ios/chrome/browser/overlays/ui_bundled/overlay_presentation_controller.h

// Copyright 2020 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_UI_BUNDLED_OVERLAY_PRESENTATION_CONTROLLER_H_
#define IOS_CHROME_BROWSER_OVERLAYS_UI_BUNDLED_OVERLAY_PRESENTATION_CONTROLLER_H_

#import <UIKit/UIKit.h>

@protocol OverlayPresentationControllerObserver;

// Presentation controller used for overlays presented using custom
// UIViewController presentation.
@interface OverlayPresentationController : UIPresentationController

// Whether the presentation controller resizes the presentation container view.
// When set to YES, the overlay presentation context view will be resized to fit
// the presented view so that touches that fall outside of the overlay can be
// forwarded to the underlying browser UI.  Presentation controllers that return
// YES for this property must not lay out their presented views in relation to
// the presenter.  Returns NO by default.
@property(nonatomic, readonly) BOOL resizesPresentationContainer;

// YES if the presented view was resized and therefore the presenting view
// controller needs a new layout pass. Defaults to YES to allow for a layout
// pass the first time through since the presenting view controller needs to
// resize from CGRectZero to the presented view size or vice versa.
@property(nonatomic, assign) BOOL needsLayout;

// Subclasses must notify the superclass when their container views lay out
// their subviews.
- (void)containerViewWillLayoutSubviews NS_REQUIRES_SUPER;

@end

#endif  // IOS_CHROME_BROWSER_OVERLAYS_UI_BUNDLED_OVERLAY_PRESENTATION_CONTROLLER_H_