Move check of isReady to native code
This commit is contained in:
parent
d739d8772c
commit
06a41cedab
2 changed files with 16 additions and 15 deletions
|
@ -11,6 +11,7 @@
|
||||||
#include "atom/browser/api/atom_api_download_item.h"
|
#include "atom/browser/api/atom_api_download_item.h"
|
||||||
#include "atom/browser/api/atom_api_protocol.h"
|
#include "atom/browser/api/atom_api_protocol.h"
|
||||||
#include "atom/browser/api/atom_api_web_request.h"
|
#include "atom/browser/api/atom_api_web_request.h"
|
||||||
|
#include "atom/browser/browser.h"
|
||||||
#include "atom/browser/atom_browser_context.h"
|
#include "atom/browser/atom_browser_context.h"
|
||||||
#include "atom/browser/atom_browser_main_parts.h"
|
#include "atom/browser/atom_browser_main_parts.h"
|
||||||
#include "atom/browser/atom_permission_manager.h"
|
#include "atom/browser/atom_permission_manager.h"
|
||||||
|
@ -576,11 +577,21 @@ void SetWrapSession(const WrapSessionCallback& callback) {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
v8::Local<v8::Value> FromPartition(
|
||||||
|
const std::string& partition, bool in_memory, mate::Arguments* args) {
|
||||||
|
if (!atom::Browser::Get()->is_ready()) {
|
||||||
|
args->ThrowError("Session can only be received when app is ready");
|
||||||
|
return v8::Null(args->isolate());
|
||||||
|
}
|
||||||
|
return atom::api::Session::FromPartition(
|
||||||
|
args->isolate(), partition, in_memory).ToV8();
|
||||||
|
}
|
||||||
|
|
||||||
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
|
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
|
||||||
v8::Local<v8::Context> context, void* priv) {
|
v8::Local<v8::Context> context, void* priv) {
|
||||||
v8::Isolate* isolate = context->GetIsolate();
|
v8::Isolate* isolate = context->GetIsolate();
|
||||||
mate::Dictionary dict(isolate, exports);
|
mate::Dictionary dict(isolate, exports);
|
||||||
dict.SetMethod("fromPartition", &atom::api::Session::FromPartition);
|
dict.SetMethod("fromPartition", &FromPartition);
|
||||||
dict.SetMethod("_setWrapSession", &atom::api::SetWrapSession);
|
dict.SetMethod("_setWrapSession", &atom::api::SetWrapSession);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,9 @@
|
||||||
const {EventEmitter} = require('events')
|
const {EventEmitter} = require('events')
|
||||||
const {app} = require('electron')
|
const {app} = require('electron')
|
||||||
const bindings = process.atomBinding('session')
|
const {fromPartition, _setWrapSession} = process.atomBinding('session')
|
||||||
|
|
||||||
const PERSIST_PREFIX = 'persist:'
|
const PERSIST_PREFIX = 'persist:'
|
||||||
|
|
||||||
// Wrapper of binding.fromPartition that checks for ready event.
|
|
||||||
const fromPartition = function (partition, persist) {
|
|
||||||
if (!app.isReady()) {
|
|
||||||
throw new Error('session module can only be used when app is ready')
|
|
||||||
}
|
|
||||||
|
|
||||||
return bindings.fromPartition(partition, persist)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns the Session from |partition| string.
|
// Returns the Session from |partition| string.
|
||||||
exports.fromPartition = function (partition = '') {
|
exports.fromPartition = function (partition = '') {
|
||||||
if (partition === '') return exports.defaultSession
|
if (partition === '') return exports.defaultSession
|
||||||
|
@ -32,10 +23,9 @@ Object.defineProperty(exports, 'defaultSession', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const wrapSession = function (session) {
|
// Wraps native Session class.
|
||||||
|
_setWrapSession(function (session) {
|
||||||
// Session is an EventEmitter.
|
// Session is an EventEmitter.
|
||||||
Object.setPrototypeOf(session, EventEmitter.prototype)
|
Object.setPrototypeOf(session, EventEmitter.prototype)
|
||||||
app.emit('session-created', session)
|
app.emit('session-created', session)
|
||||||
}
|
})
|
||||||
|
|
||||||
bindings._setWrapSession(wrapSession)
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue