Cleanup wrapper function when app has done quitting
The app may still do something when quitting, we need to make sure the wrapper function is still there at that time.
This commit is contained in:
parent
441cc3e57e
commit
75f49477ca
5 changed files with 31 additions and 24 deletions
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
|
#include "atom/browser/atom_browser_main_parts.h"
|
||||||
#include "atom/common/native_mate_converters/callback.h"
|
#include "atom/common/native_mate_converters/callback.h"
|
||||||
#include "atom/common/native_mate_converters/file_path_converter.h"
|
#include "atom/common/native_mate_converters/file_path_converter.h"
|
||||||
#include "atom/common/native_mate_converters/gurl_converter.h"
|
#include "atom/common/native_mate_converters/gurl_converter.h"
|
||||||
|
@ -159,14 +160,6 @@ mate::ObjectTemplateBuilder DownloadItem::GetObjectTemplateBuilder(
|
||||||
.SetMethod("setSavePath", &DownloadItem::SetSavePath);
|
.SetMethod("setSavePath", &DownloadItem::SetSavePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetWrapDownloadItem(const WrapDownloadItemCallback& callback) {
|
|
||||||
g_wrap_download_item = callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClearWrapDownloadItem() {
|
|
||||||
g_wrap_download_item.Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
// static
|
||||||
mate::Handle<DownloadItem> DownloadItem::Create(
|
mate::Handle<DownloadItem> DownloadItem::Create(
|
||||||
v8::Isolate* isolate, content::DownloadItem* item) {
|
v8::Isolate* isolate, content::DownloadItem* item) {
|
||||||
|
@ -182,6 +175,18 @@ void* DownloadItem::UserDataKey() {
|
||||||
return &kDownloadItemSavePathKey;
|
return &kDownloadItemSavePathKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClearWrapDownloadItem() {
|
||||||
|
g_wrap_download_item.Reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetWrapDownloadItem(const WrapDownloadItemCallback& callback) {
|
||||||
|
g_wrap_download_item = callback;
|
||||||
|
|
||||||
|
// Cleanup the wrapper on exit.
|
||||||
|
atom::AtomBrowserMainParts::Get()->RegisterDestructionCallback(
|
||||||
|
base::Bind(ClearWrapDownloadItem));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace api
|
} // namespace api
|
||||||
|
|
||||||
} // namespace atom
|
} // namespace atom
|
||||||
|
@ -193,7 +198,6 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
|
||||||
v8::Isolate* isolate = context->GetIsolate();
|
v8::Isolate* isolate = context->GetIsolate();
|
||||||
mate::Dictionary dict(isolate, exports);
|
mate::Dictionary dict(isolate, exports);
|
||||||
dict.SetMethod("_setWrapDownloadItem", &atom::api::SetWrapDownloadItem);
|
dict.SetMethod("_setWrapDownloadItem", &atom::api::SetWrapDownloadItem);
|
||||||
dict.SetMethod("_clearWrapDownloadItem", &atom::api::ClearWrapDownloadItem);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
@ -9,9 +9,10 @@
|
||||||
|
|
||||||
#include "atom/browser/api/atom_api_cookies.h"
|
#include "atom/browser/api/atom_api_cookies.h"
|
||||||
#include "atom/browser/api/atom_api_download_item.h"
|
#include "atom/browser/api/atom_api_download_item.h"
|
||||||
#include "atom/browser/atom_browser_context.h"
|
|
||||||
#include "atom/browser/api/atom_api_web_contents.h"
|
#include "atom/browser/api/atom_api_web_contents.h"
|
||||||
#include "atom/browser/api/save_page_handler.h"
|
#include "atom/browser/api/save_page_handler.h"
|
||||||
|
#include "atom/browser/atom_browser_context.h"
|
||||||
|
#include "atom/browser/atom_browser_main_parts.h"
|
||||||
#include "atom/common/native_mate_converters/callback.h"
|
#include "atom/common/native_mate_converters/callback.h"
|
||||||
#include "atom/common/native_mate_converters/gurl_converter.h"
|
#include "atom/common/native_mate_converters/gurl_converter.h"
|
||||||
#include "atom/common/native_mate_converters/file_path_converter.h"
|
#include "atom/common/native_mate_converters/file_path_converter.h"
|
||||||
|
@ -395,14 +396,18 @@ mate::Handle<Session> Session::FromPartition(
|
||||||
static_cast<AtomBrowserContext*>(browser_context.get()));
|
static_cast<AtomBrowserContext*>(browser_context.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetWrapSession(const WrapSessionCallback& callback) {
|
|
||||||
g_wrap_session = callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClearWrapSession() {
|
void ClearWrapSession() {
|
||||||
g_wrap_session.Reset();
|
g_wrap_session.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetWrapSession(const WrapSessionCallback& callback) {
|
||||||
|
g_wrap_session = callback;
|
||||||
|
|
||||||
|
// Cleanup the wrapper on exit.
|
||||||
|
atom::AtomBrowserMainParts::Get()->RegisterDestructionCallback(
|
||||||
|
base::Bind(ClearWrapSession));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace api
|
} // namespace api
|
||||||
|
|
||||||
} // namespace atom
|
} // namespace atom
|
||||||
|
@ -415,7 +420,6 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
|
||||||
mate::Dictionary dict(isolate, exports);
|
mate::Dictionary dict(isolate, exports);
|
||||||
dict.SetMethod("fromPartition", &atom::api::Session::FromPartition);
|
dict.SetMethod("fromPartition", &atom::api::Session::FromPartition);
|
||||||
dict.SetMethod("_setWrapSession", &atom::api::SetWrapSession);
|
dict.SetMethod("_setWrapSession", &atom::api::SetWrapSession);
|
||||||
dict.SetMethod("_clearWrapSession", &atom::api::ClearWrapSession);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
@ -1124,14 +1124,18 @@ mate::Handle<WebContents> WebContents::Create(
|
||||||
return handle;
|
return handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetWrapWebContents(const WrapWebContentsCallback& callback) {
|
|
||||||
g_wrap_web_contents = callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClearWrapWebContents() {
|
void ClearWrapWebContents() {
|
||||||
g_wrap_web_contents.Reset();
|
g_wrap_web_contents.Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetWrapWebContents(const WrapWebContentsCallback& callback) {
|
||||||
|
g_wrap_web_contents = callback;
|
||||||
|
|
||||||
|
// Cleanup the wrapper on exit.
|
||||||
|
atom::AtomBrowserMainParts::Get()->RegisterDestructionCallback(
|
||||||
|
base::Bind(ClearWrapWebContents));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace api
|
} // namespace api
|
||||||
|
|
||||||
} // namespace atom
|
} // namespace atom
|
||||||
|
@ -1145,7 +1149,6 @@ void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
|
||||||
mate::Dictionary dict(isolate, exports);
|
mate::Dictionary dict(isolate, exports);
|
||||||
dict.SetMethod("create", &atom::api::WebContents::Create);
|
dict.SetMethod("create", &atom::api::WebContents::Create);
|
||||||
dict.SetMethod("_setWrapWebContents", &atom::api::SetWrapWebContents);
|
dict.SetMethod("_setWrapWebContents", &atom::api::SetWrapWebContents);
|
||||||
dict.SetMethod("_clearWrapWebContents", &atom::api::ClearWrapWebContents);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
@ -59,10 +59,7 @@ app.on 'activate', (event, hasVisibleWindows) -> @emit 'activate-with-no-open-wi
|
||||||
|
|
||||||
# Wrappers for native classes.
|
# Wrappers for native classes.
|
||||||
sessionBindings._setWrapSession wrapSession
|
sessionBindings._setWrapSession wrapSession
|
||||||
process.once 'exit', sessionBindings._clearWrapSession
|
|
||||||
|
|
||||||
downloadItemBindings._setWrapDownloadItem wrapDownloadItem
|
downloadItemBindings._setWrapDownloadItem wrapDownloadItem
|
||||||
process.once 'exit', downloadItemBindings._clearWrapDownloadItem
|
|
||||||
|
|
||||||
# Only one App object pemitted.
|
# Only one App object pemitted.
|
||||||
module.exports = app
|
module.exports = app
|
||||||
|
|
|
@ -112,7 +112,6 @@ wrapWebContents = (webContents) ->
|
||||||
@_printToPDF printingSetting, callback
|
@_printToPDF printingSetting, callback
|
||||||
|
|
||||||
binding._setWrapWebContents wrapWebContents
|
binding._setWrapWebContents wrapWebContents
|
||||||
process.once 'exit', binding._clearWrapWebContents
|
|
||||||
|
|
||||||
module.exports.create = (options={}) ->
|
module.exports.create = (options={}) ->
|
||||||
binding.create(options)
|
binding.create(options)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue