Add systemPreferences module
authorCheng Zhao <zcbenz@gmail.com>
Sun, 24 Apr 2016 12:13:46 +0000 (21:13 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Mon, 25 Apr 2016 02:32:33 +0000 (11:32 +0900)
atom/browser/api/atom_api_system_preferences.cc [new file with mode: 0644]
atom/browser/api/atom_api_system_preferences.h [new file with mode: 0644]
atom/browser/api/atom_api_system_preferences_mac.mm [new file with mode: 0644]
atom/common/node_bindings.cc
filenames.gypi
lib/browser/api/exports/electron.js
lib/browser/api/system-preferences.js [new file with mode: 0644]

diff --git a/atom/browser/api/atom_api_system_preferences.cc b/atom/browser/api/atom_api_system_preferences.cc
new file mode 100644 (file)
index 0000000..53aaabd
--- /dev/null
@@ -0,0 +1,48 @@
+// Copyright (c) 2016 GitHub, Inc.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+#include "atom/browser/api/atom_api_system_preferences.h"
+
+#include "atom/common/node_includes.h"
+#include "native_mate/dictionary.h"
+
+namespace atom {
+
+namespace api {
+
+SystemPreferences::SystemPreferences(v8::Isolate* isolate) {
+  Init(isolate);
+}
+
+SystemPreferences::~SystemPreferences() {
+}
+
+// static
+mate::Handle<SystemPreferences> SystemPreferences::Create(
+    v8::Isolate* isolate) {
+  return mate::CreateHandle(isolate, new SystemPreferences(isolate));
+}
+
+// static
+void SystemPreferences::BuildPrototype(
+    v8::Isolate* isolate, v8::Local<v8::ObjectTemplate> prototype) {
+  mate::ObjectTemplateBuilder(isolate, prototype);
+}
+
+}  // namespace api
+
+}  // namespace atom
+
+namespace {
+
+void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
+                v8::Local<v8::Context> context, void* priv) {
+  v8::Isolate* isolate = context->GetIsolate();
+  mate::Dictionary dict(isolate, exports);
+  dict.Set("systemPreferences", atom::api::SystemPreferences::Create(isolate));
+}
+
+}  // namespace
+
+NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_browser_system_preferences, Initialize);
diff --git a/atom/browser/api/atom_api_system_preferences.h b/atom/browser/api/atom_api_system_preferences.h
new file mode 100644 (file)
index 0000000..22c68b2
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (c) 2016 GitHub, Inc.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+#ifndef ATOM_BROWSER_API_ATOM_API_SYSTEM_PREFERENCES_H_
+#define ATOM_BROWSER_API_ATOM_API_SYSTEM_PREFERENCES_H_
+
+#include "atom/browser/api/event_emitter.h"
+#include "native_mate/handle.h"
+
+namespace atom {
+
+namespace api {
+
+class SystemPreferences : public mate::EventEmitter<SystemPreferences> {
+ public:
+  static mate::Handle<SystemPreferences> Create(v8::Isolate* isolate);
+
+  static void BuildPrototype(v8::Isolate* isolate,
+                             v8::Local<v8::ObjectTemplate> prototype);
+
+ protected:
+  explicit SystemPreferences(v8::Isolate* isolate);
+  ~SystemPreferences() override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(SystemPreferences);
+};
+
+}  // namespace api
+
+}  // namespace atom
+
+#endif  // ATOM_BROWSER_API_ATOM_API_SYSTEM_PREFERENCES_H_
diff --git a/atom/browser/api/atom_api_system_preferences_mac.mm b/atom/browser/api/atom_api_system_preferences_mac.mm
new file mode 100644 (file)
index 0000000..337d0f8
--- /dev/null
@@ -0,0 +1,15 @@
+// Copyright (c) 2016 GitHub, Inc.
+// Use of this source code is governed by the MIT license that can be
+// found in the LICENSE file.
+
+#include "atom/browser/api/atom_api_system_preferences.h"
+
+namespace atom {
+
+namespace api {
+
+
+
+}  // namespace api
+
+}  // namespace atom
index 86fb3a6d03a323b9b6d1f6b0cfec11dce8916df0..31105886eb7cb81ef1dd24c0b63fe25efea2818e 100644 (file)
@@ -44,6 +44,7 @@ REFERENCE_MODULE(atom_browser_power_save_blocker);
 REFERENCE_MODULE(atom_browser_protocol);
 REFERENCE_MODULE(atom_browser_global_shortcut);
 REFERENCE_MODULE(atom_browser_session);
+REFERENCE_MODULE(atom_browser_system_preferences);
 REFERENCE_MODULE(atom_browser_tray);
 REFERENCE_MODULE(atom_browser_web_contents);
 REFERENCE_MODULE(atom_browser_web_view_manager);
index a1c704c348b1d86af886fbc9d66f0d241bcf3ec4..c3eca34528df5bee993670d32746d9da221743a8 100644 (file)
@@ -28,6 +28,7 @@
       'lib/browser/api/protocol.js',
       'lib/browser/api/session.js',
       'lib/browser/api/screen.js',
+      'lib/browser/api/system-preferences.js',
       'lib/browser/api/tray.js',
       'lib/browser/api/web-contents.js',
       'lib/browser/chrome-extension.js',
       'atom/browser/api/atom_api_screen.h',
       'atom/browser/api/atom_api_session.cc',
       'atom/browser/api/atom_api_session.h',
+      'atom/browser/api/atom_api_system_preferences.cc',
+      'atom/browser/api/atom_api_system_preferences.h',
+      'atom/browser/api/atom_api_system_preferences_mac.mm',
       'atom/browser/api/atom_api_tray.cc',
       'atom/browser/api/atom_api_tray.h',
       'atom/browser/api/atom_api_web_contents.cc',
index bd8285401c797e2349d4527cee8964f0a3dbba76..9d873663029cd8384d1fb17c278c7485b38cdf90 100644 (file)
@@ -89,6 +89,12 @@ Object.defineProperties(exports, {
       return require('../session')
     }
   },
+  systemPreferences: {
+    enumerable: true,
+    get: function () {
+      return require('../system-preferences')
+    }
+  },
   Tray: {
     enumerable: true,
     get: function () {
diff --git a/lib/browser/api/system-preferences.js b/lib/browser/api/system-preferences.js
new file mode 100644 (file)
index 0000000..6ba1750
--- /dev/null
@@ -0,0 +1,6 @@
+const {EventEmitter} = require('events')
+const {systemPreferences} = process.atomBinding('system_preferences')
+
+Object.setPrototypeOf(systemPreferences, EventEmitter.prototype)
+
+module.exports = systemPreferences