summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/signin/identity_manager_provider.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/signin/identity_manager_provider.cc')
-rw-r--r--chromium/chrome/browser/signin/identity_manager_provider.cc38
1 files changed, 38 insertions, 0 deletions
diff --git a/chromium/chrome/browser/signin/identity_manager_provider.cc b/chromium/chrome/browser/signin/identity_manager_provider.cc
new file mode 100644
index 00000000000..ca42e587adf
--- /dev/null
+++ b/chromium/chrome/browser/signin/identity_manager_provider.cc
@@ -0,0 +1,38 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/signin/identity_manager_provider.h"
+
+#include "base/check.h"
+#include "base/no_destructor.h"
+
+namespace signin {
+
+namespace {
+
+IdentityManagerProvider& GetIdentityManagerProvider() {
+ static base::NoDestructor<IdentityManagerProvider> provider;
+ return *provider;
+}
+
+} // namespace
+
+void SetIdentityManagerProvider(const IdentityManagerProvider& provider) {
+ IdentityManagerProvider& instance = GetIdentityManagerProvider();
+
+ // Exactly one of `provider` or `instance` should be non-null.
+ if (provider)
+ DCHECK(!instance);
+ else
+ DCHECK(instance);
+
+ instance = provider;
+}
+
+IdentityManager* GetIdentityManagerForBrowserContext(
+ content::BrowserContext* context) {
+ return GetIdentityManagerProvider().Run(context);
+}
+
+} // namespace signin