Commit fe045298 authored by Devlin's avatar Devlin Committed by Commit Bot

Revert "[Extensions] Introduce common client initialization"

This reverts commit f41f215c.

Reason for revert: Checking to see if this was the cause of flakiness in a test.

Original change's description:
> [Extensions] Introduce common client initialization
> 
> In order to extract apps-specific code from extensions, we'll need to
> be able to add extra information to the extensions client from outside
> extensions code. This will require having a centralized initialization
> for the extensions client.
> 
> Introduce a single method, EnsureExtensionsClientInitialized(), which
> constructs and sets the ChromeExtensionsClient. Remove the old way of
> constructing the client, ChromeExtensionsClient::GetInstance(). Update
> all callers to construct the client via the new method.
> 
> While we're at it, update the client to use base::NoDestructor instead
> of LazyInstance.
> 
> Bug: 873937
> Change-Id: I47147cd5f33ea44079c0a319626c57f3c5813af8
> Reviewed-on: https://chromium-review.googlesource.com/1175459
> Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
> Reviewed-by: Lei Zhang <thestig@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#583217}

TBR=thestig@chromium.org,rdevlin.cronin@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 873937
Change-Id: I750a4cde4d76054fc82f91bac8e63413f9599b9e
Reviewed-on: https://chromium-review.googlesource.com/1179347Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#584221}
parent 6ff108b6
...@@ -171,7 +171,6 @@ ...@@ -171,7 +171,6 @@
#include "chrome/browser/extensions/event_router_forwarder.h" #include "chrome/browser/extensions/event_router_forwarder.h"
#include "chrome/browser/media_galleries/media_file_system_registry.h" #include "chrome/browser/media_galleries/media_file_system_registry.h"
#include "chrome/browser/ui/apps/chrome_app_window_client.h" #include "chrome/browser/ui/apps/chrome_app_window_client.h"
#include "chrome/common/initialize_extensions_client.h"
#include "components/storage_monitor/storage_monitor.h" #include "components/storage_monitor/storage_monitor.h"
#include "extensions/common/extension_l10n_util.h" #include "extensions/common/extension_l10n_util.h"
#endif #endif
...@@ -260,7 +259,8 @@ void BrowserProcessImpl::Init() { ...@@ -260,7 +259,8 @@ void BrowserProcessImpl::Init() {
extension_event_router_forwarder_ = extension_event_router_forwarder_ =
base::MakeRefCounted<extensions::EventRouterForwarder>(); base::MakeRefCounted<extensions::EventRouterForwarder>();
EnsureExtensionsClientInitialized(); extensions::ExtensionsClient::Set(
extensions::ChromeExtensionsClient::GetInstance());
extensions_browser_client_ = extensions_browser_client_ =
std::make_unique<extensions::ChromeExtensionsBrowserClient>(); std::make_unique<extensions::ChromeExtensionsBrowserClient>();
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/task/post_task.h" #include "base/task/post_task.h"
#include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_switches.h"
#include "chrome/common/initialize_extensions_client.h" #include "chrome/common/extensions/chrome_extensions_client.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/common/service_manager_connection.h" #include "content/public/common/service_manager_connection.h"
#include "extensions/browser/extension_file_task_runner.h" #include "extensions/browser/extension_file_task_runner.h"
...@@ -35,7 +35,7 @@ void PrintPackExtensionMessage(const std::string& message) { ...@@ -35,7 +35,7 @@ void PrintPackExtensionMessage(const std::string& message) {
} // namespace } // namespace
StartupHelper::StartupHelper() : pack_job_succeeded_(false) { StartupHelper::StartupHelper() : pack_job_succeeded_(false) {
EnsureExtensionsClientInitialized(); ExtensionsClient::Set(ChromeExtensionsClient::GetInstance());
} }
void StartupHelper::OnPackSuccess( void StartupHelper::OnPackSuccess(
......
...@@ -369,8 +369,6 @@ static_library("common") { ...@@ -369,8 +369,6 @@ static_library("common") {
"extensions/sync_helper.h", "extensions/sync_helper.h",
"extensions/webstore_install_result.cc", "extensions/webstore_install_result.cc",
"extensions/webstore_install_result.h", "extensions/webstore_install_result.h",
"initialize_extensions_client.cc",
"initialize_extensions_client.h",
] ]
public_deps += [ public_deps += [
"//chrome/common/extensions:mojo_bindings", "//chrome/common/extensions:mojo_bindings",
......
...@@ -96,6 +96,9 @@ ChromeChannelForHistogram GetChromeChannelForHistogram( ...@@ -96,6 +96,9 @@ ChromeChannelForHistogram GetChromeChannelForHistogram(
} // namespace } // namespace
static base::LazyInstance<ChromeExtensionsClient>::Leaky g_client =
LAZY_INSTANCE_INITIALIZER;
ChromeExtensionsClient::ChromeExtensionsClient() {} ChromeExtensionsClient::ChromeExtensionsClient() {}
ChromeExtensionsClient::~ChromeExtensionsClient() { ChromeExtensionsClient::~ChromeExtensionsClient() {
...@@ -342,4 +345,9 @@ std::string ChromeExtensionsClient::GetUserAgent() const { ...@@ -342,4 +345,9 @@ std::string ChromeExtensionsClient::GetUserAgent() const {
return ::GetUserAgent(); return ::GetUserAgent();
} }
// static
ChromeExtensionsClient* ChromeExtensionsClient::GetInstance() {
return g_client.Pointer();
}
} // namespace extensions } // namespace extensions
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <memory> #include <memory>
#include "base/compiler_specific.h" #include "base/compiler_specific.h"
#include "base/lazy_instance.h"
#include "base/macros.h" #include "base/macros.h"
#include "chrome/common/extensions/permissions/chrome_api_permissions.h" #include "chrome/common/extensions/permissions/chrome_api_permissions.h"
#include "chrome/common/extensions/permissions/chrome_permission_message_provider.h" #include "chrome/common/extensions/permissions/chrome_permission_message_provider.h"
...@@ -56,6 +57,9 @@ class ChromeExtensionsClient : public ExtensionsClient { ...@@ -56,6 +57,9 @@ class ChromeExtensionsClient : public ExtensionsClient {
bool ExtensionAPIEnabledInExtensionServiceWorkers() const override; bool ExtensionAPIEnabledInExtensionServiceWorkers() const override;
std::string GetUserAgent() const override; std::string GetUserAgent() const override;
// Get the LazyInstance for ChromeExtensionsClient.
static ChromeExtensionsClient* GetInstance();
private: private:
const ChromeAPIPermissions chrome_api_permissions_; const ChromeAPIPermissions chrome_api_permissions_;
const ExtensionsAPIPermissions extensions_api_permissions_; const ExtensionsAPIPermissions extensions_api_permissions_;
...@@ -70,6 +74,8 @@ class ChromeExtensionsClient : public ExtensionsClient { ...@@ -70,6 +74,8 @@ class ChromeExtensionsClient : public ExtensionsClient {
GURL webstore_base_url_; GURL webstore_base_url_;
GURL webstore_update_url_; GURL webstore_update_url_;
friend struct base::LazyInstanceTraitsBase<ChromeExtensionsClient>;
DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsClient); DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsClient);
}; };
......
// 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 "base/no_destructor.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::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.";
}
// 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.
#ifndef CHROME_COMMON_INITIALIZE_EXTENSIONS_CLIENT_H_
#define CHROME_COMMON_INITIALIZE_EXTENSIONS_CLIENT_H_
#include "extensions/buildflags/buildflags.h"
#if !BUILDFLAG(ENABLE_EXTENSIONS)
#error "Extensions must be enabled"
#endif
// Initializes the single instance of the ExtensionsClient. Safe to call
// multiple times.
void EnsureExtensionsClientInitialized();
#endif // CHROME_COMMON_INITIALIZE_EXTENSIONS_CLIENT_H_
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
#endif #endif
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
#include "chrome/common/initialize_extensions_client.h" #include "chrome/common/extensions/chrome_extensions_client.h"
#include "chrome/renderer/extensions/chrome_extensions_renderer_client.h" #include "chrome/renderer/extensions/chrome_extensions_renderer_client.h"
#include "extensions/common/constants.h" #include "extensions/common/constants.h"
#include "extensions/common/extension_urls.h" #include "extensions/common/extension_urls.h"
...@@ -353,7 +353,8 @@ ChromeContentRendererClient::ChromeContentRendererClient() ...@@ -353,7 +353,8 @@ ChromeContentRendererClient::ChromeContentRendererClient()
: main_entry_time_(base::TimeTicks::Now()), : main_entry_time_(base::TimeTicks::Now()),
main_thread_profiler_(ThreadProfiler::CreateAndStartOnMainThread()) { main_thread_profiler_(ThreadProfiler::CreateAndStartOnMainThread()) {
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
EnsureExtensionsClientInitialized(); extensions::ExtensionsClient::Set(
extensions::ChromeExtensionsClient::GetInstance());
extensions::ExtensionsRendererClient::Set( extensions::ExtensionsRendererClient::Set(
ChromeExtensionsRendererClient::GetInstance()); ChromeExtensionsRendererClient::GetInstance());
#endif #endif
......
...@@ -35,9 +35,8 @@ ...@@ -35,9 +35,8 @@
#endif #endif
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
#include "chrome/common/initialize_extensions_client.h" #include "chrome/common/extensions/chrome_extensions_client.h"
#include "extensions/common/extension_paths.h" #include "extensions/common/extension_paths.h"
#include "extensions/common/extensions_client.h"
#endif #endif
namespace { namespace {
...@@ -51,6 +50,11 @@ class ChromeUnitTestSuiteInitializer : public testing::EmptyTestEventListener { ...@@ -51,6 +50,11 @@ class ChromeUnitTestSuiteInitializer : public testing::EmptyTestEventListener {
void OnTestStart(const testing::TestInfo& test_info) override { void OnTestStart(const testing::TestInfo& test_info) override {
content_client_.reset(new ChromeContentClient); content_client_.reset(new ChromeContentClient);
content::SetContentClient(content_client_.get()); content::SetContentClient(content_client_.get());
#if BUILDFLAG(ENABLE_EXTENSIONS)
extensions::ExtensionsClient::Get()->InitializeWebStoreUrls(
base::CommandLine::ForCurrentProcess());
#endif
browser_content_client_.reset(new ChromeContentBrowserClient()); browser_content_client_.reset(new ChromeContentBrowserClient());
content::SetBrowserClientForTesting(browser_content_client_.get()); content::SetBrowserClientForTesting(browser_content_client_.get());
...@@ -131,7 +135,8 @@ void ChromeUnitTestSuite::InitializeProviders() { ...@@ -131,7 +135,8 @@ void ChromeUnitTestSuite::InitializeProviders() {
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
extensions::RegisterPathProvider(); extensions::RegisterPathProvider();
EnsureExtensionsClientInitialized(); extensions::ExtensionsClient::Set(
extensions::ChromeExtensionsClient::GetInstance());
#endif #endif
content::WebUIControllerFactory::RegisterFactory( content::WebUIControllerFactory::RegisterFactory(
......
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