58 BOOL _searchListNeedsReload;
64 + (id)standardUserDefaults
76 + (void)resetStandardUserDefaults
79 [StandardUserDefaults synchronize];
94 [
self _setupArgumentsDomain];
109 - (void)_setupArgumentsDomain
111 var args = [CPApp namedArguments],
112 keys = [args allKeys],
113 count = [keys count],
116 for (; i < count; i++)
119 [
self setObject:[args objectForKey:key] forKey:key inDomain:CPArgumentDomain];
129 if (_searchListNeedsReload)
130 [
self _reloadSearchList];
132 return [_searchList objectForKey:aKey];
138 - (void)setObject:(
id)anObject forKey:(
CPString)aKey
150 var domain = [_domains objectForKey:aDomain];
155 return [domain objectForKey:aKey];
164 if (!aKey || !aDomain)
167 var domain = [_domains objectForKey:aDomain];
171 [_domains setObject:domain forKey:aDomain];
174 [domain setObject:anObject forKey:aKey];
175 _searchListNeedsReload = YES;
193 if (!aKey || !aDomain)
196 var domain = [_domains objectForKey:aDomain];
200 [domain removeObjectForKey:aKey];
201 _searchListNeedsReload = YES;
215 var keys = [aDictionary
allKeys],
216 count = [keys count],
219 for (; i < count; i++)
232 - (void)registerDefaultsFromContentsOfFile:(
CPURL)aURL
236 plist = [data plistObject];
244 - (void)_reloadSearchList
246 _searchListNeedsReload = NO;
248 var dicts = [CPRegistrationDomain, CPGlobalDomain, CPApplicationDomain, CPArgumentDomain],
249 count = [dicts count],
254 for (; i < count; i++)
256 var domain = [_domains objectForKey:dicts[i]];
260 var keys = [domain allKeys],
261 keysCount = [keys count],
264 for (; j < keysCount; j++)
267 [_searchList setObject:[domain objectForKey:key] forKey:key];
277 - (CPArray)volatileDomainNames
279 return [CPArgumentDomain, CPLocaleDomain, CPRegistrationDomain];
285 - (CPArray)persistentDomainNames
287 return [CPGlobalDomain, CPApplicationDomain];
295 return [_stores objectForKey:aDomain];
308 var currentStore = [_stores objectForKey:aDomain];
309 if (currentStore && [currentStore
class] === aStoreClass)
312 var store = [[aStoreClass alloc] init];
313 [store setDomain:aDomain];
314 [_stores setObject:store forKey:aDomain];
317 [
self reloadDataFromStoreForDomain:aDomain];
325 - (void)reloadDataFromStoreForDomain:(
CPString)aDomain
331 [_domains removeObjectForKey:aDomain];
333 [_domains setObject:domain forKey:aDomain];
335 _searchListNeedsReload = YES;
354 var globalDomain = [_domains objectForKey:CPGlobalDomain];
361 var appDomain = [_domains objectForKey:CPApplicationDomain];
369 #pragma mark Getting Default Values
377 if ([value isKindOfClass:CPArray])
389 if ([value respondsToSelector:
@selector(boolValue)])
390 return [value boolValue];
402 if ([value isKindOfClass:
CPData])
429 if ([value respondsToSelector:
@selector(floatValue)])
430 value = [value floatValue];
432 return parseFloat(value);
444 if ([value respondsToSelector:
@selector(intValue)])
445 value = [value intValue];
447 return parseInt(value);
468 else if ([value respondsToSelector:
@selector(stringValue)])
469 return [value stringValue];
480 if (![value isKindOfClass:CPArray])
483 for (var i = 0, count = [value count]; i < count; i++)
484 if (![value[i] isKindOfClass:
CPString])
496 if ([value isKindOfClass:
CPURL])
505 #pragma mark Setting Default Values
513 if ([aValue respondsToSelector:
@selector(boolValue)])
521 - (void)setFloat:(
float)aValue forKey:(
CPString)aKey
523 if ([aValue respondsToSelector:
@selector(floatValue)])
524 aValue = [aValue floatValue];
532 - (void)setDouble:(
double)aValue forKey:(
CPString)aKey
541 - (void)setInteger:(
int)aValue forKey:(
CPString)aKey
543 if ([aValue respondsToSelector:
@selector(intValue)])
544 aValue = [aValue intValue];
555 if ([aValue isKindOfClass:
CPString])
570 _CPRaiseInvalidAbstractInvocation(
self, _cmd);
576 _CPRaiseInvalidAbstractInvocation(
self, _cmd);
588 if (_domain === aDomain)
598 var result = [_cookie value];
599 if (!result || [result length] < 1)
618 + (BOOL)supportsLocalStorage
620 if (!window.localStorage)
641 if (![[
self class] supportsLocalStorage])
643 [
CPException raise:@"UnsupportedFeature"
reason:@"Browser does not support localStorage for CPUserDefaultsLocalStore"];
647 return self = [
super init];
652 var result = localStorage.getItem(_domain);
653 if (!result || [result length] < 1)
663 localStorage.setItem(_domain, encodeURIComponent([aData rawString]));
667 CPLog.warn(
"Unable to write to local storage: " + e);