Commit a5c5032d authored by Matt Falkenhagen's avatar Matt Falkenhagen Committed by Commit Bot

Use NoDestructor for ServiceWorkerDevToolsManager instead of Singleton.

In a WIP patch changing sevice worker unit tests, I somtimes get crashes
on test exit because ServiceWorkerDevToolsManager is accessed on a
thread that doesn't exist (I'm guessing the UI thread has been torn
down).  I think the manager singleton gets destructed which causes hosts
to try to access the manager instance.

The problem seems to go away by changing from Singleton to NoDestructor.
NoDestructor is preferred anyway as documented in singleton.h.

Change-Id: I70eb6435ed7eea1362e115488ae4999dedcba387
Reviewed-on: https://chromium-review.googlesource.com/c/1457883
Auto-Submit: Matt Falkenhagen <falken@chromium.org>
Commit-Queue: Dmitry Gozman <dgozman@chromium.org>
Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#629994}
parent ee113787
......@@ -16,7 +16,8 @@ namespace content {
// static
ServiceWorkerDevToolsManager* ServiceWorkerDevToolsManager::GetInstance() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
return base::Singleton<ServiceWorkerDevToolsManager>::get();
static base::NoDestructor<ServiceWorkerDevToolsManager> instance;
return &*instance;
}
ServiceWorkerDevToolsAgentHost*
......
......@@ -11,8 +11,8 @@
#include "base/containers/flat_set.h"
#include "base/macros.h"
#include "base/memory/singleton.h"
#include "base/memory/weak_ptr.h"
#include "base/no_destructor.h"
#include "base/observer_list.h"
#include "base/unguessable_token.h"
#include "content/common/content_export.h"
......@@ -102,7 +102,7 @@ class CONTENT_EXPORT ServiceWorkerDevToolsManager {
void AgentHostDestroyed(ServiceWorkerDevToolsAgentHost* agent_host);
private:
friend struct base::DefaultSingletonTraits<ServiceWorkerDevToolsManager>;
friend class base::NoDestructor<ServiceWorkerDevToolsManager>;
friend class ServiceWorkerDevToolsAgentHost;
using WorkerId = std::pair<int, int>;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment