Skip to content

Commit

Permalink
Create proper data processing option key type and values
Browse files Browse the repository at this point in the history
Reviewed By: joesus

Differential Revision: D40398418

fbshipit-source-id: ab714a4d50d84b127fa24d5873af2cee4eb14469
  • Loading branch information
samodom authored and facebook-github-bot committed Oct 18, 2022
1 parent 40780e7 commit add1dde
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 19 deletions.
12 changes: 6 additions & 6 deletions FBSDKCoreKit/FBSDKCoreKit/FBSDKInternalUtility.m
Original file line number Diff line number Diff line change
Expand Up @@ -486,19 +486,19 @@ - (void)extendDictionaryWithDataProcessingOptions:(NSMutableDictionary<NSString
{
NSDictionary<NSString *, id> *dataProcessingOptions = self.settings.persistableDataProcessingOptions;
if (dataProcessingOptions) {
NSArray<NSString *> *options = (NSArray<NSString *> *)dataProcessingOptions[DATA_PROCESSING_OPTIONS];
NSArray<NSString *> *options = (NSArray<NSString *> *)dataProcessingOptions[FBSDKDataProcessingOptionKeyOptions];
if (options && [options isKindOfClass:NSArray.class]) {
NSString *optionsString = [FBSDKBasicUtility JSONStringForObject:options error:nil invalidObjectHandler:nil];
[FBSDKTypeUtility dictionary:parameters
setObject:optionsString
forKey:DATA_PROCESSING_OPTIONS];
forKey:FBSDKDataProcessingOptionKeyOptions];
}
[FBSDKTypeUtility dictionary:parameters
setObject:dataProcessingOptions[DATA_PROCESSING_OPTIONS_COUNTRY]
forKey:DATA_PROCESSING_OPTIONS_COUNTRY];
setObject:dataProcessingOptions[FBSDKDataProcessingOptionKeyCountry]
forKey:FBSDKDataProcessingOptionKeyCountry];
[FBSDKTypeUtility dictionary:parameters
setObject:dataProcessingOptions[DATA_PROCESSING_OPTIONS_STATE]
forKey:DATA_PROCESSING_OPTIONS_STATE];
setObject:dataProcessingOptions[FBSDKDataProcessingOptionKeyState]
forKey:FBSDKDataProcessingOptionKeyState];
}
}

Expand Down
8 changes: 4 additions & 4 deletions FBSDKCoreKit/FBSDKCoreKit/FBSDKSettings.m
Original file line number Diff line number Diff line change
Expand Up @@ -363,9 +363,9 @@ - (void)setDataProcessingOptions:(nullable NSArray<NSString *> *)options
state:(int)state
{
NSDictionary<NSString *, id> *json = @{
DATA_PROCESSING_OPTIONS : options ?: @[],
DATA_PROCESSING_OPTIONS_COUNTRY : @(country),
DATA_PROCESSING_OPTIONS_STATE : @(state),
FBSDKDataProcessingOptionKeyOptions : options ?: @[],
FBSDKDataProcessingOptionKeyCountry : @(country),
FBSDKDataProcessingOptionKeyState : @(state),
};
self.persistableDataProcessingOptions = json;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:json requiringSecureCoding:NO error:nil];
Expand Down Expand Up @@ -443,7 +443,7 @@ - (NSString *)defaultGraphAPIVersion
- (BOOL)isDataProcessingRestricted
{
NSArray<NSString *> *options = [FBSDKTypeUtility dictionary:self.persistableDataProcessingOptions ?: @{}
objectForKey:DATA_PROCESSING_OPTIONS
objectForKey:FBSDKDataProcessingOptionKeyOptions
ofType:NSArray.class];
for (NSString *option in options) {
if ([@"ldu" isEqualToString:[[FBSDKTypeUtility coercedToStringValue:option] lowercaseString]]) {
Expand Down
13 changes: 13 additions & 0 deletions FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKDataProcessingOptionKey.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//
// FBSDKDataProcessingOptionKey.m
// FBSDKCoreKit-Dynamic
//
// Created by Sam Odom on 10/3/22.
// Copyright © 2022 Facebook. All rights reserved.
//

#import <FBSDKCoreKit/FBSDKDataProcessingOptionKey.h>

FBSDKDataProcessingOptionKey const FBSDKDataProcessingOptionKeyOptions = @"data_processing_options";
FBSDKDataProcessingOptionKey const FBSDKDataProcessingOptionKeyCountry = @"data_processing_options_country";
FBSDKDataProcessingOptionKey const FBSDKDataProcessingOptionKeyState = @"data_processing_options_state";
4 changes: 0 additions & 4 deletions FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKSettings+Internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,6 @@

#import <FBSDKCoreKit/FBSDKCoreKit.h>

#define DATA_PROCESSING_OPTIONS @"data_processing_options"
#define DATA_PROCESSING_OPTIONS_COUNTRY @"data_processing_options_country"
#define DATA_PROCESSING_OPTIONS_STATE @"data_processing_options_state"

@protocol FBSDKTokenCaching;
@protocol FBSDKDataPersisting;
@protocol FBSDKAppEventsConfigurationProviding;
Expand Down
1 change: 1 addition & 0 deletions FBSDKCoreKit/FBSDKCoreKit/include/FBSDKCoreKit.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
#import <FBSDKCoreKit/FBSDKCoreKitVersions.h>
#import <FBSDKCoreKit/FBSDKCrashObserver.h>
#import <FBSDKCoreKit/FBSDKCrashShield.h>
#import <FBSDKCoreKit/FBSDKDataProcessingOptionKey.h>
#import <FBSDKCoreKit/FBSDKDeviceDialogView.h>
#import <FBSDKCoreKit/FBSDKDeviceInformationProviding.h>
#import <FBSDKCoreKit/FBSDKDeviceViewControllerBase.h>
Expand Down
41 changes: 41 additions & 0 deletions FBSDKCoreKit/FBSDKCoreKit/include/FBSDKDataProcessingOptionKey.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*/

#import <Foundation/Foundation.h>

/**
Internal type exposed to facilitate transition to Swift.
API Subject to change or removal without warning. Do not use.
@warning INTERNAL - DO NOT USE
*/
typedef NSString *FBSDKDataProcessingOptionKey NS_TYPED_EXTENSIBLE_ENUM NS_SWIFT_NAME(DataProcessingOptionKey);

/**
Internal value exposed to facilitate transition to Swift.
API Subject to change or removal without warning. Do not use.
@warning INTERNAL - DO NOT USE
*/
FOUNDATION_EXPORT FBSDKDataProcessingOptionKey const FBSDKDataProcessingOptionKeyOptions;

/**
Internal value exposed to facilitate transition to Swift.
API Subject to change or removal without warning. Do not use.
@warning INTERNAL - DO NOT USE
*/
FOUNDATION_EXPORT FBSDKDataProcessingOptionKey const FBSDKDataProcessingOptionKeyCountry;

/**
Internal value exposed to facilitate transition to Swift.
API Subject to change or removal without warning. Do not use.
@warning INTERNAL - DO NOT USE
*/
FOUNDATION_EXPORT FBSDKDataProcessingOptionKey const FBSDKDataProcessingOptionKeyState;
10 changes: 5 additions & 5 deletions FBSDKCoreKit/FBSDKCoreKitTests/SettingsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1470,12 +1470,12 @@ final class SettingsTests: XCTestCase {
let dataProcessingOptions = settings.persistableDataProcessingOptions

XCTAssertEqual(
dataProcessingOptions?[DATA_PROCESSING_OPTIONS_COUNTRY] as! Int, // swiftlint:disable:this force_cast
dataProcessingOptions?[DataProcessingOptionKey.country.rawValue] as! Int, // swiftlint:disable:this force_cast
0,
"Country should default to zero when not provided"
)
XCTAssertEqual(
dataProcessingOptions?[DATA_PROCESSING_OPTIONS_STATE] as! Int, // swiftlint:disable:this force_cast
dataProcessingOptions?[DataProcessingOptionKey.state.rawValue] as! Int, // swiftlint:disable:this force_cast
0,
"State should default to zero when not provided"
)
Expand Down Expand Up @@ -1530,17 +1530,17 @@ final class SettingsTests: XCTestCase {
settings.setDataProcessingOptions([], country: Int32(countryCode), state: Int32(stateCode))
let dataProcessingOptions = settings.persistableDataProcessingOptions
XCTAssertEqual(
(settings.persistableDataProcessingOptions?[DATA_PROCESSING_OPTIONS] as? [Any])?.isEmpty,
(settings.persistableDataProcessingOptions?[DataProcessingOptionKey.options.rawValue] as? [Any])?.isEmpty,
true,
"Should use the provided array of processing options"
)
XCTAssertEqual(
dataProcessingOptions?[DATA_PROCESSING_OPTIONS_COUNTRY] as? Int,
dataProcessingOptions?[DataProcessingOptionKey.country.rawValue] as? Int,
countryCode,
"Should use the provided country code"
)
XCTAssertEqual(
dataProcessingOptions?[DATA_PROCESSING_OPTIONS_STATE] as? Int,
dataProcessingOptions?[DataProcessingOptionKey.state.rawValue] as? Int,
stateCode,
"Should use the provided state code"
)
Expand Down

0 comments on commit add1dde

Please sign in to comment.