Commit 07ea5387 authored by juncai's avatar juncai Committed by Commit bot

Extract LazyBackgroundTaskQueue from ExtensionSystem.

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

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

Cr-Commit-Position: refs/heads/master@{#330815}
parent fc092256
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include "extensions/browser/extension_host.h" #include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/granted_file_entry.h" #include "extensions/browser/granted_file_entry.h"
#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_background_task_queue.h"
#include "extensions/browser/process_manager.h" #include "extensions/browser/process_manager.h"
...@@ -56,7 +55,6 @@ using extensions::app_file_handler_util::PrepareFilesForWritableApp; ...@@ -56,7 +55,6 @@ using extensions::app_file_handler_util::PrepareFilesForWritableApp;
using extensions::EventRouter; using extensions::EventRouter;
using extensions::Extension; using extensions::Extension;
using extensions::ExtensionHost; using extensions::ExtensionHost;
using extensions::ExtensionSystem;
using extensions::GrantedFileEntry; using extensions::GrantedFileEntry;
namespace apps { namespace apps {
...@@ -261,7 +259,7 @@ class PlatformAppPathLauncher ...@@ -261,7 +259,7 @@ class PlatformAppPathLauncher
// the lazy background task queue is used to load the extension and then // the lazy background task queue is used to load the extension and then
// call back to us. // call back to us.
extensions::LazyBackgroundTaskQueue* const queue = extensions::LazyBackgroundTaskQueue* const queue =
ExtensionSystem::Get(profile_)->lazy_background_task_queue(); extensions::LazyBackgroundTaskQueue::Get(profile_);
if (queue->ShouldEnqueueTask(profile_, extension)) { if (queue->ShouldEnqueueTask(profile_, extension)) {
queue->AddPendingTask( queue->AddPendingTask(
profile_, extension_id, profile_, extension_id,
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include "extensions/browser/event_router.h" #include "extensions/browser/event_router.h"
#include "extensions/browser/extension_host.h" #include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/extension_util.h" #include "extensions/browser/extension_util.h"
#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_background_task_queue.h"
#include "extensions/common/extension_set.h" #include "extensions/common/extension_set.h"
...@@ -349,8 +348,7 @@ void FileBrowserHandlerExecutor::ExecuteFileActionsOnUIThread( ...@@ -349,8 +348,7 @@ void FileBrowserHandlerExecutor::ExecuteFileActionsOnUIThread(
} else { } else {
// We have to wake the handler background page before we proceed. // We have to wake the handler background page before we proceed.
extensions::LazyBackgroundTaskQueue* queue = extensions::LazyBackgroundTaskQueue* queue =
extensions::ExtensionSystem::Get(profile_)-> extensions::LazyBackgroundTaskQueue::Get(profile_);
lazy_background_task_queue();
if (!queue->ShouldEnqueueTask(profile_, extension_.get())) { if (!queue->ShouldEnqueueTask(profile_, extension_.get())) {
ExecuteDoneOnUIThread(false); ExecuteDoneOnUIThread(false);
return; return;
......
...@@ -218,7 +218,7 @@ void MessageService::AllocatePortIdPair(int* port1, int* port2) { ...@@ -218,7 +218,7 @@ void MessageService::AllocatePortIdPair(int* port1, int* port2) {
MessageService::MessageService(BrowserContext* context) MessageService::MessageService(BrowserContext* context)
: lazy_background_task_queue_( : lazy_background_task_queue_(
ExtensionSystem::Get(context)->lazy_background_task_queue()), LazyBackgroundTaskQueue::Get(context)),
weak_factory_(this) { weak_factory_(this) {
registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED,
content::NotificationService::AllBrowserContextsAndSources()); content::NotificationService::AllBrowserContextsAndSources());
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "chrome/browser/devtools/devtools_window.h" #include "chrome/browser/devtools/devtools_window.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "extensions/browser/extension_host.h" #include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_background_task_queue.h"
#include "extensions/browser/process_manager.h" #include "extensions/browser/process_manager.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
...@@ -27,13 +26,12 @@ void InspectExtensionHost(ExtensionHost* host) { ...@@ -27,13 +26,12 @@ void InspectExtensionHost(ExtensionHost* host) {
void InspectBackgroundPage(const Extension* extension, Profile* profile) { void InspectBackgroundPage(const Extension* extension, Profile* profile) {
DCHECK(extension); DCHECK(extension);
ExtensionSystem* system = ExtensionSystem::Get(profile);
ExtensionHost* host = ProcessManager::Get(profile) ExtensionHost* host = ProcessManager::Get(profile)
->GetBackgroundHostForExtension(extension->id()); ->GetBackgroundHostForExtension(extension->id());
if (host) { if (host) {
InspectExtensionHost(host); InspectExtensionHost(host);
} else { } else {
system->lazy_background_task_queue()->AddPendingTask( LazyBackgroundTaskQueue::Get(profile)->AddPendingTask(
profile, profile,
extension->id(), extension->id(),
base::Bind(&InspectExtensionHost)); base::Bind(&InspectExtensionHost));
......
...@@ -99,7 +99,6 @@ ExtensionSystemImpl::Shared::~Shared() { ...@@ -99,7 +99,6 @@ ExtensionSystemImpl::Shared::~Shared() {
} }
void ExtensionSystemImpl::Shared::InitPrefs() { void ExtensionSystemImpl::Shared::InitPrefs() {
lazy_background_task_queue_.reset(new LazyBackgroundTaskQueue(profile_));
event_router_.reset(new EventRouter(profile_, ExtensionPrefs::Get(profile_))); event_router_.reset(new EventRouter(profile_, ExtensionPrefs::Get(profile_)));
// Two state stores. The latter, which contains declarative rules, must be // Two state stores. The latter, which contains declarative rules, must be
// loaded immediately so that the rules are ready before we issue network // loaded immediately so that the rules are ready before we issue network
...@@ -431,11 +430,6 @@ InfoMap* ExtensionSystemImpl::Shared::info_map() { ...@@ -431,11 +430,6 @@ InfoMap* ExtensionSystemImpl::Shared::info_map() {
return extension_info_map_.get(); return extension_info_map_.get();
} }
LazyBackgroundTaskQueue*
ExtensionSystemImpl::Shared::lazy_background_task_queue() {
return lazy_background_task_queue_.get();
}
EventRouter* ExtensionSystemImpl::Shared::event_router() { EventRouter* ExtensionSystemImpl::Shared::event_router() {
return event_router_.get(); return event_router_.get();
} }
...@@ -504,10 +498,6 @@ StateStore* ExtensionSystemImpl::rules_store() { ...@@ -504,10 +498,6 @@ StateStore* ExtensionSystemImpl::rules_store() {
InfoMap* ExtensionSystemImpl::info_map() { return shared_->info_map(); } InfoMap* ExtensionSystemImpl::info_map() { return shared_->info_map(); }
LazyBackgroundTaskQueue* ExtensionSystemImpl::lazy_background_task_queue() {
return shared_->lazy_background_task_queue();
}
EventRouter* ExtensionSystemImpl::event_router() { EventRouter* ExtensionSystemImpl::event_router() {
return shared_->event_router(); return shared_->event_router();
} }
......
...@@ -42,7 +42,6 @@ class ExtensionSystemImpl : public ExtensionSystem { ...@@ -42,7 +42,6 @@ class ExtensionSystemImpl : public ExtensionSystem {
SharedUserScriptMaster* shared_user_script_master() override; // shared SharedUserScriptMaster* shared_user_script_master() override; // shared
StateStore* state_store() override; // shared StateStore* state_store() override; // shared
StateStore* rules_store() override; // shared StateStore* rules_store() override; // shared
LazyBackgroundTaskQueue* lazy_background_task_queue() override; // shared
InfoMap* info_map() override; // shared InfoMap* info_map() override; // shared
EventRouter* event_router() override; // shared EventRouter* event_router() override; // shared
QuotaService* quota_service() override; // shared QuotaService* quota_service() override; // shared
...@@ -85,7 +84,6 @@ class ExtensionSystemImpl : public ExtensionSystem { ...@@ -85,7 +84,6 @@ class ExtensionSystemImpl : public ExtensionSystem {
ManagementPolicy* management_policy(); ManagementPolicy* management_policy();
SharedUserScriptMaster* shared_user_script_master(); SharedUserScriptMaster* shared_user_script_master();
InfoMap* info_map(); InfoMap* info_map();
LazyBackgroundTaskQueue* lazy_background_task_queue();
EventRouter* event_router(); EventRouter* event_router();
QuotaService* quota_service(); QuotaService* quota_service();
const OneShotEvent& ready() const { return ready_; } const OneShotEvent& ready() const { return ready_; }
...@@ -102,7 +100,6 @@ class ExtensionSystemImpl : public ExtensionSystem { ...@@ -102,7 +100,6 @@ class ExtensionSystemImpl : public ExtensionSystem {
scoped_ptr<StateStore> rules_store_; scoped_ptr<StateStore> rules_store_;
// LazyBackgroundTaskQueue is a dependency of // LazyBackgroundTaskQueue is a dependency of
// MessageService and EventRouter. // MessageService and EventRouter.
scoped_ptr<LazyBackgroundTaskQueue> lazy_background_task_queue_;
scoped_ptr<EventRouter> event_router_; scoped_ptr<EventRouter> event_router_;
scoped_ptr<NavigationObserver> navigation_observer_; scoped_ptr<NavigationObserver> navigation_observer_;
// Shared memory region manager for scripts statically declared in extension // Shared memory region manager for scripts statically declared in extension
......
...@@ -48,10 +48,6 @@ void TestExtensionSystem::Shutdown() { ...@@ -48,10 +48,6 @@ void TestExtensionSystem::Shutdown() {
extension_service_->Shutdown(); extension_service_->Shutdown();
} }
void TestExtensionSystem::CreateLazyBackgroundTaskQueue() {
lazy_background_task_queue_.reset(new LazyBackgroundTaskQueue(profile_));
}
ExtensionPrefs* TestExtensionSystem::CreateExtensionPrefs( ExtensionPrefs* TestExtensionSystem::CreateExtensionPrefs(
const base::CommandLine* command_line, const base::CommandLine* command_line,
const base::FilePath& install_directory) { const base::FilePath& install_directory) {
...@@ -134,11 +130,6 @@ StateStore* TestExtensionSystem::rules_store() { ...@@ -134,11 +130,6 @@ StateStore* TestExtensionSystem::rules_store() {
InfoMap* TestExtensionSystem::info_map() { return info_map_.get(); } InfoMap* TestExtensionSystem::info_map() { return info_map_.get(); }
LazyBackgroundTaskQueue*
TestExtensionSystem::lazy_background_task_queue() {
return lazy_background_task_queue_.get();
}
void TestExtensionSystem::SetEventRouter(scoped_ptr<EventRouter> event_router) { void TestExtensionSystem::SetEventRouter(scoped_ptr<EventRouter> event_router) {
event_router_.reset(event_router.release()); event_router_.reset(event_router.release());
} }
......
...@@ -53,10 +53,6 @@ class TestExtensionSystem : public ExtensionSystem { ...@@ -53,10 +53,6 @@ class TestExtensionSystem : public ExtensionSystem {
void CreateSocketManager(); void CreateSocketManager();
// Creates a LazyBackgroundTaskQueue. If not invoked, the
// LazyBackgroundTaskQueue is NULL.
void CreateLazyBackgroundTaskQueue();
void InitForRegularProfile(bool extensions_enabled) override {} void InitForRegularProfile(bool extensions_enabled) override {}
void SetExtensionService(ExtensionService* service); void SetExtensionService(ExtensionService* service);
ExtensionService* extension_service() override; ExtensionService* extension_service() override;
...@@ -67,7 +63,6 @@ class TestExtensionSystem : public ExtensionSystem { ...@@ -67,7 +63,6 @@ class TestExtensionSystem : public ExtensionSystem {
StateStore* rules_store() override; StateStore* rules_store() override;
TestingValueStore* value_store() { return value_store_; } TestingValueStore* value_store() { return value_store_; }
InfoMap* info_map() override; InfoMap* info_map() override;
LazyBackgroundTaskQueue* lazy_background_task_queue() override;
void SetEventRouter(scoped_ptr<EventRouter> event_router); void SetEventRouter(scoped_ptr<EventRouter> event_router);
EventRouter* event_router() override; EventRouter* event_router() override;
QuotaService* quota_service() override; QuotaService* quota_service() override;
...@@ -94,7 +89,6 @@ class TestExtensionSystem : public ExtensionSystem { ...@@ -94,7 +89,6 @@ class TestExtensionSystem : public ExtensionSystem {
scoped_ptr<RuntimeData> runtime_data_; scoped_ptr<RuntimeData> runtime_data_;
scoped_ptr<ExtensionService> extension_service_; scoped_ptr<ExtensionService> extension_service_;
scoped_refptr<InfoMap> info_map_; scoped_refptr<InfoMap> info_map_;
scoped_ptr<LazyBackgroundTaskQueue> lazy_background_task_queue_;
scoped_ptr<EventRouter> event_router_; scoped_ptr<EventRouter> event_router_;
scoped_ptr<QuotaService> quota_service_; scoped_ptr<QuotaService> quota_service_;
OneShotEvent ready_; OneShotEvent ready_;
......
...@@ -299,7 +299,6 @@ class EasyUnlockAppManagerTest : public testing::Test { ...@@ -299,7 +299,6 @@ class EasyUnlockAppManagerTest : public testing::Test {
extension_service_ = test_extension_system->CreateExtensionService( extension_service_ = test_extension_system->CreateExtensionService(
&command_line_, base::FilePath() /* install_directory */, &command_line_, base::FilePath() /* install_directory */,
false /* autoupdate_enabled */); false /* autoupdate_enabled */);
test_extension_system->CreateLazyBackgroundTaskQueue();
extensions::ProcessManagerFactory::GetInstance()->SetTestingFactory( extensions::ProcessManagerFactory::GetInstance()->SetTestingFactory(
&profile_, &CreateTestProcessManager); &profile_, &CreateTestProcessManager);
......
...@@ -95,13 +95,12 @@ void DispatchOnStartupEventImpl(BrowserContext* browser_context, ...@@ -95,13 +95,12 @@ void DispatchOnStartupEventImpl(BrowserContext* browser_context,
extension_id); extension_id);
if (extension && BackgroundInfo::HasPersistentBackgroundPage(extension) && if (extension && BackgroundInfo::HasPersistentBackgroundPage(extension) &&
first_call && first_call &&
system->lazy_background_task_queue()->ShouldEnqueueTask(browser_context, LazyBackgroundTaskQueue::Get(browser_context)
extension)) { ->ShouldEnqueueTask(browser_context, extension)) {
system->lazy_background_task_queue()->AddPendingTask( LazyBackgroundTaskQueue::Get(browser_context)
browser_context, ->AddPendingTask(browser_context, extension_id,
extension_id, base::Bind(&DispatchOnStartupEventImpl,
base::Bind( browser_context, extension_id, false));
&DispatchOnStartupEventImpl, browser_context, extension_id, false));
return; return;
} }
...@@ -404,14 +403,13 @@ void RuntimeEventRouter::OnExtensionUninstalled( ...@@ -404,14 +403,13 @@ void RuntimeEventRouter::OnExtensionUninstalled(
} }
ExtensionFunction::ResponseAction RuntimeGetBackgroundPageFunction::Run() { ExtensionFunction::ResponseAction RuntimeGetBackgroundPageFunction::Run() {
ExtensionSystem* system = ExtensionSystem::Get(browser_context());
ExtensionHost* host = ProcessManager::Get(browser_context()) ExtensionHost* host = ProcessManager::Get(browser_context())
->GetBackgroundHostForExtension(extension_id()); ->GetBackgroundHostForExtension(extension_id());
if (system->lazy_background_task_queue()->ShouldEnqueueTask(browser_context(), if (LazyBackgroundTaskQueue::Get(browser_context())
extension())) { ->ShouldEnqueueTask(browser_context(), extension())) {
system->lazy_background_task_queue()->AddPendingTask( LazyBackgroundTaskQueue::Get(browser_context())
browser_context(), ->AddPendingTask(
extension_id(), browser_context(), extension_id(),
base::Bind(&RuntimeGetBackgroundPageFunction::OnPageLoaded, this)); base::Bind(&RuntimeGetBackgroundPageFunction::OnPageLoaded, this));
} else if (host) { } else if (host) {
OnPageLoaded(host); OnPageLoaded(host);
......
...@@ -638,8 +638,7 @@ bool EventRouter::MaybeLoadLazyBackgroundPageToDispatchEvent( ...@@ -638,8 +638,7 @@ bool EventRouter::MaybeLoadLazyBackgroundPageToDispatchEvent(
if (!CanDispatchEventToBrowserContext(context, extension, event)) if (!CanDispatchEventToBrowserContext(context, extension, event))
return false; return false;
LazyBackgroundTaskQueue* queue = ExtensionSystem::Get( LazyBackgroundTaskQueue* queue = LazyBackgroundTaskQueue::Get(context);
context)->lazy_background_task_queue();
if (queue->ShouldEnqueueTask(context, extension)) { if (queue->ShouldEnqueueTask(context, extension)) {
linked_ptr<Event> dispatched_event(event); linked_ptr<Event> dispatched_event(event);
...@@ -752,8 +751,8 @@ void EventRouter::Observe(int type, ...@@ -752,8 +751,8 @@ void EventRouter::Observe(int type,
const Extension* extension = const Extension* extension =
content::Details<const Extension>(details).ptr(); content::Details<const Extension>(details).ptr();
if (BackgroundInfo::HasLazyBackgroundPage(extension)) { if (BackgroundInfo::HasLazyBackgroundPage(extension)) {
LazyBackgroundTaskQueue* queue = ExtensionSystem::Get( LazyBackgroundTaskQueue* queue =
browser_context_)->lazy_background_task_queue(); LazyBackgroundTaskQueue::Get(browser_context_);
queue->AddPendingTask(browser_context_, extension->id(), queue->AddPendingTask(browser_context_, extension->id(),
base::Bind(&DoNothing)); base::Bind(&DoNothing));
} }
......
...@@ -34,7 +34,6 @@ class EventRouter; ...@@ -34,7 +34,6 @@ class EventRouter;
class Extension; class Extension;
class ExtensionSet; class ExtensionSet;
class InfoMap; class InfoMap;
class LazyBackgroundTaskQueue;
class ManagementPolicy; class ManagementPolicy;
class OneShotEvent; class OneShotEvent;
class QuotaService; class QuotaService;
...@@ -83,9 +82,6 @@ class ExtensionSystem : public KeyedService { ...@@ -83,9 +82,6 @@ class ExtensionSystem : public KeyedService {
// Returns the IO-thread-accessible extension data. // Returns the IO-thread-accessible extension data.
virtual InfoMap* info_map() = 0; virtual InfoMap* info_map() = 0;
// The LazyBackgroundTaskQueue is created at startup.
virtual LazyBackgroundTaskQueue* lazy_background_task_queue() = 0;
// The EventRouter is created at startup. // The EventRouter is created at startup.
virtual EventRouter* event_router() = 0; virtual EventRouter* event_router() = 0;
......
...@@ -207,7 +207,7 @@ void AppViewGuest::CreateWebContents( ...@@ -207,7 +207,7 @@ void AppViewGuest::CreateWebContents(
callback)))); callback))));
LazyBackgroundTaskQueue* queue = LazyBackgroundTaskQueue* queue =
ExtensionSystem::Get(browser_context())->lazy_background_task_queue(); LazyBackgroundTaskQueue::Get(browser_context());
if (queue->ShouldEnqueueTask(browser_context(), guest_extension)) { if (queue->ShouldEnqueueTask(browser_context(), guest_extension)) {
queue->AddPendingTask(browser_context(), queue->AddPendingTask(browser_context(),
guest_extension->id(), guest_extension->id(),
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "extensions/browser/extension_host.h" #include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/extensions_browser_client.h"
#include "extensions/browser/lazy_background_task_queue_factory.h"
#include "extensions/browser/notification_types.h" #include "extensions/browser/notification_types.h"
#include "extensions/browser/process_manager.h" #include "extensions/browser/process_manager.h"
#include "extensions/browser/process_map.h" #include "extensions/browser/process_map.h"
...@@ -39,6 +40,12 @@ LazyBackgroundTaskQueue::LazyBackgroundTaskQueue( ...@@ -39,6 +40,12 @@ LazyBackgroundTaskQueue::LazyBackgroundTaskQueue(
LazyBackgroundTaskQueue::~LazyBackgroundTaskQueue() { LazyBackgroundTaskQueue::~LazyBackgroundTaskQueue() {
} }
// static
LazyBackgroundTaskQueue* LazyBackgroundTaskQueue::Get(
content::BrowserContext* browser_context) {
return LazyBackgroundTaskQueueFactory::GetForBrowserContext(browser_context);
}
bool LazyBackgroundTaskQueue::ShouldEnqueueTask( bool LazyBackgroundTaskQueue::ShouldEnqueueTask(
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const Extension* extension) { const Extension* extension) {
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "base/gtest_prod_util.h" #include "base/gtest_prod_util.h"
#include "base/memory/linked_ptr.h" #include "base/memory/linked_ptr.h"
#include "base/scoped_observer.h" #include "base/scoped_observer.h"
#include "components/keyed_service/core/keyed_service.h"
#include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h" #include "content/public/browser/notification_registrar.h"
#include "extensions/browser/extension_registry_observer.h" #include "extensions/browser/extension_registry_observer.h"
...@@ -32,7 +33,8 @@ class ExtensionRegistry; ...@@ -32,7 +33,8 @@ class ExtensionRegistry;
// //
// It is the consumer's responsibility to use this class when appropriate, i.e. // It is the consumer's responsibility to use this class when appropriate, i.e.
// only with extensions that have not-yet-loaded lazy background pages. // only with extensions that have not-yet-loaded lazy background pages.
class LazyBackgroundTaskQueue : public content::NotificationObserver, class LazyBackgroundTaskQueue : public KeyedService,
public content::NotificationObserver,
public ExtensionRegistryObserver { public ExtensionRegistryObserver {
public: public:
typedef base::Callback<void(ExtensionHost*)> PendingTask; typedef base::Callback<void(ExtensionHost*)> PendingTask;
...@@ -40,6 +42,10 @@ class LazyBackgroundTaskQueue : public content::NotificationObserver, ...@@ -40,6 +42,10 @@ class LazyBackgroundTaskQueue : public content::NotificationObserver,
explicit LazyBackgroundTaskQueue(content::BrowserContext* browser_context); explicit LazyBackgroundTaskQueue(content::BrowserContext* browser_context);
~LazyBackgroundTaskQueue() override; ~LazyBackgroundTaskQueue() override;
// Convenience method to return the LazyBackgroundTaskQueue for a given
// |context|.
static LazyBackgroundTaskQueue* Get(content::BrowserContext* context);
// Returns the number of extensions having pending tasks. // Returns the number of extensions having pending tasks.
size_t extensions_with_pending_tasks() { return pending_tasks_.size(); } size_t extensions_with_pending_tasks() { return pending_tasks_.size(); }
......
// 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 "extensions/browser/lazy_background_task_queue_factory.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"
#include "extensions/browser/lazy_background_task_queue.h"
using content::BrowserContext;
namespace extensions {
// static
LazyBackgroundTaskQueue* LazyBackgroundTaskQueueFactory::GetForBrowserContext(
BrowserContext* context) {
return static_cast<LazyBackgroundTaskQueue*>(
GetInstance()->GetServiceForBrowserContext(context, true));
}
// static
LazyBackgroundTaskQueueFactory* LazyBackgroundTaskQueueFactory::GetInstance() {
return Singleton<LazyBackgroundTaskQueueFactory>::get();
}
LazyBackgroundTaskQueueFactory::LazyBackgroundTaskQueueFactory()
: BrowserContextKeyedServiceFactory(
"LazyBackgroundTaskQueue",
BrowserContextDependencyManager::GetInstance()) {
DependsOn(ExtensionRegistryFactory::GetInstance());
}
LazyBackgroundTaskQueueFactory::~LazyBackgroundTaskQueueFactory() {
}
KeyedService* LazyBackgroundTaskQueueFactory::BuildServiceInstanceFor(
BrowserContext* context) const {
return new LazyBackgroundTaskQueue(context);
}
BrowserContext* LazyBackgroundTaskQueueFactory::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 EXTENSIONS_BROWSER_LAZY_BACKGROUND_TASK_QUEUE_FACTORY_H_
#define EXTENSIONS_BROWSER_LAZY_BACKGROUND_TASK_QUEUE_FACTORY_H_
#include "base/memory/singleton.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
namespace extensions {
class LazyBackgroundTaskQueue;
class LazyBackgroundTaskQueueFactory
: public BrowserContextKeyedServiceFactory {
public:
static LazyBackgroundTaskQueue* GetForBrowserContext(
content::BrowserContext* context);
static LazyBackgroundTaskQueueFactory* GetInstance();
private:
friend struct DefaultSingletonTraits<LazyBackgroundTaskQueueFactory>;
LazyBackgroundTaskQueueFactory();
~LazyBackgroundTaskQueueFactory() override;
// BrowserContextKeyedServiceFactory implementation
KeyedService* BuildServiceInstanceFor(
content::BrowserContext* context) const override;
content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override;
DISALLOW_COPY_AND_ASSIGN(LazyBackgroundTaskQueueFactory);
};
} // namespace extensions
#endif // EXTENSIONS_BROWSER_LAZY_BACKGROUND_TASK_QUEUE_FACTORY_H_
...@@ -46,10 +46,6 @@ InfoMap* MockExtensionSystem::info_map() { ...@@ -46,10 +46,6 @@ InfoMap* MockExtensionSystem::info_map() {
return nullptr; return nullptr;
} }
LazyBackgroundTaskQueue* MockExtensionSystem::lazy_background_task_queue() {
return nullptr;
}
EventRouter* MockExtensionSystem::event_router() { EventRouter* MockExtensionSystem::event_router() {
return event_router_; return event_router_;
} }
......
...@@ -36,7 +36,6 @@ class MockExtensionSystem : public ExtensionSystem { ...@@ -36,7 +36,6 @@ class MockExtensionSystem : public ExtensionSystem {
StateStore* state_store() override; StateStore* state_store() override;
StateStore* rules_store() override; StateStore* rules_store() override;
InfoMap* info_map() override; InfoMap* info_map() override;
LazyBackgroundTaskQueue* lazy_background_task_queue() override;
EventRouter* event_router() override; EventRouter* event_router() override;
QuotaService* quota_service() override; QuotaService* quota_service() override;
const OneShotEvent& ready() const override; const OneShotEvent& ready() const override;
......
...@@ -436,7 +436,7 @@ bool ProcessManager::WakeEventPage(const std::string& extension_id, ...@@ -436,7 +436,7 @@ bool ProcessManager::WakeEventPage(const std::string& extension_id,
return false; return false;
} }
LazyBackgroundTaskQueue* queue = LazyBackgroundTaskQueue* queue =
ExtensionSystem::Get(browser_context_)->lazy_background_task_queue(); LazyBackgroundTaskQueue::Get(browser_context_);
queue->AddPendingTask(browser_context_, extension_id, queue->AddPendingTask(browser_context_, extension_id,
base::Bind(&PropagateExtensionWakeResult, callback)); base::Bind(&PropagateExtensionWakeResult, callback));
return true; return true;
......
...@@ -693,6 +693,8 @@ ...@@ -693,6 +693,8 @@
'browser/io_thread_extension_message_filter.h', 'browser/io_thread_extension_message_filter.h',
'browser/lazy_background_task_queue.cc', 'browser/lazy_background_task_queue.cc',
'browser/lazy_background_task_queue.h', 'browser/lazy_background_task_queue.h',
'browser/lazy_background_task_queue_factory.cc',
'browser/lazy_background_task_queue_factory.h',
'browser/load_monitoring_extension_host_queue.cc', 'browser/load_monitoring_extension_host_queue.cc',
'browser/load_monitoring_extension_host_queue.h', 'browser/load_monitoring_extension_host_queue.h',
'browser/management_policy.cc', 'browser/management_policy.cc',
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/browser/info_map.h" #include "extensions/browser/info_map.h"
#include "extensions/browser/lazy_background_task_queue.h"
#include "extensions/browser/notification_types.h" #include "extensions/browser/notification_types.h"
#include "extensions/browser/quota_service.h" #include "extensions/browser/quota_service.h"
#include "extensions/browser/runtime_data.h" #include "extensions/browser/runtime_data.h"
...@@ -98,8 +97,6 @@ void ShellExtensionSystem::Shutdown() { ...@@ -98,8 +97,6 @@ void ShellExtensionSystem::Shutdown() {
void ShellExtensionSystem::InitForRegularProfile(bool extensions_enabled) { void ShellExtensionSystem::InitForRegularProfile(bool extensions_enabled) {
runtime_data_.reset( runtime_data_.reset(
new RuntimeData(ExtensionRegistry::Get(browser_context_))); new RuntimeData(ExtensionRegistry::Get(browser_context_)));
lazy_background_task_queue_.reset(
new LazyBackgroundTaskQueue(browser_context_));
event_router_.reset( event_router_.reset(
new EventRouter(browser_context_, ExtensionPrefs::Get(browser_context_))); new EventRouter(browser_context_, ExtensionPrefs::Get(browser_context_)));
quota_service_.reset(new QuotaService); quota_service_.reset(new QuotaService);
...@@ -135,10 +132,6 @@ InfoMap* ShellExtensionSystem::info_map() { ...@@ -135,10 +132,6 @@ InfoMap* ShellExtensionSystem::info_map() {
return info_map_.get(); return info_map_.get();
} }
LazyBackgroundTaskQueue* ShellExtensionSystem::lazy_background_task_queue() {
return lazy_background_task_queue_.get();
}
EventRouter* ShellExtensionSystem::event_router() { EventRouter* ShellExtensionSystem::event_router() {
return event_router_.get(); return event_router_.get();
} }
......
...@@ -26,7 +26,6 @@ namespace extensions { ...@@ -26,7 +26,6 @@ namespace extensions {
class DeclarativeUserScriptManager; class DeclarativeUserScriptManager;
class EventRouter; class EventRouter;
class InfoMap; class InfoMap;
class LazyBackgroundTaskQueue;
class ProcessManager; class ProcessManager;
class RendererStartupHelper; class RendererStartupHelper;
class SharedUserScriptMaster; class SharedUserScriptMaster;
...@@ -60,7 +59,6 @@ class ShellExtensionSystem : public ExtensionSystem { ...@@ -60,7 +59,6 @@ class ShellExtensionSystem : public ExtensionSystem {
StateStore* state_store() override; StateStore* state_store() override;
StateStore* rules_store() override; StateStore* rules_store() override;
InfoMap* info_map() override; InfoMap* info_map() override;
LazyBackgroundTaskQueue* lazy_background_task_queue() override;
EventRouter* event_router() override; EventRouter* event_router() override;
QuotaService* quota_service() override; QuotaService* quota_service() override;
void RegisterExtensionWithRequestContexts( void RegisterExtensionWithRequestContexts(
...@@ -80,7 +78,6 @@ class ShellExtensionSystem : public ExtensionSystem { ...@@ -80,7 +78,6 @@ class ShellExtensionSystem : public ExtensionSystem {
scoped_refptr<InfoMap> info_map_; scoped_refptr<InfoMap> info_map_;
scoped_ptr<RuntimeData> runtime_data_; scoped_ptr<RuntimeData> runtime_data_;
scoped_ptr<LazyBackgroundTaskQueue> lazy_background_task_queue_;
scoped_ptr<EventRouter> event_router_; scoped_ptr<EventRouter> event_router_;
scoped_ptr<QuotaService> quota_service_; scoped_ptr<QuotaService> quota_service_;
......
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