Skip to content

Commit

Permalink
Merge pull request #10746 from electron/removeuserdefault
Browse files Browse the repository at this point in the history
Add systemPreferences.removeUserDefault()
  • Loading branch information
poiru committed Oct 12, 2017
2 parents bdf3552 + 06d7822 commit 13b9b5c
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 4 deletions.
1 change: 1 addition & 0 deletions atom/browser/api/atom_api_system_preferences.cc
Expand Up @@ -67,6 +67,7 @@ void SystemPreferences::BuildPrototype(
&SystemPreferences::UnsubscribeLocalNotification)
.SetMethod("getUserDefault", &SystemPreferences::GetUserDefault)
.SetMethod("setUserDefault", &SystemPreferences::SetUserDefault)
.SetMethod("removeUserDefault", &SystemPreferences::RemoveUserDefault)
.SetMethod("isSwipeTrackingFromScrollEventsEnabled",
&SystemPreferences::IsSwipeTrackingFromScrollEventsEnabled)
#endif
Expand Down
1 change: 1 addition & 0 deletions atom/browser/api/atom_api_system_preferences.h
Expand Up @@ -76,6 +76,7 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences>
void SetUserDefault(const std::string& name,
const std::string& type,
mate::Arguments* args);
void RemoveUserDefault(const std::string& name);
bool IsSwipeTrackingFromScrollEventsEnabled();
#endif
bool IsDarkMode();
Expand Down
5 changes: 5 additions & 0 deletions atom/browser/api/atom_api_system_preferences_mac.mm
Expand Up @@ -229,6 +229,11 @@
}
}

void SystemPreferences::RemoveUserDefault(const std::string& name) {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:base::SysUTF8ToNSString(name)];
}

bool SystemPreferences::IsDarkMode() {
NSString* mode = [[NSUserDefaults standardUserDefaults]
stringForKey:@"AppleInterfaceStyle"];
Expand Down
15 changes: 11 additions & 4 deletions docs/api/system-preferences.md
Expand Up @@ -112,9 +112,9 @@ Same as `unsubscribeNotification`, but removes the subscriber from `NSNotificati
* `type` String - Can be `string`, `boolean`, `integer`, `float`, `double`,
`url`, `array`, `dictionary`

Returns `any` - The value of `key` in system preferences.
Returns `any` - The value of `key` in `NSUserDefaults`.

This API uses `NSUserDefaults` on macOS. Some popular `key` and `type`s are:
Some popular `key` and `type`s are:

* `AppleInterfaceStyle`: `string`
* `AppleAquaColorVariant`: `integer`
Expand All @@ -130,15 +130,22 @@ This API uses `NSUserDefaults` on macOS. Some popular `key` and `type`s are:
* `type` String - See [`getUserDefault`][#systempreferencesgetuserdefaultkey-type-macos]
* `value` String

Set the value of `key` in system preferences.
Set the value of `key` in `NSUserDefaults`.

Note that `type` should match actual type of `value`. An exception is thrown
if they don't.

This API uses `NSUserDefaults` on macOS. Some popular `key` and `type`s are:
Some popular `key` and `type`s are:

* `ApplePressAndHoldEnabled`: `boolean`

### `systemPreferences.removeUserDefault(key)` _macOS_

* `key` String

Removes the `key` in `NSUserDefaults`. This can be used to restore the default
or global value of a `key` previously set with `setUserDefault`.

### `systemPreferences.isAeroGlassEnabled()` _Windows_

Returns `Boolean` - `true` if [DWM composition][dwm-composition] (Aero Glass) is
Expand Down
17 changes: 17 additions & 0 deletions spec/api-system-preferences-spec.js
Expand Up @@ -100,6 +100,23 @@ describe('systemPreferences module', function () {
})
})

describe('systemPreferences.setUserDefault(key, type, value)', () => {
if (process.platform !== 'darwin') {
return
}

it('removes keys', () => {
const KEY = 'SystemPreferencesTest'
systemPreferences.setUserDefault(KEY, 'string', 'foo')
systemPreferences.removeUserDefault(KEY)
assert.equal(systemPreferences.getUserDefault(KEY, 'string'), '')
})

it('does not throw for missing keys', () => {
systemPreferences.removeUserDefault('some-missing-key')
})
})

describe('systemPreferences.isInvertedColorScheme()', function () {
it('returns a boolean', function () {
assert.equal(typeof systemPreferences.isInvertedColorScheme(), 'boolean')
Expand Down

0 comments on commit 13b9b5c

Please sign in to comment.