Skip to content

Commit e6822a5

Browse files
committed
Write up ported class
1 parent 97cfe7e commit e6822a5

File tree

8 files changed

+22
-26
lines changed

8 files changed

+22
-26
lines changed

FirebaseABTesting/Sources/ABTExperimentPayload.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
#import "FirebaseABTesting/Sources/Private/ABTExperimentPayload.h"
1616

17+
#import "FirebaseABTesting/Sources/Public/FirebaseABTesting/FIRExperimentController.h"
18+
1719
static NSString *const kExperimentPayloadKeyExperimentID = @"experimentId";
1820
static NSString *const kExperimentPayloadKeyVariantID = @"variantId";
1921

FirebaseABTesting/Sources/Private/ABTExperimentPayload.h

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,9 @@
1414

1515
#import <Foundation/Foundation.h>
1616

17-
NS_ASSUME_NONNULL_BEGIN
17+
#import "FirebaseABTesting/Sources/Public/FirebaseABTesting/FIRExperimentController.h"
1818

19-
/// Policy for handling the case where there's an overflow of experiments for an installation
20-
/// instance.
21-
typedef NS_ENUM(int32_t, ABTExperimentPayloadExperimentOverflowPolicy) {
22-
ABTExperimentPayloadExperimentOverflowPolicyUnrecognizedValue = 999,
23-
ABTExperimentPayloadExperimentOverflowPolicyUnspecified = 0,
24-
ABTExperimentPayloadExperimentOverflowPolicyDiscardOldest = 1,
25-
ABTExperimentPayloadExperimentOverflowPolicyIgnoreNewest = 2,
26-
};
19+
NS_ASSUME_NONNULL_BEGIN
2720

2821
@interface ABTExperimentLite : NSObject
2922
@property(nonatomic, readonly, copy) NSString *experimentId;

FirebaseABTesting/Sources/Public/FirebaseABTesting/FIRExperimentController.h

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,21 @@
1414

1515
#import <Foundation/Foundation.h>
1616

17+
#import "FIRLifecycleEvents.h"
18+
1719
@class ABTExperimentPayload;
1820

19-
// Forward declaration to avoid importing into the module header
20-
typedef NS_ENUM(int32_t, ABTExperimentPayloadExperimentOverflowPolicy);
21+
/// Policy for handling the case where there's an overflow of experiments for an installation
22+
/// instance.
23+
typedef NS_ENUM(int32_t, ABTExperimentPayloadExperimentOverflowPolicy) {
24+
ABTExperimentPayloadExperimentOverflowPolicyUnrecognizedValue = 999,
25+
ABTExperimentPayloadExperimentOverflowPolicyUnspecified = 0,
26+
ABTExperimentPayloadExperimentOverflowPolicyDiscardOldest = 1,
27+
ABTExperimentPayloadExperimentOverflowPolicyIgnoreNewest = 2,
28+
};
2129

2230
NS_ASSUME_NONNULL_BEGIN
2331

24-
@class FIRLifecycleEvents;
25-
2632
/// The default experiment overflow policy, that is to discard the experiment with the oldest start
2733
/// time when users start the experiment on the web console.
2834
extern const ABTExperimentPayloadExperimentOverflowPolicy FIRDefaultExperimentOverflowPolicy;

FirebaseRemoteConfig/Sources/FIRRemoteConfig.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
#import "FirebaseRemoteConfig/Sources/Private/RCNConfigFetch.h"
2424
#import "FirebaseRemoteConfig/Sources/Private/RCNConfigSettings.h"
2525
#import "FirebaseRemoteConfig/Sources/RCNConfigConstants.h"
26-
#import "FirebaseRemoteConfig/Sources/RCNConfigExperiment.h"
2726
#import "FirebaseRemoteConfig/Sources/RCNConfigRealtime.h"
2827
#import "FirebaseRemoteConfig/Sources/RCNConfigValue_Internal.h"
2928
#import "FirebaseRemoteConfig/Sources/RCNPersonalization.h"

FirebaseRemoteConfig/Sources/RCNConfigFetch.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#import "FirebaseInstallations/Source/Library/Private/FirebaseInstallationsInternal.h"
2323
#import "FirebaseRemoteConfig/Sources/Private/RCNConfigSettings.h"
2424
#import "FirebaseRemoteConfig/Sources/RCNConfigConstants.h"
25-
#import "FirebaseRemoteConfig/Sources/RCNConfigExperiment.h"
2625

2726
#import "FirebaseRemoteConfig/FirebaseRemoteConfig-Swift.h"
2827

FirebaseRemoteConfig/SwiftNew/ConfigExperiment.swift

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import FirebaseABTesting
1616
import Foundation
1717

1818
/// Handles experiment information update and persistence.
19-
/*@objc(RCNConfigExperiment)*/ open class ConfigExperiment: NSObject {
19+
@objc(RCNConfigExperiment) public class ConfigExperiment: NSObject {
2020
private static let experimentMetadataKeyLastStartTime = "last_experiment_start_time"
2121
private static let serviceOrigin = "frc"
2222

@@ -28,19 +28,17 @@ import Foundation
2828
private let experimentStartTimeDateFormatter: DateFormatter
2929

3030
/// Designated initializer;
31-
public init(DBManager: ConfigDBManager?,
32-
experimentController controller: ExperimentController?) {
31+
@objc public init(DBManager: ConfigDBManager?,
32+
experimentController controller: ExperimentController?) {
3333
experimentPayloads = []
3434
experimentMetadata = [:]
3535
activeExperimentPayloads = []
3636
experimentStartTimeDateFormatter = {
3737
let dateFormatter = DateFormatter()
3838
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
39-
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
4039
// Locale needs to be hardcoded. See
4140
// https://developer.apple.com/library/ios/#qa/qa1480/_index.html for more details.
4241
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
43-
// TODO(ncooke3): Trace back and see why timeZone is set twice.
4442
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
4543
return dateFormatter
4644
}()
@@ -98,7 +96,7 @@ import Foundation
9896
}
9997

10098
/// Update/Persist experiment information from config fetch response.
101-
open func updateExperiments(withResponse response: [[String: Any]]?) {
99+
@objc public func updateExperiments(withResponse response: [[String: Any]]?) {
102100
// Cache fetched experiment payloads.
103101
experimentPayloads.removeAll()
104102
dbManager?.deleteExperimentTable(forKey: ConfigConstants.experimentTableKeyPayload)
@@ -121,7 +119,7 @@ import Foundation
121119
}
122120

123121
/// Update experiments to Firebase Analytics when `activateWithCompletion:` happens.
124-
open func updateExperiments(handler: (((any Error)?) -> Void)? = nil) {
122+
@objc public func updateExperiments(handler: (((any Error)?) -> Void)? = nil) {
125123
let lifecycleEvent = LifecycleEvents()
126124

127125
// Get the last experiment start time prior to the latest payload.
@@ -134,7 +132,7 @@ import Foundation
134132
withServiceOrigin: Self.serviceOrigin,
135133
events: lifecycleEvent,
136134
policy: .discardOldest,
137-
lastStartTime: lastStartTime,
135+
lastStartTime: lastStartTime ?? 0,
138136
payloads: experimentPayloads,
139137
completionHandler: handler
140138
)

FirebaseRemoteConfig/Tests/Unit/RCNConfigExperimentTest.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919

2020
@import FirebaseRemoteConfig;
2121

22-
#import "FirebaseRemoteConfig/Sources/RCNConfigExperiment.h"
23-
2422
#import "FirebaseRemoteConfig/Sources/Private/RCNConfigSettings.h"
2523
#import "FirebaseRemoteConfig/Sources/Public/FirebaseRemoteConfig/FIRRemoteConfig.h"
2624
#import "FirebaseRemoteConfig/Sources/RCNConfigDefines.h"
@@ -31,6 +29,8 @@
3129

3230
#import "Interop/Analytics/Public/FIRAnalyticsInterop.h"
3331

32+
#import "FirebaseRemoteConfig/FirebaseRemoteConfig-Swift.h"
33+
3434
// Surface the internal FIRExperimentController initializer.
3535
@interface FIRExperimentController ()
3636
- (instancetype)initWithAnalytics:(nullable id<FIRAnalyticsInterop>)analytics;

FirebaseRemoteConfig/Tests/Unit/RCNRemoteConfigTest.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#import "FirebaseRemoteConfig/Sources/Private/RCNConfigFetch.h"
2626
#import "FirebaseRemoteConfig/Sources/Public/FirebaseRemoteConfig/FIRRemoteConfig.h"
2727
#import "FirebaseRemoteConfig/Sources/RCNConfigConstants.h"
28-
#import "FirebaseRemoteConfig/Sources/RCNConfigExperiment.h"
2928
#import "FirebaseRemoteConfig/Sources/RCNConfigRealtime.h"
3029

3130
#import "FirebaseRemoteConfig/Tests/Unit/RCNTestUtilities.h"

0 commit comments

Comments
 (0)