Add auto-updater module.
This commit is contained in:
parent
7f605c8442
commit
1f8fd40195
5 changed files with 119 additions and 0 deletions
3
atom.gyp
3
atom.gyp
|
@ -11,6 +11,7 @@
|
||||||
'coffee_sources': [
|
'coffee_sources': [
|
||||||
'browser/api/lib/app.coffee',
|
'browser/api/lib/app.coffee',
|
||||||
'browser/api/lib/atom-delegate.coffee',
|
'browser/api/lib/atom-delegate.coffee',
|
||||||
|
'browser/api/lib/auto-updater.coffee',
|
||||||
'browser/api/lib/browser-window.coffee',
|
'browser/api/lib/browser-window.coffee',
|
||||||
'browser/api/lib/crash-reporter.coffee',
|
'browser/api/lib/crash-reporter.coffee',
|
||||||
'browser/api/lib/dialog.coffee',
|
'browser/api/lib/dialog.coffee',
|
||||||
|
@ -35,6 +36,8 @@
|
||||||
'browser/accelerator_util_mac.mm',
|
'browser/accelerator_util_mac.mm',
|
||||||
'browser/api/atom_api_app.cc',
|
'browser/api/atom_api_app.cc',
|
||||||
'browser/api/atom_api_app.h',
|
'browser/api/atom_api_app.h',
|
||||||
|
'browser/api/atom_api_auto_updater.cc',
|
||||||
|
'browser/api/atom_api_auto_updater.h',
|
||||||
'browser/api/atom_api_browser_ipc.cc',
|
'browser/api/atom_api_browser_ipc.cc',
|
||||||
'browser/api/atom_api_browser_ipc.h',
|
'browser/api/atom_api_browser_ipc.h',
|
||||||
'browser/api/atom_api_crash_reporter.h',
|
'browser/api/atom_api_crash_reporter.h',
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "browser/api/atom_api_auto_updater.h"
|
#include "browser/api/atom_api_auto_updater.h"
|
||||||
|
|
||||||
|
#include "base/values.h"
|
||||||
#include "browser/auto_updater.h"
|
#include "browser/auto_updater.h"
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
@ -12,14 +13,104 @@ namespace api {
|
||||||
|
|
||||||
AutoUpdater::AutoUpdater(v8::Handle<v8::Object> wrapper)
|
AutoUpdater::AutoUpdater(v8::Handle<v8::Object> wrapper)
|
||||||
: EventEmitter(wrapper) {
|
: EventEmitter(wrapper) {
|
||||||
|
auto_updater::AutoUpdater::SetDelegate(this);
|
||||||
|
auto_updater::AutoUpdater::Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
AutoUpdater::~AutoUpdater() {
|
AutoUpdater::~AutoUpdater() {
|
||||||
|
auto_updater::AutoUpdater::SetDelegate(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoUpdater::WillInstallUpdate(const std::string& version,
|
||||||
|
const base::Closure& install) {
|
||||||
|
base::ListValue args;
|
||||||
|
args.AppendString(version);
|
||||||
|
bool prevent_default = Emit("will-install-update", &args);
|
||||||
|
|
||||||
|
if (prevent_default)
|
||||||
|
continue_update_ = install;
|
||||||
|
else
|
||||||
|
install.Run();
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
v8::Handle<v8::Value> AutoUpdater::New(const v8::Arguments &args) {
|
||||||
|
v8::HandleScope scope;
|
||||||
|
|
||||||
|
if (!args.IsConstructCall())
|
||||||
|
return node::ThrowError("Require constructor call");
|
||||||
|
|
||||||
|
new AutoUpdater(args.This());
|
||||||
|
|
||||||
|
return args.This();
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
v8::Handle<v8::Value> AutoUpdater::SetFeedURL(const v8::Arguments &args) {
|
||||||
|
auto_updater::AutoUpdater::SetFeedURL(*v8::String::Utf8Value(args[0]));
|
||||||
|
return v8::Undefined();
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
v8::Handle<v8::Value> AutoUpdater::SetAutomaticallyChecksForUpdates(
|
||||||
|
const v8::Arguments &args) {
|
||||||
|
auto_updater::AutoUpdater::SetAutomaticallyChecksForUpdates(
|
||||||
|
args[0]->BooleanValue());
|
||||||
|
return v8::Undefined();
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
v8::Handle<v8::Value> AutoUpdater::SetAutomaticallyDownloadsUpdates(
|
||||||
|
const v8::Arguments &args) {
|
||||||
|
auto_updater::AutoUpdater::SetAutomaticallyDownloadsUpdates(
|
||||||
|
args[0]->BooleanValue());
|
||||||
|
return v8::Undefined();
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
v8::Handle<v8::Value> AutoUpdater::CheckForUpdates(const v8::Arguments &args) {
|
||||||
|
auto_updater::AutoUpdater::CheckForUpdates();
|
||||||
|
return v8::Undefined();
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
v8::Handle<v8::Value> AutoUpdater::CheckForUpdatesInBackground(
|
||||||
|
const v8::Arguments &args) {
|
||||||
|
auto_updater::AutoUpdater::CheckForUpdatesInBackground();
|
||||||
|
return v8::Undefined();
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
v8::Handle<v8::Value> AutoUpdater::ContinueUpdate(const v8::Arguments &args) {
|
||||||
|
AutoUpdater* self = AutoUpdater::Unwrap<AutoUpdater>(args.This());
|
||||||
|
self->continue_update_.Run();
|
||||||
|
return v8::Undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
void AutoUpdater::Initialize(v8::Handle<v8::Object> target) {
|
void AutoUpdater::Initialize(v8::Handle<v8::Object> target) {
|
||||||
v8::HandleScope scope;
|
v8::HandleScope scope;
|
||||||
|
|
||||||
|
v8::Local<v8::FunctionTemplate> t(
|
||||||
|
v8::FunctionTemplate::New(AutoUpdater::New));
|
||||||
|
t->InstanceTemplate()->SetInternalFieldCount(1);
|
||||||
|
t->SetClassName(v8::String::NewSymbol("AutoUpdater"));
|
||||||
|
|
||||||
|
NODE_SET_PROTOTYPE_METHOD(t, "setFeedUrl", SetFeedURL);
|
||||||
|
NODE_SET_PROTOTYPE_METHOD(t,
|
||||||
|
"setAutomaticallyChecksForUpdates",
|
||||||
|
SetAutomaticallyChecksForUpdates);
|
||||||
|
NODE_SET_PROTOTYPE_METHOD(t,
|
||||||
|
"setAutomaticallyDownloadsUpdates",
|
||||||
|
SetAutomaticallyDownloadsUpdates);
|
||||||
|
NODE_SET_PROTOTYPE_METHOD(t, "checkForUpdates", CheckForUpdates);
|
||||||
|
NODE_SET_PROTOTYPE_METHOD(t,
|
||||||
|
"checkForUpdatesInBackground",
|
||||||
|
CheckForUpdatesInBackground);
|
||||||
|
|
||||||
|
NODE_SET_PROTOTYPE_METHOD(t, "continueUpdate", ContinueUpdate);
|
||||||
|
|
||||||
|
target->Set(v8::String::NewSymbol("AutoUpdater"), t->GetFunction());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace api
|
} // namespace api
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
#ifndef ATOM_BROWSER_API_ATOM_API_AUTO_UPDATER_H_
|
#ifndef ATOM_BROWSER_API_ATOM_API_AUTO_UPDATER_H_
|
||||||
#define ATOM_BROWSER_API_ATOM_API_AUTO_UPDATER_H_
|
#define ATOM_BROWSER_API_ATOM_API_AUTO_UPDATER_H_
|
||||||
|
|
||||||
|
#include "base/callback.h"
|
||||||
|
#include "base/memory/scoped_ptr.h"
|
||||||
#include "browser/api/atom_api_event_emitter.h"
|
#include "browser/api/atom_api_event_emitter.h"
|
||||||
#include "browser/auto_updater_delegate.h"
|
#include "browser/auto_updater_delegate.h"
|
||||||
|
|
||||||
|
@ -22,9 +24,25 @@ class AutoUpdater : public EventEmitter,
|
||||||
protected:
|
protected:
|
||||||
explicit AutoUpdater(v8::Handle<v8::Object> wrapper);
|
explicit AutoUpdater(v8::Handle<v8::Object> wrapper);
|
||||||
|
|
||||||
|
virtual void WillInstallUpdate(const std::string& version,
|
||||||
|
const base::Closure& install) OVERRIDE;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static v8::Handle<v8::Value> New(const v8::Arguments &args);
|
static v8::Handle<v8::Value> New(const v8::Arguments &args);
|
||||||
|
|
||||||
|
static v8::Handle<v8::Value> SetFeedURL(const v8::Arguments &args);
|
||||||
|
static v8::Handle<v8::Value> SetAutomaticallyChecksForUpdates(
|
||||||
|
const v8::Arguments &args);
|
||||||
|
static v8::Handle<v8::Value> SetAutomaticallyDownloadsUpdates(
|
||||||
|
const v8::Arguments &args);
|
||||||
|
static v8::Handle<v8::Value> CheckForUpdates(const v8::Arguments &args);
|
||||||
|
static v8::Handle<v8::Value> CheckForUpdatesInBackground(
|
||||||
|
const v8::Arguments &args);
|
||||||
|
|
||||||
|
static v8::Handle<v8::Value> ContinueUpdate(const v8::Arguments &args);
|
||||||
|
|
||||||
|
base::Closure continue_update_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(AutoUpdater);
|
DISALLOW_COPY_AND_ASSIGN(AutoUpdater);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
6
browser/api/lib/auto-updater.coffee
Normal file
6
browser/api/lib/auto-updater.coffee
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
AutoUpdater = process.atomBinding('auto_updater').AutoUpdater
|
||||||
|
EventEmitter = require('events').EventEmitter
|
||||||
|
|
||||||
|
AutoUpdater::__proto__ = EventEmitter.prototype
|
||||||
|
|
||||||
|
module.exports = new AutoUpdater
|
|
@ -10,6 +10,7 @@ NODE_EXT_LIST_START
|
||||||
|
|
||||||
// Module names start with `atom_browser_` can only be used by browser process.
|
// 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_app)
|
||||||
|
NODE_EXT_LIST_ITEM(atom_browser_auto_updater)
|
||||||
NODE_EXT_LIST_ITEM(atom_browser_crash_reporter)
|
NODE_EXT_LIST_ITEM(atom_browser_crash_reporter)
|
||||||
NODE_EXT_LIST_ITEM(atom_browser_dialog)
|
NODE_EXT_LIST_ITEM(atom_browser_dialog)
|
||||||
NODE_EXT_LIST_ITEM(atom_browser_ipc)
|
NODE_EXT_LIST_ITEM(atom_browser_ipc)
|
||||||
|
|
Loading…
Reference in a new issue