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

// 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_UI_BUNDLED_OVERLAY_COORDINATOR_FACTORY_H_
#define IOS_CHROME_BROWSER_OVERLAYS_UI_BUNDLED_OVERLAY_COORDINATOR_FACTORY_H_

#import <UIKit/UIKit.h>

#include "ios/chrome/browser/overlays/model/public/overlay_modality.h"

class Browser;
class OverlayRequestCoordinatorDelegate;
@class OverlayRequestCoordinator;
class OverlayRequest;

// Factory object provided to OverlayContainerCoordinators that supply overlay
// coordinators for a request.
@interface OverlayRequestCoordinatorFactory : NSObject

// Designated initializer.
- (instancetype)initWithBrowser:(Browser*)browser
                       modality:(OverlayModality)modality
    NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;

// Returns whether the OverlayRequestCoordinator subclass responsible for
// showing `request`'s overlay UI uses a child UIViewController instead of a
// presented UIViewController.
- (BOOL)coordinatorForRequestUsesChildViewController:(OverlayRequest*)request;

// Creates a coordinator to show `request`'s overlay UI.
- (OverlayRequestCoordinator*)
    newCoordinatorForRequest:(OverlayRequest*)request
                    delegate:(OverlayRequestCoordinatorDelegate*)delegate
          baseViewController:(UIViewController*)baseViewController;

@end

#endif  // IOS_CHROME_BROWSER_OVERLAYS_UI_BUNDLED_OVERLAY_COORDINATOR_FACTORY_H_