Commit 60673b43 authored by juncai's avatar juncai Committed by Commit bot

Extract ErrorConsole from ExtensionSystem.

This patch removes error_console accessor from ExtensionSystem.
It can be its own browser context keyed service. And it can be
built by its new factory.

BUG=

Review URL: https://codereview.chromium.org/1139643005

Cr-Commit-Position: refs/heads/master@{#329480}
parent b765e2ad
......@@ -60,7 +60,7 @@ void ChromeExtensionWebContentsObserver::OnDetailedConsoleMessageAdded(
if (extension_id.empty())
extension_id = GURL(source).host();
ExtensionSystem::Get(browser_context())->error_console()->ReportError(
ErrorConsole::Get(browser_context())->ReportError(
scoped_ptr<ExtensionError>(
new RuntimeError(extension_id,
browser_context()->IsOffTheRecord(),
......
......@@ -13,6 +13,7 @@
#include "base/stl_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/error_console/error_console_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_version_info.h"
#include "chrome/common/extensions/features/feature_channel.h"
......@@ -78,7 +79,7 @@ ErrorConsole::~ErrorConsole() {
// static
ErrorConsole* ErrorConsole::Get(content::BrowserContext* browser_context) {
return ExtensionSystem::Get(browser_context)->error_console();
return ErrorConsoleFactory::GetForBrowserContext(browser_context);
}
void ErrorConsole::SetReportingForExtension(const std::string& extension_id,
......
......@@ -10,6 +10,7 @@
#include "base/prefs/pref_change_registrar.h"
#include "base/scoped_observer.h"
#include "base/threading/thread_checker.h"
#include "components/keyed_service/core/keyed_service.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "extensions/browser/error_map.h"
......@@ -36,7 +37,8 @@ class ExtensionRegistry;
// errors can be viewed at chrome://extensions in developer mode.
// This class is owned by ExtensionSystem, making it, in effect, a
// BrowserContext-keyed service.
class ErrorConsole : public content::NotificationObserver,
class ErrorConsole : public KeyedService,
public content::NotificationObserver,
public ExtensionRegistryObserver {
public:
class Observer {
......
// Copyright 2015 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/extensions/error_console/error_console_factory.h"
#include "chrome/browser/extensions/error_console/error_console.h"
#include "chrome/browser/profiles/profile.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "extensions/browser/extension_registry_factory.h"
#include "extensions/browser/extensions_browser_client.h"
using content::BrowserContext;
namespace extensions {
// static
ErrorConsole* ErrorConsoleFactory::GetForBrowserContext(
BrowserContext* context) {
return static_cast<ErrorConsole*>(
GetInstance()->GetServiceForBrowserContext(context, true));
}
// static
ErrorConsoleFactory* ErrorConsoleFactory::GetInstance() {
return Singleton<ErrorConsoleFactory>::get();
}
ErrorConsoleFactory::ErrorConsoleFactory()
: BrowserContextKeyedServiceFactory(
"ErrorConsole",
BrowserContextDependencyManager::GetInstance()) {
DependsOn(ExtensionRegistryFactory::GetInstance());
}
ErrorConsoleFactory::~ErrorConsoleFactory() {
}
KeyedService* ErrorConsoleFactory::BuildServiceInstanceFor(
BrowserContext* context) const {
return new ErrorConsole(Profile::FromBrowserContext(context));
}
BrowserContext* ErrorConsoleFactory::GetBrowserContextToUse(
BrowserContext* context) const {
// Redirected in incognito.
return ExtensionsBrowserClient::Get()->GetOriginalContext(context);
}
} // namespace extensions
// Copyright 2015 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_BROWSER_EXTENSIONS_ERROR_CONSOLE_ERROR_CONSOLE_FACTORY_H_
#define CHROME_BROWSER_EXTENSIONS_ERROR_CONSOLE_ERROR_CONSOLE_FACTORY_H_
#include "base/memory/singleton.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
namespace extensions {
class ErrorConsole;
class ErrorConsoleFactory : public BrowserContextKeyedServiceFactory {
public:
static ErrorConsole* GetForBrowserContext(content::BrowserContext* context);
static ErrorConsoleFactory* GetInstance();
private:
friend struct DefaultSingletonTraits<ErrorConsoleFactory>;
ErrorConsoleFactory();
~ErrorConsoleFactory() override;
// BrowserContextKeyedServiceFactory implementation
KeyedService* BuildServiceInstanceFor(
content::BrowserContext* context) const override;
content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override;
DISALLOW_COPY_AND_ASSIGN(ErrorConsoleFactory);
};
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_ERROR_CONSOLE_ERROR_CONSOLE_FACTORY_H_
......@@ -17,7 +17,6 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/cookie_settings.h"
#include "chrome/browser/extensions/component_loader.h"
#include "chrome/browser/extensions/error_console/error_console.h"
#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_management.h"
#include "chrome/browser/extensions/extension_service.h"
......@@ -378,7 +377,6 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
// Make the chrome://extension-icon/ resource available.
content::URLDataSource::Add(profile_, new ExtensionIconSource(profile_));
error_console_.reset(new ErrorConsole(profile_));
quota_service_.reset(new QuotaService);
if (extensions_enabled) {
......@@ -452,10 +450,6 @@ EventRouter* ExtensionSystemImpl::Shared::event_router() {
return event_router_.get();
}
ErrorConsole* ExtensionSystemImpl::Shared::error_console() {
return error_console_.get();
}
InstallVerifier* ExtensionSystemImpl::Shared::install_verifier() {
return install_verifier_.get();
}
......@@ -541,10 +535,6 @@ const OneShotEvent& ExtensionSystemImpl::ready() const {
return shared_->ready();
}
ErrorConsole* ExtensionSystemImpl::error_console() {
return shared_->error_console();
}
InstallVerifier* ExtensionSystemImpl::install_verifier() {
return shared_->install_verifier();
}
......
......@@ -46,7 +46,6 @@ class ExtensionSystemImpl : public ExtensionSystem {
LazyBackgroundTaskQueue* lazy_background_task_queue() override; // shared
InfoMap* info_map() override; // shared
EventRouter* event_router() override; // shared
ErrorConsole* error_console() override;
InstallVerifier* install_verifier() override;
QuotaService* quota_service() override; // shared
......@@ -91,7 +90,6 @@ class ExtensionSystemImpl : public ExtensionSystem {
InfoMap* info_map();
LazyBackgroundTaskQueue* lazy_background_task_queue();
EventRouter* event_router();
ErrorConsole* error_console();
InstallVerifier* install_verifier();
QuotaService* quota_service();
const OneShotEvent& ready() const { return ready_; }
......@@ -123,7 +121,6 @@ class ExtensionSystemImpl : public ExtensionSystem {
scoped_ptr<ManagementPolicy> management_policy_;
// extension_info_map_ needs to outlive process_manager_.
scoped_refptr<InfoMap> extension_info_map_;
scoped_ptr<ErrorConsole> error_console_;
scoped_ptr<InstallVerifier> install_verifier_;
scoped_ptr<QuotaService> quota_service_;
......
......@@ -7,7 +7,6 @@
#include "base/command_line.h"
#include "base/prefs/pref_service.h"
#include "chrome/browser/extensions/blacklist.h"
#include "chrome/browser/extensions/error_console/error_console.h"
#include "chrome/browser/extensions/extension_management.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/install_verifier.h"
......@@ -40,7 +39,6 @@ TestExtensionSystem::TestExtensionSystem(Profile* profile)
: profile_(profile),
value_store_(NULL),
info_map_(new InfoMap()),
error_console_(new ErrorConsole(profile)),
quota_service_(new QuotaService()) {}
TestExtensionSystem::~TestExtensionSystem() {
......@@ -157,10 +155,6 @@ void TestExtensionSystem::SetEventRouter(scoped_ptr<EventRouter> event_router) {
EventRouter* TestExtensionSystem::event_router() { return event_router_.get(); }
ErrorConsole* TestExtensionSystem::error_console() {
return error_console_.get();
}
InstallVerifier* TestExtensionSystem::install_verifier() {
return install_verifier_.get();
}
......
......@@ -71,7 +71,6 @@ class TestExtensionSystem : public ExtensionSystem {
LazyBackgroundTaskQueue* lazy_background_task_queue() override;
void SetEventRouter(scoped_ptr<EventRouter> event_router);
EventRouter* event_router() override;
ErrorConsole* error_console() override;
InstallVerifier* install_verifier() override;
QuotaService* quota_service() override;
const OneShotEvent& ready() const override;
......@@ -100,7 +99,6 @@ class TestExtensionSystem : public ExtensionSystem {
scoped_refptr<InfoMap> info_map_;
scoped_ptr<LazyBackgroundTaskQueue> lazy_background_task_queue_;
scoped_ptr<EventRouter> event_router_;
scoped_ptr<ErrorConsole> error_console_;
scoped_ptr<InstallVerifier> install_verifier_;
scoped_ptr<QuotaService> quota_service_;
OneShotEvent ready_;
......
......@@ -584,6 +584,8 @@
'browser/extensions/display_info_provider_win.h',
'browser/extensions/error_console/error_console.cc',
'browser/extensions/error_console/error_console.h',
'browser/extensions/error_console/error_console_factory.cc',
'browser/extensions/error_console/error_console_factory.h',
'browser/extensions/event_router_forwarder.cc',
'browser/extensions/event_router_forwarder.h',
'browser/extensions/extension_action.cc',
......
......@@ -31,7 +31,6 @@ namespace extensions {
class ContentVerifier;
class DeclarativeUserScriptManager;
class ErrorConsole;
class EventRouter;
class Extension;
class ExtensionSet;
......@@ -95,9 +94,6 @@ class ExtensionSystem : public KeyedService {
// The EventRouter is created at startup.
virtual EventRouter* event_router() = 0;
// The ErrorConsole is created at startup.
virtual ErrorConsole* error_console() = 0;
// The InstallVerifier is created at startup.
virtual InstallVerifier* install_verifier() = 0;
......
......@@ -59,10 +59,6 @@ EventRouter* MockExtensionSystem::event_router() {
return event_router_;
}
ErrorConsole* MockExtensionSystem::error_console() {
return nullptr;
}
InstallVerifier* MockExtensionSystem::install_verifier() {
return nullptr;
}
......
......@@ -39,7 +39,6 @@ class MockExtensionSystem : public ExtensionSystem {
InfoMap* info_map() override;
LazyBackgroundTaskQueue* lazy_background_task_queue() override;
EventRouter* event_router() override;
ErrorConsole* error_console() override;
InstallVerifier* install_verifier() override;
QuotaService* quota_service() override;
const OneShotEvent& ready() const override;
......
......@@ -148,10 +148,6 @@ EventRouter* ShellExtensionSystem::event_router() {
return event_router_.get();
}
ErrorConsole* ShellExtensionSystem::error_console() {
return nullptr;
}
InstallVerifier* ShellExtensionSystem::install_verifier() {
return nullptr;
}
......
......@@ -63,7 +63,6 @@ class ShellExtensionSystem : public ExtensionSystem {
InfoMap* info_map() override;
LazyBackgroundTaskQueue* lazy_background_task_queue() override;
EventRouter* event_router() override;
ErrorConsole* error_console() override;
InstallVerifier* install_verifier() override;
QuotaService* quota_service() override;
void RegisterExtensionWithRequestContexts(
......
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