| // Copyright 2022 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_VARIATIONS_IOS_CHROME_VARIATIONS_SEED_FETCHER_H_ |
| #define IOS_CHROME_BROWSER_VARIATIONS_IOS_CHROME_VARIATIONS_SEED_FETCHER_H_ |
| |
| #import <Foundation/Foundation.h> |
| |
| // Protocol for variations seed fetcher that reacts to variations seed fetch |
| // stages. |
| @protocol IOSChromeVariationsSeedFetcherDelegate |
| |
| // Informs the delegate that the initial seed fetch has completed. |
| // If the value of the `success` parameter is YES, the seed fetch is successful; |
| // if NO, the fetch has failed. |
| - (void)variationsSeedFetcherDidCompleteFetchWithSuccess:(BOOL)success; |
| |
| @end |
| |
| // An object that allows its owner to fetch variations seed before Chrome |
| // components are initialized. |
| @interface IOSChromeVariationsSeedFetcher : NSObject |
| |
| // Delegate object that would be informed when the seed fetch completes. |
| @property(nonatomic, weak) id<IOSChromeVariationsSeedFetcherDelegate> delegate; |
| |
| // Initializes the seed fetcher using `arguments` as variation switches, and |
| // apply them to the seed manager. |
| // |
| // Note: If the user calls `init`, the fetcher |
| // would be initialized with command line arguments. |
| - (instancetype)initWithArguments:(NSArray<NSString*>*)arguments |
| NS_DESIGNATED_INITIALIZER; |
| |
| // Starts fetching the initial seed from the variations server. The `delegate` |
| // property would be informed when the fetch completes. If the fetch is |
| // successful, the acquired seed would be stored in |
| // IOSChromeVariationsSeedStore. |
| // |
| // Note: the caller is responsible for making sure that a seed fetcher object is |
| // only be initiated when there is no valid variations seed available in local |
| // storage. In cases when this method is invoked when a variations seed is |
| // available, the downloaded seed would be disregarded. |
| - (void)startSeedFetch; |
| |
| @end |
| |
| #endif // IOS_CHROME_BROWSER_VARIATIONS_IOS_CHROME_VARIATIONS_SEED_FETCHER_H_ |