summaryrefslogtreecommitdiffstats
path: root/src/core/browser_context_adapter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/browser_context_adapter.cpp')
-rw-r--r--src/core/browser_context_adapter.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/core/browser_context_adapter.cpp b/src/core/browser_context_adapter.cpp
index bec76ad81..41b5b1932 100644
--- a/src/core/browser_context_adapter.cpp
+++ b/src/core/browser_context_adapter.cpp
@@ -41,6 +41,7 @@
#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/download_manager.h"
#include "browser_context_qt.h"
#include "content_client_qt.h"
@@ -101,9 +102,16 @@ BrowserContextAdapter::BrowserContextAdapter(const QString &storageName)
BrowserContextAdapter::~BrowserContextAdapter()
{
+ Q_ASSERT(!m_downloadManagerDelegate);
+}
+
+void BrowserContextAdapter::shutdown()
+{
m_browserContext->ShutdownStoragePartitions();
- if (m_downloadManagerDelegate)
- content::BrowserThread::DeleteSoon(content::BrowserThread::UI, FROM_HERE, m_downloadManagerDelegate.take());
+ if (m_downloadManagerDelegate) {
+ m_browserContext->GetDownloadManager(m_browserContext.data())->Shutdown();
+ m_downloadManagerDelegate.reset();
+ }
BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices(m_browserContext.data());
}
@@ -177,6 +185,8 @@ void BrowserContextAdapter::addClient(BrowserContextAdapterClient *adapterClient
void BrowserContextAdapter::removeClient(BrowserContextAdapterClient *adapterClient)
{
m_clients.removeOne(adapterClient);
+ if (m_clients.isEmpty() && this != WebEngineContext::current()->m_defaultBrowserContext.data())
+ shutdown();
}
void BrowserContextAdapter::cancelDownload(quint32 downloadId)