Adopt base::NoDestructor for KeyedService factories
For changes under /chrome/browser/sharing
It replaces base::Singleton, following the latest recommendation
in base/ and browser_context_keyed_service_factory.h.
For factories with a trivial destructor, it makes no difference.
LSC doc:
https://docs.google.com/document/d/1x1LqRQyfBOmpMkNQBYs7QBPSxLtuiImvmgcJYI_kaS4/edit?usp=sharing
This CL was uploaded by git cl split.
R=peter@chromium.org
Bug: 925323
Change-Id: Id067fbf01dcf8047a6ad2d3dc0535257ab4978bd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4570552
Auto-Submit: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Peter Beverloo <peter@chromium.org>
Reviewed-by: Peter Beverloo <peter@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1151243}
diff --git a/chrome/browser/sharing/sharing_message_bridge_factory.cc b/chrome/browser/sharing/sharing_message_bridge_factory.cc
index 74e5ebf0b..9aca7f1a 100644
--- a/chrome/browser/sharing/sharing_message_bridge_factory.cc
+++ b/chrome/browser/sharing/sharing_message_bridge_factory.cc
@@ -5,7 +5,7 @@
#include "chrome/browser/sharing/sharing_message_bridge_factory.h"
#include "chrome/browser/sharing/sharing_message_bridge_impl.h"
-#include "base/memory/singleton.h"
+#include "base/no_destructor.h"
#include "chrome/common/channel_info.h"
#include "components/sync/base/report_unrecoverable_error.h"
#include "components/sync/model/client_tag_based_model_type_processor.h"
@@ -28,7 +28,8 @@
// static
SharingMessageBridgeFactory* SharingMessageBridgeFactory::GetInstance() {
- return base::Singleton<SharingMessageBridgeFactory>::get();
+ static base::NoDestructor<SharingMessageBridgeFactory> instance;
+ return instance.get();
}
// static
diff --git a/chrome/browser/sharing/sharing_message_bridge_factory.h b/chrome/browser/sharing/sharing_message_bridge_factory.h
index 6e7a962..d6173e7d 100644
--- a/chrome/browser/sharing/sharing_message_bridge_factory.h
+++ b/chrome/browser/sharing/sharing_message_bridge_factory.h
@@ -9,7 +9,7 @@
namespace base {
template <typename T>
-struct DefaultSingletonTraits;
+class NoDestructor;
} // namespace base
class SharingMessageBridge;
@@ -26,7 +26,7 @@
content::BrowserContext* context);
private:
- friend struct base::DefaultSingletonTraits<SharingMessageBridgeFactory>;
+ friend base::NoDestructor<SharingMessageBridgeFactory>;
SharingMessageBridgeFactory();
~SharingMessageBridgeFactory() override;
diff --git a/chrome/browser/sharing/sharing_service_factory.cc b/chrome/browser/sharing/sharing_service_factory.cc
index d41db126..b5142370 100644
--- a/chrome/browser/sharing/sharing_service_factory.cc
+++ b/chrome/browser/sharing/sharing_service_factory.cc
@@ -6,7 +6,7 @@
#include <memory>
-#include "base/memory/singleton.h"
+#include "base/no_destructor.h"
#include "build/build_config.h"
#include "chrome/browser/gcm/gcm_profile_service_factory.h"
#include "chrome/browser/gcm/instance_id/instance_id_profile_service_factory.h"
@@ -60,7 +60,8 @@
// static
SharingServiceFactory* SharingServiceFactory::GetInstance() {
- return base::Singleton<SharingServiceFactory>::get();
+ static base::NoDestructor<SharingServiceFactory> instance;
+ return instance.get();
}
// static
diff --git a/chrome/browser/sharing/sharing_service_factory.h b/chrome/browser/sharing/sharing_service_factory.h
index f687ea54..5a210bbd 100644
--- a/chrome/browser/sharing/sharing_service_factory.h
+++ b/chrome/browser/sharing/sharing_service_factory.h
@@ -9,7 +9,7 @@
namespace base {
template <typename T>
-struct DefaultSingletonTraits;
+class NoDestructor;
} // namespace base
namespace content {
@@ -31,7 +31,7 @@
SharingServiceFactory& operator=(const SharingServiceFactory&) = delete;
private:
- friend struct base::DefaultSingletonTraits<SharingServiceFactory>;
+ friend base::NoDestructor<SharingServiceFactory>;
SharingServiceFactory();
~SharingServiceFactory() override;