From 641e3ce0cd54b64d5eea457f22e98352f9ee09c8 Mon Sep 17 00:00:00 2001 From: David Bertoni Date: Fri, 11 Jan 2019 20:35:12 +0000 Subject: [PATCH] [Extensions] Remove most references to LazyBackgroundTaskQueue. This CL is part of the effort to unify the LazyBackgroundTaskQueue and the ServiceWorkerTaskQueue. Bug: 915814 TBR: dmazzoni@chromium.org (Removed a header file in accessibility_extension_api.cc) Change-Id: I067bc70b4ed047a0466d70b7d976e01806e7bf98 Reviewed-on: https://chromium-review.googlesource.com/c/1404577 Commit-Queue: David Bertoni Reviewed-by: Ben Wells Reviewed-by: Anand Mistry Reviewed-by: Luke Halliwell Reviewed-by: Istiaque Ahmed Cr-Commit-Position: refs/heads/master@{#622127} --- apps/launcher.cc | 8 ++--- .../accessibility_extension_api.cc | 1 - .../file_manager/file_browser_handlers.cc | 8 ++--- chrome/browser/extensions/devtools_util.cc | 8 ++--- .../extensions/cast_extension_system.cc | 1 - .../browser/api/messaging/message_service.cc | 25 +++++++------- .../browser/api/messaging/message_service.h | 8 ++--- extensions/browser/api/runtime/runtime_api.cc | 34 +++++++++---------- .../browser/events/lazy_event_dispatcher.cc | 2 -- extensions/browser/extension_registrar.cc | 8 ++--- .../guest_view/app_view/app_view_guest.cc | 8 ++--- extensions/browser/process_manager.cc | 9 +++-- 12 files changed, 55 insertions(+), 65 deletions(-) diff --git a/apps/launcher.cc b/apps/launcher.cc index 0955e75c8759d..e6600efa656a6 100644 --- a/apps/launcher.cc +++ b/apps/launcher.cc @@ -34,8 +34,8 @@ #include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/granted_file_entry.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_context_id.h" +#include "extensions/browser/lazy_context_task_queue.h" #include "extensions/browser/process_manager.h" #include "extensions/common/api/app_runtime.h" #include "extensions/common/extension.h" @@ -290,11 +290,11 @@ class PlatformAppPathLauncher // available, or it might be in the process of being unloaded, in which case // the lazy background task queue is used to load the extension and then // call back to us. - extensions::LazyBackgroundTaskQueue* const queue = - extensions::LazyBackgroundTaskQueue::Get(context_); + const extensions::LazyContextId context_id(context_, extension_id); + extensions::LazyContextTaskQueue* const queue = context_id.GetTaskQueue(); if (queue->ShouldEnqueueTask(context_, app)) { queue->AddPendingTask( - extensions::LazyContextId(context_, extension_id), + context_id, base::Bind(&PlatformAppPathLauncher::GrantAccessToFilesAndLaunch, this)); return; diff --git a/chrome/browser/accessibility/accessibility_extension_api.cc b/chrome/browser/accessibility/accessibility_extension_api.cc index 617c0a40f1d73..552c73a07a32e 100644 --- a/chrome/browser/accessibility/accessibility_extension_api.cc +++ b/chrome/browser/accessibility/accessibility_extension_api.cc @@ -27,7 +27,6 @@ #include "content/public/common/service_manager_connection.h" #include "extensions/browser/event_router.h" #include "extensions/browser/extension_system.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/common/error_utils.h" #include "extensions/common/image_util.h" #include "extensions/common/manifest_handlers/background_info.h" diff --git a/chrome/browser/chromeos/file_manager/file_browser_handlers.cc b/chrome/browser/chromeos/file_manager/file_browser_handlers.cc index a6aa3695adaf9..923f3254bfcba 100644 --- a/chrome/browser/chromeos/file_manager/file_browser_handlers.cc +++ b/chrome/browser/chromeos/file_manager/file_browser_handlers.cc @@ -37,8 +37,8 @@ #include "extensions/browser/extension_host.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_util.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_context_id.h" +#include "extensions/browser/lazy_context_task_queue.h" #include "extensions/common/extension_set.h" #include "extensions/common/manifest_handlers/background_info.h" #include "extensions/common/url_pattern.h" @@ -350,14 +350,14 @@ void FileBrowserHandlerExecutor::ExecuteFileActionsOnUIThread( handler_pid, nullptr); } else { // We have to wake the handler background page before we proceed. - extensions::LazyBackgroundTaskQueue* queue = - extensions::LazyBackgroundTaskQueue::Get(profile_); + const extensions::LazyContextId context_id(profile_, extension_->id()); + extensions::LazyContextTaskQueue* queue = context_id.GetTaskQueue(); if (!queue->ShouldEnqueueTask(profile_, extension_.get())) { ExecuteDoneOnUIThread(false); return; } queue->AddPendingTask( - extensions::LazyContextId(profile_, extension_->id()), + context_id, base::BindOnce( &FileBrowserHandlerExecutor::SetupPermissionsAndDispatchEvent, weak_ptr_factory_.GetWeakPtr(), diff --git a/chrome/browser/extensions/devtools_util.cc b/chrome/browser/extensions/devtools_util.cc index 2936711b9e545..c7915aaebd3f3 100644 --- a/chrome/browser/extensions/devtools_util.cc +++ b/chrome/browser/extensions/devtools_util.cc @@ -7,8 +7,8 @@ #include "chrome/browser/devtools/devtools_window.h" #include "chrome/browser/profiles/profile.h" #include "extensions/browser/extension_host.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_context_id.h" +#include "extensions/browser/lazy_context_task_queue.h" #include "extensions/browser/process_manager.h" #include "extensions/common/extension.h" @@ -34,9 +34,9 @@ void InspectBackgroundPage(const Extension* extension, Profile* profile) { InspectExtensionHost( std::make_unique(host)); } else { - LazyBackgroundTaskQueue::Get(profile)->AddPendingTask( - LazyContextId(profile, extension->id()), - base::BindOnce(&InspectExtensionHost)); + const LazyContextId context_id(profile, extension->id()); + context_id.GetTaskQueue()->AddPendingTask( + context_id, base::BindOnce(&InspectExtensionHost)); } } diff --git a/chromecast/browser/extensions/cast_extension_system.cc b/chromecast/browser/extensions/cast_extension_system.cc index 708dc41fcff7a..a4e69edea0410 100644 --- a/chromecast/browser/extensions/cast_extension_system.cc +++ b/chromecast/browser/extensions/cast_extension_system.cc @@ -23,7 +23,6 @@ #include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/info_map.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/notification_types.h" #include "extensions/browser/null_app_sorting.h" #include "extensions/browser/process_manager.h" diff --git a/extensions/browser/api/messaging/message_service.cc b/extensions/browser/api/messaging/message_service.cc index 9d29946208b34..94fdccec8236e 100644 --- a/extensions/browser/api/messaging/message_service.cc +++ b/extensions/browser/api/messaging/message_service.cc @@ -38,8 +38,6 @@ #include "extensions/browser/extension_web_contents_observer.h" #include "extensions/browser/extensions_browser_client.h" #include "extensions/browser/guest_view/web_view/web_view_guest.h" -#include "extensions/browser/lazy_background_task_queue.h" -#include "extensions/browser/lazy_context_id.h" #include "extensions/browser/process_manager.h" #include "extensions/common/extension.h" #include "extensions/common/manifest_constants.h" @@ -162,7 +160,6 @@ static content::RenderProcessHost* GetExtensionProcess( MessageService::MessageService(BrowserContext* context) : messaging_delegate_(ExtensionsAPIClient::Get()->GetMessagingDelegate()), - lazy_background_task_queue_(LazyBackgroundTaskQueue::Get(context)), weak_factory_(this) { DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_NE(nullptr, messaging_delegate_); @@ -635,9 +632,10 @@ void MessageService::ClosePortImpl(const PortId& port_id, if (it == channels_.end()) { auto pending = pending_lazy_background_page_channels_.find(channel_id); if (pending != pending_lazy_background_page_channels_.end()) { - lazy_background_task_queue_->AddPendingTask( - LazyContextId(pending->second.browser_context(), - pending->second.extension_id()), + const LazyContextId context_id(pending->second.browser_context(), + pending->second.extension_id()); + context_id.GetTaskQueue()->AddPendingTask( + context_id, base::BindOnce(&MessageService::PendingLazyBackgroundPageClosePort, weak_factory_.GetWeakPtr(), port_id, process_id, routing_id, force_close, error_message)); @@ -736,9 +734,10 @@ void MessageService::EnqueuePendingMessageForLazyBackgroundLoad( auto pending = pending_lazy_background_page_channels_.find(channel_id); if (pending != pending_lazy_background_page_channels_.end()) { - lazy_background_task_queue_->AddPendingTask( - LazyContextId(pending->second.browser_context(), - pending->second.extension_id()), + const LazyContextId context_id(pending->second.browser_context(), + pending->second.extension_id()); + context_id.GetTaskQueue()->AddPendingTask( + context_id, base::BindOnce(&MessageService::PendingLazyBackgroundPagePostMessage, weak_factory_.GetWeakPtr(), source_port_id, message)); } @@ -772,15 +771,17 @@ bool MessageService::MaybeAddPendingLazyBackgroundPageOpenChannelTask( if (!IncognitoInfo::IsSplitMode(extension)) context = ExtensionsBrowserClient::Get()->GetOriginalContext(context); - if (!lazy_background_task_queue_->ShouldEnqueueTask(context, extension)) + const LazyContextId context_id(context, extension->id()); + LazyContextTaskQueue* task_queue = context_id.GetTaskQueue(); + if (!task_queue->ShouldEnqueueTask(context, extension)) return false; ChannelId channel_id = (*params)->receiver_port_id.GetChannelId(); pending_lazy_background_page_channels_.insert(std::make_pair( channel_id, PendingLazyBackgroundPageChannel(context, extension->id()))); int source_id = (*params)->source_process_id; - lazy_background_task_queue_->AddPendingTask( - LazyContextId(context, extension->id()), + task_queue->AddPendingTask( + context_id, base::BindOnce(&MessageService::PendingLazyBackgroundPageOpenChannel, weak_factory_.GetWeakPtr(), base::Passed(params), source_id)); diff --git a/extensions/browser/api/messaging/message_service.h b/extensions/browser/api/messaging/message_service.h index b23d970f79897..4c79695cbdbda 100644 --- a/extensions/browser/api/messaging/message_service.h +++ b/extensions/browser/api/messaging/message_service.h @@ -33,7 +33,6 @@ class BrowserContext; namespace extensions { class Extension; class ExtensionHost; -class LazyBackgroundTaskQueue; class MessagingDelegate; // This class manages message and event passing between renderer processes. @@ -187,7 +186,7 @@ class MessageService : public BrowserContextKeyedAPI, MessageChannel* channel, const Message& message); - // Potentially registers a pending task with the LazyBackgroundTaskQueue + // Potentially registers a pending task with the background task queue // to open a channel. Returns true if a task was queued. // Takes ownership of |params| if true is returned. bool MaybeAddPendingLazyBackgroundPageOpenChannelTask( @@ -196,7 +195,7 @@ class MessageService : public BrowserContextKeyedAPI, std::unique_ptr* params, const PendingMessagesQueue& pending_messages); - // Callbacks for LazyBackgroundTaskQueue tasks. The queue passes in an + // Callbacks for background task queue tasks. The queue passes in an // ExtensionHost to its task callbacks, though some of our callbacks don't // use that argument. void PendingLazyBackgroundPageOpenChannel( @@ -254,9 +253,6 @@ class MessageService : public BrowserContextKeyedAPI, PendingLazyBackgroundPageChannelMap pending_lazy_background_page_channels_; MessagePropertyProvider property_provider_; - // Weak pointer. Guaranteed to outlive this class. - LazyBackgroundTaskQueue* lazy_background_task_queue_; - base::WeakPtrFactory weak_factory_; DISALLOW_COPY_AND_ASSIGN(MessageService); diff --git a/extensions/browser/api/runtime/runtime_api.cc b/extensions/browser/api/runtime/runtime_api.cc index 5083679942325..b602bba242bb8 100644 --- a/extensions/browser/api/runtime/runtime_api.cc +++ b/extensions/browser/api/runtime/runtime_api.cc @@ -31,8 +31,8 @@ #include "extensions/browser/extension_system.h" #include "extensions/browser/extension_util.h" #include "extensions/browser/extensions_browser_client.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_context_id.h" +#include "extensions/browser/lazy_context_task_queue.h" #include "extensions/browser/process_manager_factory.h" #include "extensions/common/api/runtime.h" #include "extensions/common/error_utils.h" @@ -104,7 +104,7 @@ void DispatchOnStartupEventImpl( const std::string& extension_id, bool first_call, std::unique_ptr context_info) { - // A NULL ContextInfo from the LazyBackgroundTaskQueue means the page failed + // A NULL ContextInfo from the task callback means the page failed // to load. Give up. if (!context_info && !first_call) return; @@ -127,14 +127,15 @@ void DispatchOnStartupEventImpl( ExtensionRegistry::Get(browser_context)->enabled_extensions().GetByID( extension_id); if (extension && BackgroundInfo::HasPersistentBackgroundPage(extension) && - first_call && - LazyBackgroundTaskQueue::Get(browser_context) - ->ShouldEnqueueTask(browser_context, extension)) { - LazyBackgroundTaskQueue::Get(browser_context) - ->AddPendingTask(LazyContextId(browser_context, extension_id), - base::BindOnce(&DispatchOnStartupEventImpl, - browser_context, extension_id, false)); - return; + first_call) { + const LazyContextId context_id(browser_context, extension_id); + LazyContextTaskQueue* task_queue = context_id.GetTaskQueue(); + if (task_queue->ShouldEnqueueTask(browser_context, extension)) { + task_queue->AddPendingTask( + context_id, base::BindOnce(&DispatchOnStartupEventImpl, + browser_context, extension_id, false)); + return; + } } std::unique_ptr event_args(new base::ListValue()); @@ -596,13 +597,12 @@ void RuntimeAPI::OnExtensionInstalledAndLoaded( ExtensionFunction::ResponseAction RuntimeGetBackgroundPageFunction::Run() { ExtensionHost* host = ProcessManager::Get(browser_context()) ->GetBackgroundHostForExtension(extension_id()); - if (LazyBackgroundTaskQueue::Get(browser_context()) - ->ShouldEnqueueTask(browser_context(), extension())) { - LazyBackgroundTaskQueue::Get(browser_context()) - ->AddPendingTask( - LazyContextId(browser_context(), extension_id()), - base::BindOnce(&RuntimeGetBackgroundPageFunction::OnPageLoaded, - this)); + const LazyContextId context_id(browser_context(), extension_id()); + LazyContextTaskQueue* task_queue = context_id.GetTaskQueue(); + if (task_queue->ShouldEnqueueTask(browser_context(), extension())) { + task_queue->AddPendingTask( + context_id, + base::BindOnce(&RuntimeGetBackgroundPageFunction::OnPageLoaded, this)); } else if (host) { OnPageLoaded(std::make_unique(host)); } else { diff --git a/extensions/browser/events/lazy_event_dispatcher.cc b/extensions/browser/events/lazy_event_dispatcher.cc index a62e95c35d3be..fc3aa96f59653 100644 --- a/extensions/browser/events/lazy_event_dispatcher.cc +++ b/extensions/browser/events/lazy_event_dispatcher.cc @@ -8,9 +8,7 @@ #include "extensions/browser/event_router.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extensions_browser_client.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_context_id.h" -#include "extensions/browser/service_worker_task_queue.h" #include "extensions/common/manifest_handlers/incognito_info.h" using content::BrowserContext; diff --git a/extensions/browser/extension_registrar.cc b/extensions/browser/extension_registrar.cc index e54628e3ba10d..cc59ed52badfa 100644 --- a/extensions/browser/extension_registrar.cc +++ b/extensions/browser/extension_registrar.cc @@ -16,8 +16,8 @@ #include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_context_id.h" +#include "extensions/browser/lazy_context_task_queue.h" #include "extensions/browser/notification_types.h" #include "extensions/browser/process_manager.h" #include "extensions/browser/renderer_startup_helper.h" @@ -521,10 +521,8 @@ void ExtensionRegistrar::MaybeSpinUpLazyBackgroundPage( return; // Wake up the event page by posting a dummy task. - LazyBackgroundTaskQueue* queue = - LazyBackgroundTaskQueue::Get(browser_context_); - queue->AddPendingTask(LazyContextId(browser_context_, extension->id()), - base::DoNothing()); + const LazyContextId context_id(browser_context_, extension->id()); + context_id.GetTaskQueue()->AddPendingTask(context_id, base::DoNothing()); } } // namespace extensions diff --git a/extensions/browser/guest_view/app_view/app_view_guest.cc b/extensions/browser/guest_view/app_view/app_view_guest.cc index f4596561a52f4..6423c7ebde3c8 100644 --- a/extensions/browser/guest_view/app_view/app_view_guest.cc +++ b/extensions/browser/guest_view/app_view/app_view_guest.cc @@ -19,8 +19,8 @@ #include "extensions/browser/extension_host.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/guest_view/app_view/app_view_constants.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_context_id.h" +#include "extensions/browser/lazy_context_task_queue.h" #include "extensions/browser/process_manager.h" #include "extensions/browser/view_type_utils.h" #include "extensions/common/api/app_runtime.h" @@ -194,11 +194,11 @@ void AppViewGuest::CreateWebContents(const base::DictionaryValue& create_params, guest_extension, weak_ptr_factory_.GetWeakPtr(), std::move(callback)))); - LazyBackgroundTaskQueue* queue = - LazyBackgroundTaskQueue::Get(browser_context()); + const LazyContextId context_id(browser_context(), guest_extension->id()); + LazyContextTaskQueue* queue = context_id.GetTaskQueue(); if (queue->ShouldEnqueueTask(browser_context(), guest_extension)) { queue->AddPendingTask( - LazyContextId(browser_context(), guest_extension->id()), + context_id, base::BindOnce(&AppViewGuest::LaunchAppAndFireEvent, weak_ptr_factory_.GetWeakPtr(), data->CreateDeepCopy(), std::move(callback))); diff --git a/extensions/browser/process_manager.cc b/extensions/browser/process_manager.cc index e3e92b477357b..f9b216c598080 100644 --- a/extensions/browser/process_manager.cc +++ b/extensions/browser/process_manager.cc @@ -32,8 +32,8 @@ #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" #include "extensions/browser/extensions_browser_client.h" -#include "extensions/browser/lazy_background_task_queue.h" #include "extensions/browser/lazy_context_id.h" +#include "extensions/browser/lazy_context_task_queue.h" #include "extensions/browser/notification_types.h" #include "extensions/browser/process_manager_delegate.h" #include "extensions/browser/process_manager_factory.h" @@ -432,10 +432,9 @@ bool ProcessManager::WakeEventPage(const std::string& extension_id, // The extension is already awake. return false; } - LazyBackgroundTaskQueue* queue = - LazyBackgroundTaskQueue::Get(browser_context_); - queue->AddPendingTask( - LazyContextId(browser_context_, extension_id), + const LazyContextId context_id(browser_context_, extension_id); + context_id.GetTaskQueue()->AddPendingTask( + context_id, base::BindOnce(&PropagateExtensionWakeResult, std::move(callback))); return true; }