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