diff options
Diffstat (limited to 'chromium/chrome/common/initialize_extensions_client.cc')
-rw-r--r-- | chromium/chrome/common/initialize_extensions_client.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/chromium/chrome/common/initialize_extensions_client.cc b/chromium/chrome/common/initialize_extensions_client.cc new file mode 100644 index 00000000000..3e9d4cf1f1b --- /dev/null +++ b/chromium/chrome/common/initialize_extensions_client.cc @@ -0,0 +1,33 @@ +// Copyright 2018 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/common/initialize_extensions_client.h" + +#include <memory> + +#include "base/no_destructor.h" +#include "chrome/common/apps/platform_apps/chrome_apps_api_provider.h" +#include "chrome/common/extensions/chrome_extensions_client.h" +#include "extensions/common/extensions_client.h" + +void EnsureExtensionsClientInitialized() { + static bool initialized = false; + + static base::NoDestructor<extensions::ChromeExtensionsClient> + extensions_client; + + if (!initialized) { + initialized = true; + extensions_client->AddAPIProvider( + std::make_unique<chrome_apps::ChromeAppsAPIProvider>()); + extensions::ExtensionsClient::Set(extensions_client.get()); + } + + // ExtensionsClient::Set() will early-out if the client was already set, so + // this allows us to check that this was the only site setting it. + DCHECK_EQ(extensions_client.get(), extensions::ExtensionsClient::Get()) + << "ExtensionsClient should only be initialized through " + << "EnsureExtensionsClientInitialized() when using " + << "ChromeExtensionsClient."; +} |