Add the 'app' built-in module.

This commit is contained in:
Cheng Zhao 2013-05-03 00:05:09 +08:00
Родитель d151d494bd
Коммит 66404b5f15
5 изменённых файлов: 84 добавлений и 0 удалений

Просмотреть файл

@ -6,6 +6,7 @@
'app/atom_main.cc',
],
'coffee_sources': [
'browser/api/lib/app.coffee',
'browser/api/lib/atom.coffee',
'browser/api/lib/ipc.coffee',
'browser/api/lib/window.coffee',
@ -21,6 +22,8 @@
'lib_sources': [
'app/atom_main_delegate.cc',
'app/atom_main_delegate.h',
'browser/api/atom_api_app.cc',
'browser/api/atom_api_app.h',
'browser/api/atom_api_browser_ipc.cc',
'browser/api/atom_api_browser_ipc.h',
'browser/api/atom_api_event.cc',

Просмотреть файл

@ -0,0 +1,42 @@
// Copyright (c) 2013 GitHub, Inc. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "browser/api/atom_api_app.h"
#include "browser/browser.h"
#include "vendor/node/src/node.h"
namespace atom {
namespace api {
// static
v8::Handle<v8::Value> App::Quit(const v8::Arguments &args) {
v8::HandleScope scope;
Browser::Get()->Quit();
return v8::Undefined();
}
// static
v8::Handle<v8::Value> App::Terminate(const v8::Arguments &args) {
v8::HandleScope scope;
Browser::Get()->Terminate();
return v8::Undefined();
}
// static
void App::Initialize(v8::Handle<v8::Object> target) {
node::SetMethod(target, "quit", Quit);
node::SetMethod(target, "terminate", Terminate);
}
} // namespace api
} // namespace atom
NODE_MODULE(atom_browser_app, atom::api::App::Initialize)

Просмотреть файл

@ -0,0 +1,30 @@
// Copyright (c) 2013 GitHub, Inc. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ATOM_BROWSER_API_ATOM_API_APP_H_
#define ATOM_BROWSER_API_ATOM_API_APP_H_
#include "base/basictypes.h"
#include "v8/include/v8.h"
namespace atom {
namespace api {
class App {
public:
static void Initialize(v8::Handle<v8::Object> target);
private:
static v8::Handle<v8::Value> Quit(const v8::Arguments &args);
static v8::Handle<v8::Value> Terminate(const v8::Arguments &args);
DISALLOW_IMPLICIT_CONSTRUCTORS(App);
};
} // namespace api
} // namespace atom
#endif // ATOM_BROWSER_API_ATOM_API_APP_H_

Просмотреть файл

@ -0,0 +1,8 @@
binding = process.atomBinding 'app'
EventEmitter = require('events').EventEmitter
class App extends EventEmitter
quit: binding.quit
terminate: binding.terminate
module.exports = new App

Просмотреть файл

@ -9,6 +9,7 @@
NODE_EXT_LIST_START
// Module names start with `atom_browser_` can only be used by browser process.
NODE_EXT_LIST_ITEM(atom_browser_app)
NODE_EXT_LIST_ITEM(atom_browser_ipc)
NODE_EXT_LIST_ITEM(atom_browser_window)