diff --git a/shell/browser/api/electron_api_system_preferences_mac.mm b/shell/browser/api/electron_api_system_preferences_mac.mm index 29e8aea2f948..489548f34eb2 100644 --- a/shell/browser/api/electron_api_system_preferences_mac.mm +++ b/shell/browser/api/electron_api_system_preferences_mac.mm @@ -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() {