[go: nahoru, domu]

blob: 75389a9bd82d8312cd0b456f6478f9aca8e1b185 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/web/public/session/crw_session_user_data.h"
#import "base/apple/foundation_util.h"
@implementation CRWSessionUserData {
NSMutableDictionary<NSString*, id<NSCoding>>* _data;
}
#pragma mark - Public methods
- (void)setObject:(id<NSCoding>)object forKey:(NSString*)key {
[_data setObject:object forKey:key];
}
- (id<NSCoding>)objectForKey:(NSString*)key {
return [_data objectForKey:key];
}
- (void)removeObjectForKey:(NSString*)key {
[_data removeObjectForKey:key];
}
#pragma mark - NSCoding
- (instancetype)init {
if ((self = [super init])) {
_data = [[NSMutableDictionary alloc] init];
}
return self;
}
- (instancetype)initWithCoder:(NSCoder*)decoder {
if ((self = [super init])) {
_data = [[decoder decodeObject] mutableCopy];
if (!_data) {
_data = [[NSMutableDictionary alloc] init];
}
}
return self;
}
- (void)encodeWithCoder:(NSCoder*)coder {
[coder encodeObject:[_data copy]];
}
#pragma mark - NSObject
- (BOOL)isEqual:(id)object {
if (![object isKindOfClass:[self class]])
return NO;
CRWSessionUserData* other =
base::apple::ObjCCastStrict<CRWSessionUserData>(object);
return [_data isEqual:other->_data];
}
@end