add method binding and error guards

This commit is contained in:
Shelley Vohr 2017-12-10 11:25:43 -05:00
parent 1ccad4a7e9
commit 18ee34f1a1
No known key found for this signature in database
GPG key ID: F13993A75599653C
3 changed files with 11 additions and 6 deletions

View file

@ -65,6 +65,7 @@ void SystemPreferences::BuildPrototype(
&SystemPreferences::SubscribeLocalNotification)
.SetMethod("unsubscribeLocalNotification",
&SystemPreferences::UnsubscribeLocalNotification)
.SetMethod("registerDefaults", &SystemPreferences::RegisterDefaults)
.SetMethod("getUserDefault", &SystemPreferences::GetUserDefault)
.SetMethod("setUserDefault", &SystemPreferences::SetUserDefault)
.SetMethod("removeUserDefault", &SystemPreferences::RemoveUserDefault)

View file

@ -73,7 +73,7 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences>
void UnsubscribeLocalNotification(int request_id);
v8::Local<v8::Value> GetUserDefault(const std::string& name,
const std::string& type);
void RegisterDefaults(const base::DictionaryValue& defaults);
void RegisterDefaults(mate::Arguments* args);
void SetUserDefault(const std::string& name,
const std::string& type,
mate::Arguments* args);

View file

@ -144,11 +144,15 @@ v8::Local<v8::Value> SystemPreferences::GetUserDefault(
}
}
void SystemPreferences::RegisterDefaults(const base::DictionaryValue& defaults) {
if (NSDictionary* defaultsDict = DictionaryValueToNSDictionary(defaults)) {
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDict];
} else {
defaults->ThrowError("Unable to parse userDefaults");
void SystemPreferences::RegisterDefaults(mate::Arguments* args) {
base::DictionaryValue value;
if (!args->GetNext(&value)) {
args->ThrowError("Unable to parse userDefaults dict");
return;
}
if (NSDictionary* dict = DictionaryValueToNSDictionary(value)) {
[[NSUserDefaults standardUserDefaults] registerDefaults:dict];
}
}