in shell/browser/api/electron_api_system_preferences_mac.mm [304:372]
void SystemPreferences::SetUserDefault(const std::string& name,
const std::string& type,
gin::Arguments* args) {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSString* key = base::SysUTF8ToNSString(name);
if (type == "string") {
std::string value;
if (args->GetNext(&value)) {
[defaults setObject:base::SysUTF8ToNSString(value) forKey:key];
return;
}
} else if (type == "boolean") {
bool value;
v8::Local<v8::Value> next = args->PeekNext();
if (!next.IsEmpty() && next->IsBoolean() && args->GetNext(&value)) {
[defaults setBool:value forKey:key];
return;
}
} else if (type == "float") {
float value;
if (args->GetNext(&value)) {
[defaults setFloat:value forKey:key];
return;
}
} else if (type == "integer") {
int value;
if (args->GetNext(&value)) {
[defaults setInteger:value forKey:key];
return;
}
} else if (type == "double") {
double value;
if (args->GetNext(&value)) {
[defaults setDouble:value forKey:key];
return;
}
} else if (type == "url") {
GURL value;
if (args->GetNext(&value)) {
if (NSURL* url = net::NSURLWithGURL(value)) {
[defaults setURL:url forKey:key];
return;
}
}
} else if (type == "array") {
base::ListValue value;
if (args->GetNext(&value)) {
if (NSArray* array = ListValueToNSArray(value)) {
[defaults setObject:array forKey:key];
return;
}
}
} else if (type == "dictionary") {
base::DictionaryValue value;
if (args->GetNext(&value)) {
if (NSDictionary* dict = DictionaryValueToNSDictionary(value)) {
[defaults setObject:dict forKey:key];
return;
}
}
} else {
gin_helper::ErrorThrower(args->isolate())
.ThrowTypeError("Invalid type: " + type);
return;
}
gin_helper::ErrorThrower(args->isolate())
.ThrowTypeError("Unable to convert value to: " + type);
}