chromium/ios/chrome/browser/ui/browser_container/browser_container_view_controller.h

// Copyright 2018 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_UI_BROWSER_CONTAINER_BROWSER_CONTAINER_VIEW_CONTROLLER_H_
#define IOS_CHROME_BROWSER_UI_BROWSER_CONTAINER_BROWSER_CONTAINER_VIEW_CONTROLLER_H_

#import <UIKit/UIKit.h>

#import "ios/chrome/browser/ui/browser_container/browser_container_consumer.h"

@class BrowserEditMenuHandler;

@protocol LinkToTextDelegate;

// UIViewController which allows displaying and removing a content view.
@interface BrowserContainerViewController
    : UIViewController <BrowserContainerConsumer>

// The UIViewController used to display overlay UI over the web content area.
@property(nonatomic, strong)
    UIViewController* webContentsOverlayContainerViewController;

// The UIViewController used to display the ScreenTime blocker above the web
// content area.
@property(nonatomic, strong) UIViewController* screenTimeViewController;

// The delegate to handle link to text button selection.
@property(nonatomic, weak) id<LinkToTextDelegate> linkToTextDelegate;

// The handler for the edit menu.
@property(nonatomic, weak) BrowserEditMenuHandler* browserEditMenuHandler;

// Adds the given `contentView` as a subview and removes the previously added
// `contentView` or `contentViewController`, if any. If `contentView` is nil
// then only old content view or view controller is removed.
- (void)setContentView:(UIView*)contentView;

// Adds the given `contentViewController` as a child view controller and removes
// the previously added `contentViewController` if any.  Setting
// `contentViewController` does not clear `contentView`.
- (void)setContentViewController:(UIViewController*)contentViewController;

@end

#endif  // IOS_CHROME_BROWSER_UI_BROWSER_CONTAINER_BROWSER_CONTAINER_VIEW_CONTROLLER_H_