chromium/ios/chrome/browser/shared/coordinator/scene/scene_controller_testing.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_SHARED_COORDINATOR_SCENE_SCENE_CONTROLLER_TESTING_H_
#define IOS_CHROME_BROWSER_SHARED_COORDINATOR_SCENE_SCENE_CONTROLLER_TESTING_H_

class Browser;
struct UrlLoadParams;
@class TabGridCoordinator;
@class UserFeedbackData;
@class WrangledBrowser;

using UserFeedbackDataCallback =
    base::RepeatingCallback<void(UserFeedbackData*)>;

// Methods exposed for testing. This is terrible and should be rewritten.
@interface SceneController ()

@property(nonatomic, strong) TabGridCoordinator* mainCoordinator;

- (void)addANewTabAndPresentBrowser:(Browser*)browser
                  withURLLoadParams:(const UrlLoadParams&)urlLoadParams;

- (void)presentSignInAccountsViewControllerIfNecessary;

// Dismisses all modal dialogs, excluding the omnibox if `dismissOmnibox` is
// NO, then call `completion`.
- (void)dismissModalDialogsWithCompletion:(ProceduralBlock)completion
                           dismissOmnibox:(BOOL)dismissOmnibox;

// Presents the "Report an issue" screen within the given `timeout`.
- (void)presentReportAnIssueViewController:(UIViewController*)baseViewController
                                    sender:(UserFeedbackSender)sender
                          userFeedbackData:(UserFeedbackData*)userFeedbackData
                                   timeout:(base::TimeDelta)timeout
                                completion:(UserFeedbackDataCallback)completion;

- (WrangledBrowser*)currentInterface;

@end

#endif  // IOS_CHROME_BROWSER_SHARED_COORDINATOR_SCENE_SCENE_CONTROLLER_TESTING_H_