chromium/ios/chrome/browser/shared/model/browser/browser_provider_interface.h

// Copyright 2023 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_MODEL_BROWSER_BROWSER_PROVIDER_INTERFACE_H_
#define IOS_CHROME_BROWSER_SHARED_MODEL_BROWSER_BROWSER_PROVIDER_INTERFACE_H_

#import <Foundation/Foundation.h>

@protocol BrowserProvider;

// A BrowserProviderInterface is an abstraction that exposes the available
// BrowserProvider for the Chrome UI.
@protocol BrowserProviderInterface
// One provider must be designated as being the "current" provider. It is
// usually either the incognito or the main one.
@property(nonatomic, weak, readonly) id<BrowserProvider> currentBrowserProvider;
// The provider for the "main" (meaning non-incognito -- the nomenclature is
// legacy) browser.
@property(nonatomic, readonly) id<BrowserProvider> mainBrowserProvider;
// The provider for the incognito Browser.
@property(nonatomic, readonly) id<BrowserProvider> incognitoBrowserProvider;
// YES iff `incognitoBrowserProvider` is already created.
@property(nonatomic, assign, readonly) BOOL hasIncognitoBrowserProvider;

@end

#endif  // IOS_CHROME_BROWSER_SHARED_MODEL_BROWSER_BROWSER_PROVIDER_INTERFACE_H_