refactor: SystemPreferences::SetUserDefault (#23412)

This commit is contained in:
Milan Burda 2020-05-10 00:38:15 +02:00 committed by GitHub
parent 3c132dc445
commit f9c04449f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -311,86 +311,68 @@ void SystemPreferences::RegisterDefaults(gin_helper::Arguments* args) {
void SystemPreferences::SetUserDefault(const std::string& name,
const std::string& type,
gin_helper::Arguments* args) {
const auto throwConversionError = [&] {
args->ThrowError("Unable to convert value to: " + type);
};
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSString* key = base::SysUTF8ToNSString(name);
if (type == "string") {
std::string value;
if (!args->GetNext(&value)) {
throwConversionError();
if (args->GetNext(&value)) {
[defaults setObject:base::SysUTF8ToNSString(value) forKey:key];
return;
}
[defaults setObject:base::SysUTF8ToNSString(value) forKey:key];
} else if (type == "boolean") {
bool value;
if (!args->GetNext(&value)) {
throwConversionError();
if (args->GetNext(&value)) {
[defaults setBool:value forKey:key];
return;
}
[defaults setBool:value forKey:key];
} else if (type == "float") {
float value;
if (!args->GetNext(&value)) {
throwConversionError();
if (args->GetNext(&value)) {
[defaults setFloat:value forKey:key];
return;
}
[defaults setFloat:value forKey:key];
} else if (type == "integer") {
int value;
if (!args->GetNext(&value)) {
throwConversionError();
if (args->GetNext(&value)) {
[defaults setInteger:value forKey:key];
return;
}
[defaults setInteger:value forKey:key];
} else if (type == "double") {
double value;
if (!args->GetNext(&value)) {
throwConversionError();
if (args->GetNext(&value)) {
[defaults setDouble:value forKey:key];
return;
}
[defaults setDouble:value forKey:key];
} else if (type == "url") {
GURL value;
if (!args->GetNext(&value)) {
throwConversionError();
return;
}
if (NSURL* url = net::NSURLWithGURL(value)) {
[defaults setURL:url forKey:key];
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)) {
throwConversionError();
return;
}
if (NSArray* array = ListValueToNSArray(value)) {
[defaults setObject:array forKey:key];
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)) {
throwConversionError();
return;
}
if (NSDictionary* dict = DictionaryValueToNSDictionary(value)) {
[defaults setObject:dict forKey:key];
if (args->GetNext(&value)) {
if (NSDictionary* dict = DictionaryValueToNSDictionary(value)) {
[defaults setObject:dict forKey:key];
return;
}
}
} else {
args->ThrowError("Invalid type: " + type);
return;
}
args->ThrowError("Unable to convert value to: " + type);
}
std::string SystemPreferences::GetAccentColor() {