Rely on OnDownloadDestroyed to destroy downloadItem
This commit is contained in:
parent
f624800881
commit
f1f91828ba
3 changed files with 4 additions and 18 deletions
|
@ -12,7 +12,6 @@
|
||||||
#include "atom/common/native_mate_converters/gurl_converter.h"
|
#include "atom/common/native_mate_converters/gurl_converter.h"
|
||||||
#include "atom/common/node_includes.h"
|
#include "atom/common/node_includes.h"
|
||||||
#include "base/memory/linked_ptr.h"
|
#include "base/memory/linked_ptr.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
#include "native_mate/dictionary.h"
|
#include "native_mate/dictionary.h"
|
||||||
#include "net/base/filename_util.h"
|
#include "net/base/filename_util.h"
|
||||||
|
@ -71,17 +70,6 @@ DownloadItem::DownloadItem(content::DownloadItem* download_item) :
|
||||||
}
|
}
|
||||||
|
|
||||||
DownloadItem::~DownloadItem() {
|
DownloadItem::~DownloadItem() {
|
||||||
Destroy(download_item_);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DownloadItem::Destroy(content::DownloadItem* item) {
|
|
||||||
if (item) {
|
|
||||||
OnDownloadDestroyed(item);
|
|
||||||
MarkDestroyed();
|
|
||||||
|
|
||||||
// Destroy the native class in next tick.
|
|
||||||
base::MessageLoop::current()->PostTask(FROM_HERE, GetDestroyClosure());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DownloadItem::OnDownloadUpdated(content::DownloadItem* item) {
|
void DownloadItem::OnDownloadUpdated(content::DownloadItem* item) {
|
||||||
|
@ -93,7 +81,9 @@ void DownloadItem::OnDownloadDestroyed(content::DownloadItem* download_item) {
|
||||||
auto iter = g_download_item_objects.find(download_item->GetId());
|
auto iter = g_download_item_objects.find(download_item->GetId());
|
||||||
if (iter != g_download_item_objects.end())
|
if (iter != g_download_item_objects.end())
|
||||||
g_download_item_objects.erase(iter);
|
g_download_item_objects.erase(iter);
|
||||||
download_item_ = nullptr;
|
|
||||||
|
// Destroy the wrapper once the download_item is destroyed.
|
||||||
|
delete this;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64 DownloadItem::GetReceivedBytes() {
|
int64 DownloadItem::GetReceivedBytes() {
|
||||||
|
|
|
@ -36,8 +36,6 @@ class DownloadItem : public mate::TrackableObject<DownloadItem>,
|
||||||
static void BuildPrototype(v8::Isolate* isolate,
|
static void BuildPrototype(v8::Isolate* isolate,
|
||||||
v8::Local<v8::ObjectTemplate> prototype);
|
v8::Local<v8::ObjectTemplate> prototype);
|
||||||
|
|
||||||
void Destroy(content::DownloadItem* download_item);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit DownloadItem(content::DownloadItem* download_item);
|
explicit DownloadItem(content::DownloadItem* download_item);
|
||||||
~DownloadItem();
|
~DownloadItem();
|
||||||
|
|
|
@ -306,14 +306,12 @@ void Session::OnDownloadCreated(content::DownloadManager* manager,
|
||||||
auto web_contents = item->GetWebContents();
|
auto web_contents = item->GetWebContents();
|
||||||
if (SavePageHandler::IsSavePageTypes(item->GetMimeType()))
|
if (SavePageHandler::IsSavePageTypes(item->GetMimeType()))
|
||||||
return;
|
return;
|
||||||
auto download_item_handle = DownloadItem::Create(isolate(), item);
|
|
||||||
bool prevent_default = Emit(
|
bool prevent_default = Emit(
|
||||||
"will-download",
|
"will-download",
|
||||||
download_item_handle,
|
DownloadItem::Create(isolate(), item),
|
||||||
api::WebContents::CreateFrom(isolate(), web_contents));
|
api::WebContents::CreateFrom(isolate(), web_contents));
|
||||||
if (prevent_default) {
|
if (prevent_default) {
|
||||||
item->Cancel(true);
|
item->Cancel(true);
|
||||||
download_item_handle->Destroy(item);
|
|
||||||
item->Remove();
|
item->Remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue