diff options
author | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-08 19:15:21 +0000 |
---|---|---|
committer | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-08 19:15:21 +0000 |
commit | 423f1fb38b61b9ecb94f7e64fc20e2a9969aaf95 (patch) | |
tree | 8ca74e89e9a59dada913d42ceeea17cdd8b0370d /chrome/browser | |
parent | 24ad156eab71b598312f9935e8e2e4a494567119 (diff) | |
download | chromium_src-423f1fb38b61b9ecb94f7e64fc20e2a9969aaf95.zip chromium_src-423f1fb38b61b9ecb94f7e64fc20e2a9969aaf95.tar.gz chromium_src-423f1fb38b61b9ecb94f7e64fc20e2a9969aaf95.tar.bz2 |
Move ExtensionProcessManager to src/extensions, part 4
* Move c/b/extensions/extension_process_manager.h to
extensions/browser/process_manager.h
* Rename ExtensionsProcessManager to ProcessManager
* Place it in the "extensions" namespace
BUG=313481
TEST=browser_tests, unit_tests
R=miket@chromium.org
TBR=sky@chromium.org for mechanical header file move affecting chrome/browser/
Review URL: https://codereview.chromium.org/62713003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@233956 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
63 files changed, 227 insertions, 1294 deletions
diff --git a/chrome/browser/apps/window_controls_browsertest.cc b/chrome/browser/apps/window_controls_browsertest.cc index 4d534a8..7da2e46 100644 --- a/chrome/browser/apps/window_controls_browsertest.cc +++ b/chrome/browser/apps/window_controls_browsertest.cc @@ -3,12 +3,12 @@ // found in the LICENSE file. #include "chrome/browser/apps/app_browsertest_util.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_test_message_listener.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/chrome_switches.h" #include "content/public/browser/web_contents_view.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/browser/process_manager.h" class WindowControlsTest : public extensions::PlatformAppBrowserTest { protected: @@ -22,7 +22,7 @@ class WindowControlsTest : public extensions::PlatformAppBrowserTest { content::WebContents* WindowControlsTest::GetWebContentsForExtensionWindow( const extensions::Extension* extension) { - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = extensions::ExtensionSystem::Get(profile())->process_manager(); // Lookup render view host for background page. @@ -32,9 +32,9 @@ content::WebContents* WindowControlsTest::GetWebContentsForExtensionWindow( extension_host->render_view_host(); // Go through all active views, looking for the first window of the extension - const ExtensionProcessManager::ViewSet all_views = + const extensions::ProcessManager::ViewSet all_views = process_manager->GetAllViews(); - ExtensionProcessManager::ViewSet::const_iterator it = all_views.begin(); + extensions::ProcessManager::ViewSet::const_iterator it = all_views.begin(); for (; it != all_views.end(); ++it) { content::RenderViewHost* host = *it; diff --git a/chrome/browser/automation/automation_provider_observers.cc b/chrome/browser/automation/automation_provider_observers.cc index b6db935..b692a77 100644 --- a/chrome/browser/automation/automation_provider_observers.cc +++ b/chrome/browser/automation/automation_provider_observers.cc @@ -32,7 +32,6 @@ #include "chrome/browser/content_settings/tab_specific_content_settings.h" #include "chrome/browser/extensions/crx_installer.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_tab_util.h" @@ -77,6 +76,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" #include "content/public/common/process_type.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/manifest.h" #include "extensions/common/view_type.h" #include "ui/gfx/codec/png_codec.h" @@ -522,9 +522,9 @@ void TabCountChangeObserver::CheckTabCount() { delete this; } -bool DidExtensionViewsStopLoading(ExtensionProcessManager* manager) { - ExtensionProcessManager::ViewSet all_views = manager->GetAllViews(); - for (ExtensionProcessManager::ViewSet::const_iterator iter = +bool DidExtensionViewsStopLoading(extensions::ProcessManager* manager) { + extensions::ProcessManager::ViewSet all_views = manager->GetAllViews(); + for (extensions::ProcessManager::ViewSet::const_iterator iter = all_views.begin(); iter != all_views.end(); ++iter) { if ((*iter)->IsLoading()) @@ -591,7 +591,7 @@ void ExtensionUninstallObserver::Observe( } ExtensionReadyNotificationObserver::ExtensionReadyNotificationObserver( - ExtensionProcessManager* manager, ExtensionService* service, + extensions::ProcessManager* manager, ExtensionService* service, AutomationProvider* automation, IPC::Message* reply_message) : manager_(manager), service_(service), @@ -691,7 +691,7 @@ void ExtensionUnloadNotificationObserver::Observe( } ExtensionsUpdatedObserver::ExtensionsUpdatedObserver( - ExtensionProcessManager* manager, AutomationProvider* automation, + extensions::ProcessManager* manager, AutomationProvider* automation, IPC::Message* reply_message) : manager_(manager), automation_(automation->AsWeakPtr()), reply_message_(reply_message), updater_finished_(false) { diff --git a/chrome/browser/automation/automation_provider_observers.h b/chrome/browser/automation/automation_provider_observers.h index f7dd78b..03b7808 100644 --- a/chrome/browser/automation/automation_provider_observers.h +++ b/chrome/browser/automation/automation_provider_observers.h @@ -53,7 +53,6 @@ class AutomationProvider; class BalloonCollection; class Browser; -class ExtensionProcessManager; class ExtensionService; class Notification; class Profile; @@ -78,6 +77,7 @@ class WebContents; namespace extensions { class Extension; +class ProcessManager; } namespace history { @@ -347,7 +347,7 @@ class ExtensionReadyNotificationObserver : public content::NotificationObserver { public: // Creates an observer that replies using the JSON automation interface. - ExtensionReadyNotificationObserver(ExtensionProcessManager* manager, + ExtensionReadyNotificationObserver(extensions::ProcessManager* manager, ExtensionService* service, AutomationProvider* automation, IPC::Message* reply_message); @@ -362,7 +362,7 @@ class ExtensionReadyNotificationObserver void Init(); content::NotificationRegistrar registrar_; - ExtensionProcessManager* manager_; + extensions::ProcessManager* manager_; ExtensionService* service_; base::WeakPtr<AutomationProvider> automation_; scoped_ptr<IPC::Message> reply_message_; @@ -399,7 +399,7 @@ class ExtensionUnloadNotificationObserver // observer waits until all updated extensions have actually been loaded. class ExtensionsUpdatedObserver : public content::NotificationObserver { public: - ExtensionsUpdatedObserver(ExtensionProcessManager* manager, + ExtensionsUpdatedObserver(extensions::ProcessManager* manager, AutomationProvider* automation, IPC::Message* reply_message); virtual ~ExtensionsUpdatedObserver(); @@ -416,7 +416,7 @@ class ExtensionsUpdatedObserver : public content::NotificationObserver { void MaybeReply(); content::NotificationRegistrar registrar_; - ExtensionProcessManager* manager_; + extensions::ProcessManager* manager_; base::WeakPtr<AutomationProvider> automation_; scoped_ptr<IPC::Message> reply_message_; bool updater_finished_; diff --git a/chrome/browser/automation/automation_util.cc b/chrome/browser/automation/automation_util.cc index 7b42e6c..3d162eb 100644 --- a/chrome/browser/automation/automation_util.cc +++ b/chrome/browser/automation/automation_util.cc @@ -17,7 +17,6 @@ #include "base/values.h" #include "chrome/browser/automation/automation_provider.h" #include "chrome/browser/automation/automation_provider_json.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" @@ -34,6 +33,7 @@ #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" +#include "extensions/browser/process_manager.h" #include "extensions/browser/view_type_utils.h" #include "net/cookies/canonical_cookie.h" #include "net/cookies/cookie_constants.h" diff --git a/chrome/browser/automation/testing_automation_provider.cc b/chrome/browser/automation/testing_automation_provider.cc index 389e86f..b05a8bc 100644 --- a/chrome/browser/automation/testing_automation_provider.cc +++ b/chrome/browser/automation/testing_automation_provider.cc @@ -54,7 +54,6 @@ #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/extensions/extension_action_manager.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_tab_util.h" @@ -138,6 +137,7 @@ #include "content/public/common/geoposition.h" #include "content/public/common/ssl_status.h" #include "content/public/common/webplugininfo.h" +#include "extensions/browser/process_manager.h" #include "extensions/browser/view_type_utils.h" #include "extensions/common/permissions/permission_set.h" #include "extensions/common/url_pattern.h" @@ -2259,13 +2259,13 @@ void TestingAutomationProvider::GetBrowserInfo( ProfileManager* profile_manager = g_browser_process->profile_manager(); std::vector<Profile*> profiles(profile_manager->GetLoadedProfiles()); for (size_t i = 0; i < profiles.size(); ++i) { - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = extensions::ExtensionSystem::Get(profiles[i])->process_manager(); if (!process_manager) continue; - const ExtensionProcessManager::ViewSet view_set = + const extensions::ProcessManager::ViewSet view_set = process_manager->GetAllViews(); - for (ExtensionProcessManager::ViewSet::const_iterator jt = + for (extensions::ProcessManager::ViewSet::const_iterator jt = view_set.begin(); jt != view_set.end(); ++jt) { content::RenderViewHost* render_view_host = *jt; @@ -3443,7 +3443,7 @@ void TestingAutomationProvider::InstallExtension( ExtensionService* service = extensions::ExtensionSystem::Get( browser->profile())->extension_service(); - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser->profile())->process_manager(); if (service && manager) { // The observer will delete itself when done. @@ -3656,7 +3656,7 @@ void TestingAutomationProvider::SetExtensionStateById( ExtensionService* service = extensions::ExtensionSystem::Get( browser->profile())->extension_service(); - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser->profile())->process_manager(); if (!service) { AutomationJSONReply(this, reply_message) @@ -3887,7 +3887,7 @@ void TestingAutomationProvider::UpdateExtensionsNow( return; } - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser->profile())->process_manager(); if (!manager) { AutomationJSONReply(this, reply_message).SendError( diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index f12cd1e..b994e24 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc @@ -36,7 +36,6 @@ #include "chrome/browser/extensions/browser_permissions_policy_delegate.h" #include "chrome/browser/extensions/extension_host.h" #include "chrome/browser/extensions/extension_info_map.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_web_ui.h" @@ -130,6 +129,7 @@ #include "content/public/common/child_process_host.h" #include "content/public/common/content_descriptors.h" #include "content/public/common/url_utils.h" +#include "extensions/browser/process_manager.h" #include "extensions/browser/view_type_utils.h" #include "extensions/common/constants.h" #include "extensions/common/switches.h" @@ -1222,9 +1222,9 @@ bool ChromeContentBrowserClient::ShouldTryToUseExistingProcessHost( std::vector<Profile*> profiles = g_browser_process->profile_manager()-> GetLoadedProfiles(); for (size_t i = 0; i < profiles.size(); ++i) { - ExtensionProcessManager* epm = + extensions::ProcessManager* epm = extensions::ExtensionSystem::Get(profiles[i])->process_manager(); - for (ExtensionProcessManager::const_iterator iter = + for (extensions::ProcessManager::const_iterator iter = epm->background_hosts().begin(); iter != epm->background_hosts().end(); ++iter) { const extensions::ExtensionHost* host = *iter; diff --git a/chrome/browser/chromeos/file_manager/file_browser_handlers.cc b/chrome/browser/chromeos/file_manager/file_browser_handlers.cc index 6d7956f..e805607 100644 --- a/chrome/browser/chromeos/file_manager/file_browser_handlers.cc +++ b/chrome/browser/chromeos/file_manager/file_browser_handlers.cc @@ -50,7 +50,7 @@ int ExtractProcessFromExtensionId(Profile* profile, const std::string& extension_id) { GURL extension_url = Extension::GetBaseURLFromExtensionId(extension_id); - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(profile)->process_manager(); SiteInstance* site_instance = manager->GetSiteInstanceForURL(extension_url); diff --git a/chrome/browser/devtools/devtools_sanity_browsertest.cc b/chrome/browser/devtools/devtools_sanity_browsertest.cc index f7867e9..b609723 100644 --- a/chrome/browser/devtools/devtools_sanity_browsertest.cc +++ b/chrome/browser/devtools/devtools_sanity_browsertest.cc @@ -245,11 +245,11 @@ class DevToolsExtensionTest : public DevToolsSanityTest, base::MessageLoop::current()->PostDelayedTask( FROM_HERE, timeout.callback(), TestTimeouts::action_timeout()); - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser()->profile())-> process_manager(); - ExtensionProcessManager::ViewSet all_views = manager->GetAllViews(); - for (ExtensionProcessManager::ViewSet::const_iterator iter = + extensions::ProcessManager::ViewSet all_views = manager->GetAllViews(); + for (extensions::ProcessManager::ViewSet::const_iterator iter = all_views.begin(); iter != all_views.end();) { if (!(*iter)->IsLoading()) diff --git a/chrome/browser/extensions/alert_apitest.cc b/chrome/browser/extensions/alert_apitest.cc index f91d9b8..8d55c18 100644 --- a/chrome/browser/extensions/alert_apitest.cc +++ b/chrome/browser/extensions/alert_apitest.cc @@ -5,7 +5,6 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h" @@ -13,6 +12,7 @@ #include "chrome/common/extensions/extension.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/browser/render_view_host.h" +#include "extensions/browser/process_manager.h" IN_PROC_BROWSER_TEST_F(ExtensionApiTest, AlertBasic) { ASSERT_TRUE(RunExtensionTest("alert")) << message_; diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.cc b/chrome/browser/extensions/api/developer_private/developer_private_api.cc index fb46466..3dba5f2 100644 --- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc +++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc @@ -473,7 +473,7 @@ ItemInspectViewList DeveloperPrivateGetItemsInfoFunction:: ItemInspectViewList result; // Get the extension process's active views. - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = ExtensionSystem::Get(GetProfile())->process_manager(); GetInspectablePagesForExtensionProcess( extension, diff --git a/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc b/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc index 7eaae89..5840e05 100644 --- a/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc +++ b/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc @@ -612,7 +612,7 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, DISABLED_CloseBackgroundPage) { const Extension* extension = GetSingleLoadedExtension(); // There is a background page and a browser action with no badge text. - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); ASSERT_TRUE(manager->GetBackgroundHostForExtension(extension->id())); ExtensionAction* action = GetBrowserAction(*extension); diff --git a/chrome/browser/extensions/api/management/management_browsertest.cc b/chrome/browser/extensions/api/management/management_browsertest.cc index f0036ff..b76c39b 100644 --- a/chrome/browser/extensions/api/management/management_browsertest.cc +++ b/chrome/browser/extensions/api/management/management_browsertest.cc @@ -46,7 +46,7 @@ class ExtensionManagementTest : public ExtensionBrowserTest { // Test that the extension's version from the manifest and reported by the // background page is correct. This is to ensure that the processes are in // sync with the Extension. - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser()->profile())-> process_manager(); extensions::ExtensionHost* ext_host = @@ -138,7 +138,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, MAYBE_InstallRequiresConfirm) { // Tests that disabling and re-enabling an extension works. IN_PROC_BROWSER_TEST_F(ExtensionManagementTest, DisableEnable) { - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); ExtensionService* service = extensions::ExtensionSystem::Get( browser()->profile())->extension_service(); diff --git a/chrome/browser/extensions/api/messaging/extension_message_port.cc b/chrome/browser/extensions/api/messaging/extension_message_port.cc index 9e0ca61..a04237d 100644 --- a/chrome/browser/extensions/api/messaging/extension_message_port.cc +++ b/chrome/browser/extensions/api/messaging/extension_message_port.cc @@ -5,12 +5,12 @@ #include "chrome/browser/extensions/api/messaging/extension_message_port.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/background_info.h" #include "chrome/common/extensions/extension_messages.h" #include "content/public/browser/render_process_host.h" +#include "extensions/browser/process_manager.h" namespace extensions { @@ -56,7 +56,7 @@ void ExtensionMessagePort::DispatchOnMessage(const Message& message, void ExtensionMessagePort::IncrementLazyKeepaliveCount() { Profile* profile = Profile::FromBrowserContext(process_->GetBrowserContext()); - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = ExtensionSystem::Get(profile)->process_manager(); ExtensionHost* host = pm->GetBackgroundHostForExtension(extension_id_); if (host && BackgroundInfo::HasLazyBackgroundPage(host->extension())) @@ -70,7 +70,7 @@ void ExtensionMessagePort::IncrementLazyKeepaliveCount() { void ExtensionMessagePort::DecrementLazyKeepaliveCount() { Profile* profile = Profile::FromBrowserContext(process_->GetBrowserContext()); - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = ExtensionSystem::Get(profile)->process_manager(); ExtensionHost* host = pm->GetBackgroundHostForExtension(extension_id_); if (host && host == background_host_ptr_) diff --git a/chrome/browser/extensions/api/messaging/message_service.cc b/chrome/browser/extensions/api/messaging/message_service.cc index fb557c3..7cf8190 100644 --- a/chrome/browser/extensions/api/messaging/message_service.cc +++ b/chrome/browser/extensions/api/messaging/message_service.cc @@ -17,7 +17,6 @@ #include "chrome/browser/extensions/api/messaging/incognito_connectability.h" #include "chrome/browser/extensions/api/messaging/native_message_port.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_tab_util.h" @@ -37,6 +36,7 @@ #include "content/public/browser/site_instance.h" #include "content/public/browser/web_contents.h" #include "extensions/browser/lazy_background_task_queue.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/manifest_constants.h" #include "extensions/common/manifest_handlers/incognito_info.h" #include "net/base/completion_callback.h" diff --git a/chrome/browser/extensions/api/runtime/runtime_api.cc b/chrome/browser/extensions/api/runtime/runtime_api.cc index 3411a03..21fa8ae0 100644 --- a/chrome/browser/extensions/api/runtime/runtime_api.cc +++ b/chrome/browser/extensions/api/runtime/runtime_api.cc @@ -13,7 +13,6 @@ #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/extensions/event_router.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/updater/extension_updater.h" @@ -31,6 +30,7 @@ #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" #include "extensions/browser/lazy_background_task_queue.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/error_utils.h" #include "url/gurl.h" #include "webkit/browser/fileapi/isolated_context.h" diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_apitest.cc b/chrome/browser/extensions/api/system_indicator/system_indicator_apitest.cc index 4268a39..b8bdaf2 100644 --- a/chrome/browser/extensions/api/system_indicator/system_indicator_apitest.cc +++ b/chrome/browser/extensions/api/system_indicator/system_indicator_apitest.cc @@ -7,11 +7,11 @@ #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/extensions/extension_action_manager.h" #include "chrome/browser/extensions/extension_apitest.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/lazy_background_page_test_util.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/extensions/extension.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/switches.h" class SystemIndicatorApiTest : public ExtensionApiTest { @@ -60,7 +60,7 @@ IN_PROC_BROWSER_TEST_F(SystemIndicatorApiTest, SystemIndicator) { ASSERT_TRUE(extension) << message_; // Lazy Background Page has been shut down. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(profile())->process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); diff --git a/chrome/browser/extensions/api/system_storage/system_storage_eject_apitest.cc b/chrome/browser/extensions/api/system_storage/system_storage_eject_apitest.cc index f366321..8e67fe6 100644 --- a/chrome/browser/extensions/api/system_storage/system_storage_eject_apitest.cc +++ b/chrome/browser/extensions/api/system_storage/system_storage_eject_apitest.cc @@ -10,7 +10,6 @@ #include "chrome/browser/extensions/api/system_storage/storage_api_test_util.h" #include "chrome/browser/extensions/api/system_storage/storage_info_provider.h" #include "chrome/browser/extensions/extension_apitest.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_test_message_listener.h" #include "chrome/browser/storage_monitor/storage_info.h" @@ -19,6 +18,7 @@ #include "chrome/common/extensions/extension.h" #include "content/public/browser/render_view_host.h" #include "content/public/test/test_utils.h" +#include "extensions/browser/process_manager.h" namespace { diff --git a/chrome/browser/extensions/browsertest_util.cc b/chrome/browser/extensions/browsertest_util.cc index 7a09359..b65be05 100644 --- a/chrome/browser/extensions/browsertest_util.cc +++ b/chrome/browser/extensions/browsertest_util.cc @@ -5,9 +5,9 @@ #include "chrome/browser/extensions/browsertest_util.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/browser/process_manager.h" #include "testing/gtest/include/gtest/gtest.h" namespace extensions { @@ -16,7 +16,7 @@ namespace browsertest_util { std::string ExecuteScriptInBackgroundPage(Profile* profile, const std::string& extension_id, const std::string& script) { - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(profile)->process_manager(); extensions::ExtensionHost* host = manager->GetBackgroundHostForExtension(extension_id); diff --git a/chrome/browser/extensions/chrome_notification_observer.cc b/chrome/browser/extensions/chrome_notification_observer.cc index 9327e52..af7f796 100644 --- a/chrome/browser/extensions/chrome_notification_observer.cc +++ b/chrome/browser/extensions/chrome_notification_observer.cc @@ -6,16 +6,16 @@ #include "base/logging.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "content/public/browser/notification_service.h" +#include "extensions/browser/process_manager.h" namespace extensions { ChromeNotificationObserver::ChromeNotificationObserver() { - // Notifications for ExtensionProcessManager + // Notifications for extensions::ProcessManager registrar_.Add(this, chrome::NOTIFICATION_BROWSER_WINDOW_READY, content::NotificationService::AllSources()); } @@ -29,7 +29,7 @@ void ChromeNotificationObserver::OnBrowserWindowReady(Browser* browser) { // Inform the process manager for this profile that the window is ready. // We continue to observe the notification in case browser windows open for // a related incognito profile or other regular profiles. - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = ExtensionSystem::Get(profile)->process_manager(); if (!manager) // Tests may not have a process manager. return; @@ -42,7 +42,7 @@ void ChromeNotificationObserver::OnBrowserWindowReady(Browser* browser) { // non-incognito window opened. if (profile->IsOffTheRecord()) { Profile* original_profile = profile->GetOriginalProfile(); - ExtensionProcessManager* original_manager = + extensions::ProcessManager* original_manager = ExtensionSystem::Get(original_profile)->process_manager(); DCHECK(original_manager); DCHECK_EQ(original_profile, original_manager->GetBrowserContext()); diff --git a/chrome/browser/extensions/devtools_util.cc b/chrome/browser/extensions/devtools_util.cc index 987fe9e..5b35dfd 100644 --- a/chrome/browser/extensions/devtools_util.cc +++ b/chrome/browser/extensions/devtools_util.cc @@ -6,11 +6,11 @@ #include "chrome/browser/devtools/devtools_window.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/extension.h" #include "extensions/browser/lazy_background_task_queue.h" +#include "extensions/browser/process_manager.h" namespace extensions { namespace devtools_util { diff --git a/chrome/browser/extensions/event_router.cc b/chrome/browser/extensions/event_router.cc index abd05d0..8995bfa 100644 --- a/chrome/browser/extensions/event_router.cc +++ b/chrome/browser/extensions/event_router.cc @@ -19,7 +19,6 @@ #include "chrome/browser/extensions/api/web_request/web_request_api.h" #include "chrome/browser/extensions/event_names.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_util.h" @@ -35,6 +34,7 @@ #include "content/public/browser/notification_service.h" #include "content/public/browser/render_process_host.h" #include "extensions/browser/lazy_background_task_queue.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/extension_api.h" #include "extensions/common/extension_urls.h" #include "extensions/common/manifest_handlers/incognito_info.h" @@ -699,7 +699,7 @@ void EventRouter::IncrementInFlightEvents(Profile* profile, // Only increment in-flight events if the lazy background page is active, // because that's the only time we'll get an ACK. if (BackgroundInfo::HasLazyBackgroundPage(extension)) { - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = ExtensionSystem::Get(profile)->process_manager(); ExtensionHost* host = pm->GetBackgroundHostForExtension(extension->id()); if (host) @@ -709,7 +709,7 @@ void EventRouter::IncrementInFlightEvents(Profile* profile, void EventRouter::OnEventAck(Profile* profile, const std::string& extension_id) { - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = ExtensionSystem::Get(profile)->process_manager(); ExtensionHost* host = pm->GetBackgroundHostForExtension(extension_id); // The event ACK is routed to the background host, so this should never be diff --git a/chrome/browser/extensions/extension_bindings_apitest.cc b/chrome/browser/extensions/extension_bindings_apitest.cc index 2fbaeb8..fb5c114 100644 --- a/chrome/browser/extensions/extension_bindings_apitest.cc +++ b/chrome/browser/extensions/extension_bindings_apitest.cc @@ -7,12 +7,12 @@ #include "chrome/browser/extensions/api/permissions/permissions_api.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_test_message_listener.h" #include "chrome/browser/ui/browser.h" #include "chrome/test/base/ui_test_utils.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/browser/process_manager.h" namespace extensions { namespace { @@ -42,7 +42,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, LastError) { test_data_dir_.AppendASCII("browsertest").AppendASCII("last_error"))); // Get the ExtensionHost that is hosting our background page. - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); extensions::ExtensionHost* host = FindHostWithPath(manager, "/bg.html", 1); diff --git a/chrome/browser/extensions/extension_browsertest.cc b/chrome/browser/extensions/extension_browsertest.cc index 7497884..d64b755 100644 --- a/chrome/browser/extensions/extension_browsertest.cc +++ b/chrome/browser/extensions/extension_browsertest.cc @@ -557,15 +557,17 @@ void ExtensionBrowserTest::NavigateInRenderer(content::WebContents* contents, } extensions::ExtensionHost* ExtensionBrowserTest::FindHostWithPath( - ExtensionProcessManager* manager, + extensions::ProcessManager* manager, const std::string& path, int expected_hosts) { extensions::ExtensionHost* host = NULL; int num_hosts = 0; - ExtensionProcessManager::ExtensionHostSet background_hosts = + extensions::ProcessManager::ExtensionHostSet background_hosts = manager->background_hosts(); - for (ExtensionProcessManager::const_iterator iter = background_hosts.begin(); - iter != background_hosts.end(); ++iter) { + for (extensions::ProcessManager::const_iterator iter = + background_hosts.begin(); + iter != background_hosts.end(); + ++iter) { if ((*iter)->GetURL().path() == path) { EXPECT_FALSE(host); host = *iter; diff --git a/chrome/browser/extensions/extension_browsertest.h b/chrome/browser/extensions/extension_browsertest.h index ff930ea..d1183cf 100644 --- a/chrome/browser/extensions/extension_browsertest.h +++ b/chrome/browser/extensions/extension_browsertest.h @@ -22,11 +22,14 @@ #include "content/public/browser/web_contents.h" #include "extensions/common/manifest.h" -class ExtensionProcessManager; class ExtensionService; class ExtensionSet; class Profile; +namespace extensions { +class ProcessManager; +} + // Base class for extension browser tests. Provides utilities for loading, // unloading, and installing extensions. class ExtensionBrowserTest : virtual public InProcessBrowserTest { @@ -262,9 +265,11 @@ class ExtensionBrowserTest : virtual public InProcessBrowserTest { // Looks for an ExtensionHost whose URL has the given path component // (including leading slash). Also verifies that the expected number of hosts // are loaded. - extensions::ExtensionHost* FindHostWithPath(ExtensionProcessManager* manager, - const std::string& path, - int expected_hosts); + extensions::ExtensionHost* FindHostWithPath( + extensions::ProcessManager* manager, + const std::string& path, + int expected_hosts); + // Returns // extensions::browsertest_util::ExecuteScriptInBackgroundPage(profile(), // extension_id, script). diff --git a/chrome/browser/extensions/extension_crash_recovery_browsertest.cc b/chrome/browser/extensions/extension_crash_recovery_browsertest.cc index 4ee676a..f5eac57 100644 --- a/chrome/browser/extensions/extension_crash_recovery_browsertest.cc +++ b/chrome/browser/extensions/extension_crash_recovery_browsertest.cc @@ -5,7 +5,6 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/notifications/balloon.h" @@ -24,6 +23,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" #include "content/public/common/result_codes.h" +#include "extensions/browser/process_manager.h" #include "ui/message_center/message_center.h" #include "ui/message_center/message_center_switches.h" #include "ui/message_center/message_center_util.h" @@ -51,7 +51,7 @@ class ExtensionCrashRecoveryTestBase : public ExtensionBrowserTest { return browser()->profile()->GetExtensionService(); } - ExtensionProcessManager* GetExtensionProcessManager() { + extensions::ProcessManager* GetProcessManager() { return extensions::ExtensionSystem::Get(browser()->profile())-> process_manager(); } @@ -60,14 +60,14 @@ class ExtensionCrashRecoveryTestBase : public ExtensionBrowserTest { const Extension* extension = GetExtensionService()->GetExtensionById(extension_id, false); ASSERT_TRUE(extension); - extensions::ExtensionHost* extension_host = GetExtensionProcessManager()-> + extensions::ExtensionHost* extension_host = GetProcessManager()-> GetBackgroundHostForExtension(extension_id); ASSERT_TRUE(extension_host); base::KillProcess(extension_host->render_process_host()->GetHandle(), content::RESULT_CODE_KILLED, false); ASSERT_TRUE(WaitForExtensionCrash(extension_id)); - ASSERT_FALSE(GetExtensionProcessManager()-> + ASSERT_FALSE(GetProcessManager()-> GetBackgroundHostForExtension(extension_id)); // Wait for extension crash balloon to appear. @@ -78,12 +78,12 @@ class ExtensionCrashRecoveryTestBase : public ExtensionBrowserTest { const Extension* extension = GetExtensionService()->extensions()->GetByID(extension_id); ASSERT_TRUE(extension); - extensions::ExtensionHost* extension_host = GetExtensionProcessManager()-> + extensions::ExtensionHost* extension_host = GetProcessManager()-> GetBackgroundHostForExtension(extension_id); ASSERT_TRUE(extension_host); - ExtensionProcessManager::ViewSet all_views = - GetExtensionProcessManager()->GetAllViews(); - ExtensionProcessManager::ViewSet::const_iterator it = + extensions::ProcessManager::ViewSet all_views = + GetProcessManager()->GetAllViews(); + extensions::ProcessManager::ViewSet::const_iterator it = all_views.find(extension_host->host_contents()->GetRenderViewHost()); ASSERT_FALSE(it == all_views.end()); ASSERT_TRUE(extension_host->IsRenderViewLive()); diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc index 9fc3be3..d05bcc8 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.cc +++ b/chrome/browser/extensions/extension_function_dispatcher.cc @@ -322,7 +322,7 @@ void ExtensionFunctionDispatcher::DispatchWithCallback( // TODO(yzshen): There is some shared logic between this method and // DispatchOnIOThread(). It is nice to deduplicate. ExtensionService* service = profile()->GetExtensionService(); - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = extensions::ExtensionSystem::Get(profile())->process_manager(); extensions::ProcessMap* process_map = service->process_map(); if (!service || !process_map) diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index 4379dcb..77aee96 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -18,7 +18,6 @@ #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/extensions/error_console/error_console.h" #include "chrome/browser/extensions/event_router.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_tab_util.h" @@ -52,6 +51,7 @@ #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_view.h" #include "extensions/browser/extension_error.h" +#include "extensions/browser/process_manager.h" #include "extensions/browser/view_type_utils.h" #include "extensions/common/extension_urls.h" #include "grit/browser_resources.h" @@ -480,15 +480,13 @@ void ExtensionHost::CloseContents(WebContents* contents) { } void ExtensionHost::WillRunJavaScriptDialog() { - ExtensionProcessManager* pm = - ExtensionSystem::Get(profile_)->process_manager(); + ProcessManager* pm = ExtensionSystem::Get(profile_)->process_manager(); if (pm) pm->IncrementLazyKeepaliveCount(extension()); } void ExtensionHost::DidCloseJavaScriptDialog() { - ExtensionProcessManager* pm = - ExtensionSystem::Get(profile_)->process_manager(); + ProcessManager* pm = ExtensionSystem::Get(profile_)->process_manager(); if (pm) pm->DecrementLazyKeepaliveCount(extension()); } @@ -573,15 +571,13 @@ void ExtensionHost::OnEventAck() { } void ExtensionHost::OnIncrementLazyKeepaliveCount() { - ExtensionProcessManager* pm = - ExtensionSystem::Get(profile_)->process_manager(); + ProcessManager* pm = ExtensionSystem::Get(profile_)->process_manager(); if (pm) pm->IncrementLazyKeepaliveCount(extension()); } void ExtensionHost::OnDecrementLazyKeepaliveCount() { - ExtensionProcessManager* pm = - ExtensionSystem::Get(profile_)->process_manager(); + ProcessManager* pm = ExtensionSystem::Get(profile_)->process_manager(); if (pm) pm->DecrementLazyKeepaliveCount(extension()); } diff --git a/chrome/browser/extensions/extension_host_factory.cc b/chrome/browser/extensions/extension_host_factory.cc index 96c86f3..bf464c2 100644 --- a/chrome/browser/extensions/extension_host_factory.cc +++ b/chrome/browser/extensions/extension_host_factory.cc @@ -5,13 +5,13 @@ #include "chrome/browser/extensions/extension_host_factory.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/url_constants.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/manifest_handlers/incognito_info.h" #include "extensions/common/view_type.h" @@ -34,7 +34,7 @@ ExtensionHost* CreateViewHostForExtension(const Extension* extension, DCHECK(profile); // A NULL browser may only be given for dialogs. DCHECK(browser || view_type == VIEW_TYPE_EXTENSION_DIALOG); - ExtensionProcessManager* pm = + ProcessManager* pm = ExtensionSystem::Get(profile)->process_manager(); content::SiteInstance* site_instance = pm->GetSiteInstanceForURL(url); ExtensionHost* host = diff --git a/chrome/browser/extensions/extension_info_map.cc b/chrome/browser/extensions/extension_info_map.cc index 4d4fb22..26361cf 100644 --- a/chrome/browser/extensions/extension_info_map.cc +++ b/chrome/browser/extensions/extension_info_map.cc @@ -90,7 +90,7 @@ base::Time ExtensionInfoMap::GetInstallTime( bool ExtensionInfoMap::IsIncognitoEnabled( const std::string& extension_id) const { - // Keep in sync with duplicate in extension_process_manager.cc. + // Keep in sync with duplicate in extensions/browser/process_manager.cc. ExtraDataMap::const_iterator iter = extra_data_.find(extension_id); if (iter != extra_data_.end()) return iter->second.incognito_enabled; diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc deleted file mode 100644 index b11eecf..0000000 --- a/chrome/browser/extensions/extension_process_manager.cc +++ /dev/null @@ -1,853 +0,0 @@ -// Copyright (c) 2012 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/extension_process_manager.h" - -#include "base/bind.h" -#include "base/command_line.h" -#include "base/lazy_instance.h" -#include "base/logging.h" -#include "base/message_loop/message_loop.h" -#include "base/metrics/histogram.h" -#include "base/stl_util.h" -#include "base/strings/string_number_conversions.h" -#include "base/time/time.h" -#include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/extensions/api/runtime/runtime_api.h" -#include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/extensions/extension_system.h" -#include "chrome/browser/extensions/extension_util.h" -#include "chrome/common/extensions/background_info.h" -#include "chrome/common/extensions/extension.h" -#include "chrome/common/extensions/extension_messages.h" -#include "content/public/browser/browser_context.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/devtools_agent_host.h" -#include "content/public/browser/devtools_manager.h" -#include "content/public/browser/notification_service.h" -#include "content/public/browser/render_process_host.h" -#include "content/public/browser/render_view_host.h" -#include "content/public/browser/site_instance.h" -#include "content/public/browser/web_contents.h" -#include "content/public/browser/web_contents_delegate.h" -#include "content/public/browser/web_contents_observer.h" -#include "content/public/browser/web_contents_user_data.h" -#include "content/public/common/renderer_preferences.h" -#include "extensions/browser/extensions_browser_client.h" -#include "extensions/browser/view_type_utils.h" -#include "extensions/common/manifest_handlers/incognito_info.h" -#include "extensions/common/switches.h" - -#if defined(OS_MACOSX) -#include "chrome/browser/extensions/extension_host_mac.h" -#endif - -using content::BrowserContext; -using content::RenderViewHost; -using content::SiteInstance; -using content::WebContents; -using extensions::BackgroundInfo; -using extensions::BackgroundManifestHandler; -using extensions::Extension; -using extensions::ExtensionHost; -using extensions::ExtensionsBrowserClient; -using extensions::ExtensionSystem; - -class RenderViewHostDestructionObserver; -DEFINE_WEB_CONTENTS_USER_DATA_KEY(RenderViewHostDestructionObserver); - -namespace { - -std::string GetExtensionID(RenderViewHost* render_view_host) { - // This works for both apps and extensions because the site has been - // normalized to the extension URL for apps. - if (!render_view_host->GetSiteInstance()) - return std::string(); - - return render_view_host->GetSiteInstance()->GetSiteURL().host(); -} - -void OnRenderViewHostUnregistered(BrowserContext* context, - RenderViewHost* render_view_host) { - content::NotificationService::current()->Notify( - chrome::NOTIFICATION_EXTENSION_VIEW_UNREGISTERED, - content::Source<BrowserContext>(context), - content::Details<RenderViewHost>(render_view_host)); -} - -// Incognito profiles use this process manager. It is mostly a shim that decides -// whether to fall back on the original profile's ExtensionProcessManager based -// on whether a given extension uses "split" or "spanning" incognito behavior. -class IncognitoExtensionProcessManager : public ExtensionProcessManager { - public: - IncognitoExtensionProcessManager(BrowserContext* incognito_context, - BrowserContext* original_context); - virtual ~IncognitoExtensionProcessManager(); - virtual ExtensionHost* CreateBackgroundHost(const Extension* extension, - const GURL& url) OVERRIDE; - virtual SiteInstance* GetSiteInstanceForURL(const GURL& url) OVERRIDE; - - private: - // Returns true if the extension is allowed to run in incognito mode. - bool IsIncognitoEnabled(const Extension* extension); - - ExtensionProcessManager* original_manager_; - - DISALLOW_COPY_AND_ASSIGN(IncognitoExtensionProcessManager); -}; - -static void CreateBackgroundHostForExtensionLoad( - ExtensionProcessManager* manager, const Extension* extension) { - DVLOG(1) << "CreateBackgroundHostForExtensionLoad"; - if (BackgroundInfo::HasPersistentBackgroundPage(extension)) - manager->CreateBackgroundHost(extension, - BackgroundInfo::GetBackgroundURL(extension)); -} - -} // namespace - -class RenderViewHostDestructionObserver - : public content::WebContentsObserver, - public content::WebContentsUserData<RenderViewHostDestructionObserver> { - public: - virtual ~RenderViewHostDestructionObserver() {} - - private: - explicit RenderViewHostDestructionObserver(WebContents* web_contents) - : WebContentsObserver(web_contents) { - BrowserContext* context = web_contents->GetBrowserContext(); - process_manager_ = - ExtensionSystem::GetForBrowserContext(context)->process_manager(); - } - - friend class content::WebContentsUserData<RenderViewHostDestructionObserver>; - - // content::WebContentsObserver overrides. - virtual void RenderViewDeleted(RenderViewHost* render_view_host) OVERRIDE { - process_manager_->UnregisterRenderViewHost(render_view_host); - } - - ExtensionProcessManager* process_manager_; - - DISALLOW_COPY_AND_ASSIGN(RenderViewHostDestructionObserver); -}; - -struct ExtensionProcessManager::BackgroundPageData { - // The count of things keeping the lazy background page alive. - int lazy_keepalive_count; - - // This is used with the ShouldSuspend message, to ensure that the extension - // remained idle between sending the message and receiving the ack. - int close_sequence_id; - - // True if the page responded to the ShouldSuspend message and is currently - // dispatching the suspend event. During this time any events that arrive will - // cancel the suspend process and an onSuspendCanceled event will be - // dispatched to the page. - bool is_closing; - - // Keeps track of when this page was last suspended. Used for perf metrics. - linked_ptr<base::ElapsedTimer> since_suspended; - - BackgroundPageData() - : lazy_keepalive_count(0), close_sequence_id(0), is_closing(false) {} -}; - -// -// ExtensionProcessManager -// - -// static -ExtensionProcessManager* ExtensionProcessManager::Create( - BrowserContext* context) { - if (context->IsOffTheRecord()) { - BrowserContext* original_context = - ExtensionsBrowserClient::Get()->GetOriginalContext(context); - return new IncognitoExtensionProcessManager(context, original_context); - } - return new ExtensionProcessManager(context, context); -} - -ExtensionProcessManager::ExtensionProcessManager( - BrowserContext* context, - BrowserContext* original_context) - : site_instance_(SiteInstance::Create(context)), - defer_background_host_creation_(false), - startup_background_hosts_created_(false), - devtools_callback_(base::Bind( - &ExtensionProcessManager::OnDevToolsStateChanged, - base::Unretained(this))), - weak_ptr_factory_(this) { - registrar_.Add(this, chrome::NOTIFICATION_EXTENSIONS_READY, - content::Source<BrowserContext>(original_context)); - registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, - content::Source<BrowserContext>(original_context)); - registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, - content::Source<BrowserContext>(original_context)); - registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, - content::Source<BrowserContext>(context)); - registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_VIEW_SHOULD_CLOSE, - content::Source<BrowserContext>(context)); - registrar_.Add(this, content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED, - content::NotificationService::AllSources()); - registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_CONNECTED, - content::NotificationService::AllSources()); - registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CREATED, - content::Source<BrowserContext>(original_context)); - registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED, - content::Source<BrowserContext>(context)); - if (context->IsOffTheRecord()) { - registrar_.Add(this, chrome::NOTIFICATION_PROFILE_DESTROYED, - content::Source<BrowserContext>(original_context)); - } - - event_page_idle_time_ = base::TimeDelta::FromSeconds(10); - unsigned idle_time_sec = 0; - if (base::StringToUint(CommandLine::ForCurrentProcess()->GetSwitchValueASCII( - extensions::switches::kEventPageIdleTime), &idle_time_sec)) { - event_page_idle_time_ = base::TimeDelta::FromSeconds(idle_time_sec); - } - event_page_suspending_time_ = base::TimeDelta::FromSeconds(5); - unsigned suspending_time_sec = 0; - if (base::StringToUint(CommandLine::ForCurrentProcess()->GetSwitchValueASCII( - extensions::switches::kEventPageSuspendingTime), - &suspending_time_sec)) { - event_page_suspending_time_ = - base::TimeDelta::FromSeconds(suspending_time_sec); - } - - content::DevToolsManager::GetInstance()->AddAgentStateCallback( - devtools_callback_); -} - -ExtensionProcessManager::~ExtensionProcessManager() { - CloseBackgroundHosts(); - DCHECK(background_hosts_.empty()); - content::DevToolsManager::GetInstance()->RemoveAgentStateCallback( - devtools_callback_); -} - -const ExtensionProcessManager::ViewSet -ExtensionProcessManager::GetAllViews() const { - ViewSet result; - for (ExtensionRenderViews::const_iterator iter = - all_extension_views_.begin(); - iter != all_extension_views_.end(); ++iter) { - result.insert(iter->first); - } - return result; -} - -ExtensionHost* ExtensionProcessManager::CreateBackgroundHost( - const Extension* extension, const GURL& url) { - DVLOG(1) << "CreateBackgroundHost " << url.spec(); - // Hosted apps are taken care of from BackgroundContentsService. Ignore them - // here. - if (extension->is_hosted_app()) - return NULL; - - // Don't create multiple background hosts for an extension. - if (ExtensionHost* host = GetBackgroundHostForExtension(extension->id())) - return host; // TODO(kalman): return NULL here? It might break things... - - ExtensionHost* host = -#if defined(OS_MACOSX) - new extensions::ExtensionHostMac( - extension, GetSiteInstanceForURL(url), url, - extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE); -#else - new ExtensionHost(extension, GetSiteInstanceForURL(url), url, - extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE); -#endif - - host->CreateRenderViewSoon(); - OnBackgroundHostCreated(host); - return host; -} - -ExtensionHost* ExtensionProcessManager::GetBackgroundHostForExtension( - const std::string& extension_id) { - for (ExtensionHostSet::iterator iter = background_hosts_.begin(); - iter != background_hosts_.end(); ++iter) { - ExtensionHost* host = *iter; - if (host->extension_id() == extension_id) - return host; - } - return NULL; -} - -std::set<RenderViewHost*> - ExtensionProcessManager::GetRenderViewHostsForExtension( - const std::string& extension_id) { - std::set<RenderViewHost*> result; - - SiteInstance* site_instance = GetSiteInstanceForURL( - Extension::GetBaseURLFromExtensionId(extension_id)); - if (!site_instance) - return result; - - // Gather up all the views for that site. - for (ExtensionRenderViews::iterator view = all_extension_views_.begin(); - view != all_extension_views_.end(); ++view) { - if (view->first->GetSiteInstance() == site_instance) - result.insert(view->first); - } - - return result; -} - -const Extension* ExtensionProcessManager::GetExtensionForRenderViewHost( - RenderViewHost* render_view_host) { - if (!render_view_host->GetSiteInstance()) - return NULL; - - ExtensionService* service = ExtensionSystem::GetForBrowserContext( - GetBrowserContext())->extension_service(); - if (!service) - return NULL; - - return service->extensions()->GetByID(GetExtensionID(render_view_host)); -} - -void ExtensionProcessManager::UnregisterRenderViewHost( - RenderViewHost* render_view_host) { - ExtensionRenderViews::iterator view = - all_extension_views_.find(render_view_host); - if (view == all_extension_views_.end()) - return; - - OnRenderViewHostUnregistered(GetBrowserContext(), render_view_host); - extensions::ViewType view_type = view->second; - all_extension_views_.erase(view); - - // Keepalive count, balanced in RegisterRenderViewHost. - if (view_type != extensions::VIEW_TYPE_INVALID && - view_type != extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { - const Extension* extension = GetExtensionForRenderViewHost( - render_view_host); - if (extension) - DecrementLazyKeepaliveCount(extension); - } -} - -void ExtensionProcessManager::RegisterRenderViewHost( - RenderViewHost* render_view_host) { - const Extension* extension = GetExtensionForRenderViewHost( - render_view_host); - if (!extension) - return; - - WebContents* web_contents = WebContents::FromRenderViewHost(render_view_host); - all_extension_views_[render_view_host] = - extensions::GetViewType(web_contents); - - // Keep the lazy background page alive as long as any non-background-page - // extension views are visible. Keepalive count balanced in - // UnregisterRenderViewHost. - IncrementLazyKeepaliveCountForView(render_view_host); -} - -SiteInstance* ExtensionProcessManager::GetSiteInstanceForURL(const GURL& url) { - return site_instance_->GetRelatedSiteInstance(url); -} - -bool ExtensionProcessManager::IsBackgroundHostClosing( - const std::string& extension_id) { - ExtensionHost* host = GetBackgroundHostForExtension(extension_id); - return (host && background_page_data_[extension_id].is_closing); -} - -int ExtensionProcessManager::GetLazyKeepaliveCount(const Extension* extension) { - if (!BackgroundInfo::HasLazyBackgroundPage(extension)) - return 0; - - return background_page_data_[extension->id()].lazy_keepalive_count; -} - -int ExtensionProcessManager::IncrementLazyKeepaliveCount( - const Extension* extension) { - if (!BackgroundInfo::HasLazyBackgroundPage(extension)) - return 0; - - int& count = background_page_data_[extension->id()].lazy_keepalive_count; - if (++count == 1) - OnLazyBackgroundPageActive(extension->id()); - - return count; -} - -int ExtensionProcessManager::DecrementLazyKeepaliveCount( - const Extension* extension) { - if (!BackgroundInfo::HasLazyBackgroundPage(extension)) - return 0; - - int& count = background_page_data_[extension->id()].lazy_keepalive_count; - DCHECK_GT(count, 0); - - // If we reach a zero keepalive count when the lazy background page is about - // to be closed, incrementing close_sequence_id will cancel the close - // sequence and cause the background page to linger. So check is_closing - // before initiating another close sequence. - if (--count == 0 && !background_page_data_[extension->id()].is_closing) { - base::MessageLoop::current()->PostDelayedTask( - FROM_HERE, - base::Bind(&ExtensionProcessManager::OnLazyBackgroundPageIdle, - weak_ptr_factory_.GetWeakPtr(), extension->id(), - ++background_page_data_[extension->id()].close_sequence_id), - event_page_idle_time_); - } - - return count; -} - -void ExtensionProcessManager::IncrementLazyKeepaliveCountForView( - RenderViewHost* render_view_host) { - WebContents* web_contents = - WebContents::FromRenderViewHost(render_view_host); - extensions::ViewType view_type = extensions::GetViewType(web_contents); - if (view_type != extensions::VIEW_TYPE_INVALID && - view_type != extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { - const Extension* extension = GetExtensionForRenderViewHost( - render_view_host); - if (extension) - IncrementLazyKeepaliveCount(extension); - } -} - -void ExtensionProcessManager::OnLazyBackgroundPageIdle( - const std::string& extension_id, int sequence_id) { - ExtensionHost* host = GetBackgroundHostForExtension(extension_id); - if (host && !background_page_data_[extension_id].is_closing && - sequence_id == background_page_data_[extension_id].close_sequence_id) { - // Tell the renderer we are about to close. This is a simple ping that the - // renderer will respond to. The purpose is to control sequencing: if the - // extension remains idle until the renderer responds with an ACK, then we - // know that the extension process is ready to shut down. If our - // close_sequence_id has already changed, then we would ignore the - // ShouldSuspendAck, so we don't send the ping. - host->render_view_host()->Send(new ExtensionMsg_ShouldSuspend( - extension_id, sequence_id)); - } -} - -void ExtensionProcessManager::OnLazyBackgroundPageActive( - const std::string& extension_id) { - ExtensionHost* host = GetBackgroundHostForExtension(extension_id); - if (host && !background_page_data_[extension_id].is_closing) { - // Cancel the current close sequence by changing the close_sequence_id, - // which causes us to ignore the next ShouldSuspendAck. - ++background_page_data_[extension_id].close_sequence_id; - } -} - -void ExtensionProcessManager::OnShouldSuspendAck( - const std::string& extension_id, int sequence_id) { - ExtensionHost* host = GetBackgroundHostForExtension(extension_id); - if (host && - sequence_id == background_page_data_[extension_id].close_sequence_id) { - host->render_view_host()->Send(new ExtensionMsg_Suspend(extension_id)); - } -} - -void ExtensionProcessManager::OnSuspendAck(const std::string& extension_id) { - background_page_data_[extension_id].is_closing = true; - int sequence_id = background_page_data_[extension_id].close_sequence_id; - base::MessageLoop::current()->PostDelayedTask( - FROM_HERE, - base::Bind(&ExtensionProcessManager::CloseLazyBackgroundPageNow, - weak_ptr_factory_.GetWeakPtr(), extension_id, sequence_id), - event_page_suspending_time_); -} - -void ExtensionProcessManager::CloseLazyBackgroundPageNow( - const std::string& extension_id, int sequence_id) { - ExtensionHost* host = GetBackgroundHostForExtension(extension_id); - if (host && - sequence_id == background_page_data_[extension_id].close_sequence_id) { - ExtensionHost* host = GetBackgroundHostForExtension(extension_id); - if (host) - CloseBackgroundHost(host); - } -} - -void ExtensionProcessManager::OnNetworkRequestStarted( - RenderViewHost* render_view_host) { - ExtensionHost* host = GetBackgroundHostForExtension( - GetExtensionID(render_view_host)); - if (host && host->render_view_host() == render_view_host) - IncrementLazyKeepaliveCount(host->extension()); -} - -void ExtensionProcessManager::OnNetworkRequestDone( - RenderViewHost* render_view_host) { - ExtensionHost* host = GetBackgroundHostForExtension( - GetExtensionID(render_view_host)); - if (host && host->render_view_host() == render_view_host) - DecrementLazyKeepaliveCount(host->extension()); -} - -void ExtensionProcessManager::CancelSuspend(const Extension* extension) { - bool& is_closing = background_page_data_[extension->id()].is_closing; - ExtensionHost* host = GetBackgroundHostForExtension(extension->id()); - if (host && is_closing) { - is_closing = false; - host->render_view_host()->Send( - new ExtensionMsg_CancelSuspend(extension->id())); - // This increment / decrement is to simulate an instantaneous event. This - // has the effect of invalidating close_sequence_id, preventing any in - // progress closes from completing and starting a new close process if - // necessary. - IncrementLazyKeepaliveCount(extension); - DecrementLazyKeepaliveCount(extension); - } -} - -void ExtensionProcessManager::DeferBackgroundHostCreation(bool defer) { - bool previous = defer_background_host_creation_; - defer_background_host_creation_ = defer; - - // If we were deferred, and we switch to non-deferred, then create the - // background hosts. - if (previous && !defer_background_host_creation_) - CreateBackgroundHostsForProfileStartup(); -} - -void ExtensionProcessManager::OnBrowserWindowReady() { - ExtensionService* service = ExtensionSystem::GetForBrowserContext( - GetBrowserContext())->extension_service(); - // On Chrome OS, a login screen is implemented as a browser. - // This browser has no extension service. In this case, - // service will be NULL. - if (!service || !service->is_ready()) - return; - - CreateBackgroundHostsForProfileStartup(); -} - -content::BrowserContext* ExtensionProcessManager::GetBrowserContext() const { - return site_instance_->GetBrowserContext(); -} - -void ExtensionProcessManager::Observe( - int type, - const content::NotificationSource& source, - const content::NotificationDetails& details) { - switch (type) { - case chrome::NOTIFICATION_EXTENSIONS_READY: - case chrome::NOTIFICATION_PROFILE_CREATED: { - CreateBackgroundHostsForProfileStartup(); - break; - } - - case chrome::NOTIFICATION_EXTENSION_LOADED: { - BrowserContext* context = content::Source<BrowserContext>(source).ptr(); - ExtensionService* service = - ExtensionSystem::GetForBrowserContext(context)->extension_service(); - if (service->is_ready()) { - const Extension* extension = - content::Details<const Extension>(details).ptr(); - CreateBackgroundHostForExtensionLoad(this, extension); - } - break; - } - - case chrome::NOTIFICATION_EXTENSION_UNLOADED: { - const Extension* extension = - content::Details<extensions::UnloadedExtensionInfo>( - details)->extension; - for (ExtensionHostSet::iterator iter = background_hosts_.begin(); - iter != background_hosts_.end(); ++iter) { - ExtensionHost* host = *iter; - if (host->extension_id() == extension->id()) { - CloseBackgroundHost(host); - break; - } - } - UnregisterExtension(extension->id()); - break; - } - - case chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED: { - ExtensionHost* host = content::Details<ExtensionHost>(details).ptr(); - if (background_hosts_.erase(host)) { - ClearBackgroundPageData(host->extension()->id()); - background_page_data_[host->extension()->id()].since_suspended.reset( - new base::ElapsedTimer()); - } - break; - } - - case chrome::NOTIFICATION_EXTENSION_HOST_VIEW_SHOULD_CLOSE: { - ExtensionHost* host = content::Details<ExtensionHost>(details).ptr(); - if (host->extension_host_type() == - extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) { - CloseBackgroundHost(host); - } - break; - } - - case content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED: { - // We get this notification both for new WebContents and when one - // has its RenderViewHost replaced (e.g. when a user does a cross-site - // navigation away from an extension URL). For the replaced case, we must - // unregister the old RVH so it doesn't count as an active view that would - // keep the event page alive. - WebContents* contents = content::Source<WebContents>(source).ptr(); - if (contents->GetBrowserContext() != GetBrowserContext()) - break; - - typedef std::pair<RenderViewHost*, RenderViewHost*> RVHPair; - RVHPair* switched_details = content::Details<RVHPair>(details).ptr(); - if (switched_details->first) - UnregisterRenderViewHost(switched_details->first); - - // The above will unregister a RVH when it gets swapped out with a new - // one. However we need to watch the WebContents to know when a RVH is - // deleted because the WebContents has gone away. - RenderViewHostDestructionObserver::CreateForWebContents(contents); - RegisterRenderViewHost(switched_details->second); - break; - } - - case content::NOTIFICATION_WEB_CONTENTS_CONNECTED: { - WebContents* contents = content::Source<WebContents>(source).ptr(); - if (contents->GetBrowserContext() != GetBrowserContext()) - break; - const Extension* extension = GetExtensionForRenderViewHost( - contents->GetRenderViewHost()); - if (!extension) - return; - - // RegisterRenderViewHost is called too early (before the process is - // available), so we need to wait until now to notify. - content::NotificationService::current()->Notify( - chrome::NOTIFICATION_EXTENSION_VIEW_REGISTERED, - content::Source<BrowserContext>(GetBrowserContext()), - content::Details<RenderViewHost>(contents->GetRenderViewHost())); - break; - } - - case chrome::NOTIFICATION_PROFILE_DESTROYED: { - // Close background hosts when the last browser is closed so that they - // have time to shutdown various objects on different threads. Our - // destructor is called too late in the shutdown sequence. - CloseBackgroundHosts(); - break; - } - - default: - NOTREACHED(); - } -} - -void ExtensionProcessManager::OnDevToolsStateChanged( - content::DevToolsAgentHost* agent_host, bool attached) { - RenderViewHost* rvh = agent_host->GetRenderViewHost(); - // Ignore unrelated notifications. - if (!rvh || - rvh->GetSiteInstance()->GetProcess()->GetBrowserContext() != - GetBrowserContext()) - return; - if (extensions::GetViewType(WebContents::FromRenderViewHost(rvh)) != - extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) - return; - const Extension* extension = GetExtensionForRenderViewHost(rvh); - if (!extension) - return; - if (attached) { - // Keep the lazy background page alive while it's being inspected. - CancelSuspend(extension); - IncrementLazyKeepaliveCount(extension); - } else { - DecrementLazyKeepaliveCount(extension); - } -} - -void ExtensionProcessManager::CreateBackgroundHostsForProfileStartup() { - if (startup_background_hosts_created_) - return; - - // Don't load background hosts now if the loading should be deferred. - // Instead they will be loaded when a browser window for this profile - // (or an incognito profile from this profile) is ready, or when - // DeferBackgroundHostCreation is called with false. - if (DeferLoadingBackgroundHosts()) - return; - - ExtensionService* service = ExtensionSystem::GetForBrowserContext( - GetBrowserContext())->extension_service(); - DCHECK(service); - for (ExtensionSet::const_iterator extension = service->extensions()->begin(); - extension != service->extensions()->end(); ++extension) { - CreateBackgroundHostForExtensionLoad(this, extension->get()); - - extensions::RuntimeEventRouter::DispatchOnStartupEvent( - GetBrowserContext(), (*extension)->id()); - } - startup_background_hosts_created_ = true; - - // Background pages should only be loaded once. To prevent any further loads - // occurring, we remove the notification listeners. - BrowserContext* original_context = - ExtensionsBrowserClient::Get()->GetOriginalContext(GetBrowserContext()); - if (registrar_.IsRegistered( - this, - chrome::NOTIFICATION_PROFILE_CREATED, - content::Source<BrowserContext>(original_context))) { - registrar_.Remove(this, - chrome::NOTIFICATION_PROFILE_CREATED, - content::Source<BrowserContext>(original_context)); - } - if (registrar_.IsRegistered( - this, - chrome::NOTIFICATION_EXTENSIONS_READY, - content::Source<BrowserContext>(original_context))) { - registrar_.Remove(this, - chrome::NOTIFICATION_EXTENSIONS_READY, - content::Source<BrowserContext>(original_context)); - } -} - -void ExtensionProcessManager::OnBackgroundHostCreated(ExtensionHost* host) { - DCHECK_EQ(GetBrowserContext(), host->browser_context()); - background_hosts_.insert(host); - - if (BackgroundInfo::HasLazyBackgroundPage(host->extension())) { - linked_ptr<base::ElapsedTimer> since_suspended( - background_page_data_[host->extension()->id()]. - since_suspended.release()); - if (since_suspended.get()) { - UMA_HISTOGRAM_LONG_TIMES("Extensions.EventPageIdleTime", - since_suspended->Elapsed()); - } - } -} - -void ExtensionProcessManager::CloseBackgroundHost(ExtensionHost* host) { - CHECK(host->extension_host_type() == - extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE); - delete host; - // |host| should deregister itself from our structures. - CHECK(background_hosts_.find(host) == background_hosts_.end()); -} - -void ExtensionProcessManager::CloseBackgroundHosts() { - for (ExtensionHostSet::iterator iter = background_hosts_.begin(); - iter != background_hosts_.end(); ) { - ExtensionHostSet::iterator current = iter++; - delete *current; - } -} - -void ExtensionProcessManager::UnregisterExtension( - const std::string& extension_id) { - // The lazy_keepalive_count may be greater than zero at this point because - // RenderViewHosts are still alive. During extension reloading, they will - // decrement the lazy_keepalive_count to negative for the new extension - // instance when they are destroyed. Since we are erasing the background page - // data for the unloaded extension, unregister the RenderViewHosts too. - BrowserContext* context = GetBrowserContext(); - for (ExtensionRenderViews::iterator it = all_extension_views_.begin(); - it != all_extension_views_.end(); ) { - if (GetExtensionID(it->first) == extension_id) { - OnRenderViewHostUnregistered(context, it->first); - all_extension_views_.erase(it++); - } else { - ++it; - } - } - - background_page_data_.erase(extension_id); -} - -void ExtensionProcessManager::ClearBackgroundPageData( - const std::string& extension_id) { - background_page_data_.erase(extension_id); - - // Re-register all RenderViews for this extension. We do this to restore - // the lazy_keepalive_count (if any) to properly reflect the number of open - // views. - for (ExtensionRenderViews::const_iterator it = all_extension_views_.begin(); - it != all_extension_views_.end(); ++it) { - if (GetExtensionID(it->first) == extension_id) - IncrementLazyKeepaliveCountForView(it->first); - } -} - -bool ExtensionProcessManager::DeferLoadingBackgroundHosts() const { - // Don't load background hosts now if the loading should be deferred. - if (defer_background_host_creation_) - return true; - - // The extensions embedder may have special rules about background hosts. - return ExtensionsBrowserClient::Get()->DeferLoadingBackgroundHosts( - GetBrowserContext()); -} - -// -// IncognitoExtensionProcessManager -// - -IncognitoExtensionProcessManager::IncognitoExtensionProcessManager( - BrowserContext* incognito_context, - BrowserContext* original_context) - : ExtensionProcessManager(incognito_context, original_context), - original_manager_(extensions::ExtensionSystem::GetForBrowserContext( - original_context)->process_manager()) { - DCHECK(incognito_context->IsOffTheRecord()); - - // The original profile will have its own ExtensionProcessManager to - // load the background pages of the spanning extensions. This process - // manager need only worry about the split mode extensions, which is handled - // in the NOTIFICATION_BROWSER_WINDOW_READY notification handler. - registrar_.Remove(this, chrome::NOTIFICATION_EXTENSIONS_READY, - content::Source<BrowserContext>(original_context)); - registrar_.Remove(this, chrome::NOTIFICATION_PROFILE_CREATED, - content::Source<BrowserContext>(original_context)); -} - -IncognitoExtensionProcessManager::~IncognitoExtensionProcessManager() { - // TODO(yoz): This cleanup code belongs in the MenuManager. - // Remove "incognito" "split" mode context menu items. - ExtensionService* service = ExtensionSystem::GetForBrowserContext( - GetBrowserContext())->extension_service(); - if (service) - service->menu_manager()->RemoveAllIncognitoContextItems(); -} - -ExtensionHost* IncognitoExtensionProcessManager::CreateBackgroundHost( - const Extension* extension, const GURL& url) { - if (extensions::IncognitoInfo::IsSplitMode(extension)) { - if (IsIncognitoEnabled(extension)) - return ExtensionProcessManager::CreateBackgroundHost(extension, url); - } else { - // Do nothing. If an extension is spanning, then its original-profile - // background page is shared with incognito, so we don't create another. - } - return NULL; -} - -SiteInstance* IncognitoExtensionProcessManager::GetSiteInstanceForURL( - const GURL& url) { - ExtensionService* service = ExtensionSystem::GetForBrowserContext( - GetBrowserContext())->extension_service(); - if (service) { - const Extension* extension = - service->extensions()->GetExtensionOrAppByURL(url); - if (extension && - !extensions::IncognitoInfo::IsSplitMode(extension)) { - return original_manager_->GetSiteInstanceForURL(url); - } - } - return ExtensionProcessManager::GetSiteInstanceForURL(url); -} - -bool IncognitoExtensionProcessManager::IsIncognitoEnabled( - const Extension* extension) { - // Keep in sync with duplicate in extension_info_map.cc. - ExtensionService* service = ExtensionSystem::GetForBrowserContext( - GetBrowserContext())->extension_service(); - return extension_util::IsIncognitoEnabled(extension->id(), service); -} diff --git a/chrome/browser/extensions/extension_process_manager.h b/chrome/browser/extensions/extension_process_manager.h deleted file mode 100644 index a2fefb1..0000000 --- a/chrome/browser/extensions/extension_process_manager.h +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright (c) 2012 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_EXTENSION_PROCESS_MANAGER_H_ -#define CHROME_BROWSER_EXTENSIONS_EXTENSION_PROCESS_MANAGER_H_ - -#include <map> -#include <set> -#include <string> - -#include "base/callback.h" -#include "base/compiler_specific.h" -#include "base/memory/ref_counted.h" -#include "base/memory/weak_ptr.h" -#include "base/time/time.h" -#include "content/public/browser/notification_observer.h" -#include "content/public/browser/notification_registrar.h" -#include "extensions/common/view_type.h" - -class GURL; - -namespace content { -class BrowserContext; -class DevToolsAgentHost; -class RenderViewHost; -class SiteInstance; -}; - -namespace extensions { -class Extension; -class ExtensionHost; -} - -// Manages dynamic state of running Chromium extensions. There is one instance -// of this class per Profile. OTR Profiles have a separate instance that keeps -// track of split-mode extensions only. -class ExtensionProcessManager : public content::NotificationObserver { - public: - typedef std::set<extensions::ExtensionHost*> ExtensionHostSet; - typedef ExtensionHostSet::const_iterator const_iterator; - - static ExtensionProcessManager* Create(content::BrowserContext* context); - virtual ~ExtensionProcessManager(); - - const ExtensionHostSet& background_hosts() const { - return background_hosts_; - } - - typedef std::set<content::RenderViewHost*> ViewSet; - const ViewSet GetAllViews() const; - - // Creates a new UI-less extension instance. Like CreateViewHost, but not - // displayed anywhere. - virtual extensions::ExtensionHost* CreateBackgroundHost( - const extensions::Extension* extension, - const GURL& url); - - // Gets the ExtensionHost for the background page for an extension, or NULL if - // the extension isn't running or doesn't have a background page. - extensions::ExtensionHost* GetBackgroundHostForExtension( - const std::string& extension_id); - - // Returns the SiteInstance that the given URL belongs to. - // TODO(aa): This only returns correct results for extensions and packaged - // apps, not hosted apps. - virtual content::SiteInstance* GetSiteInstanceForURL(const GURL& url); - - // Unregisters a RenderViewHost as hosting any extension. - void UnregisterRenderViewHost(content::RenderViewHost* render_view_host); - - // Returns all RenderViewHosts that are registered for the specified - // extension. - std::set<content::RenderViewHost*> GetRenderViewHostsForExtension( - const std::string& extension_id); - - // Returns the extension associated with the specified RenderViewHost, or - // NULL. - const extensions::Extension* GetExtensionForRenderViewHost( - content::RenderViewHost* render_view_host); - - // Returns true if the (lazy) background host for the given extension has - // already been sent the unload event and is shutting down. - bool IsBackgroundHostClosing(const std::string& extension_id); - - // Getter and setter for the lazy background page's keepalive count. This is - // the count of how many outstanding "things" are keeping the page alive. - // When this reaches 0, we will begin the process of shutting down the page. - // "Things" include pending events, resource loads, and API calls. - int GetLazyKeepaliveCount(const extensions::Extension* extension); - int IncrementLazyKeepaliveCount(const extensions::Extension* extension); - int DecrementLazyKeepaliveCount(const extensions::Extension* extension); - - void IncrementLazyKeepaliveCountForView( - content::RenderViewHost* render_view_host); - - // Handles a response to the ShouldSuspend message, used for lazy background - // pages. - void OnShouldSuspendAck(const std::string& extension_id, int sequence_id); - - // Same as above, for the Suspend message. - void OnSuspendAck(const std::string& extension_id); - - // Tracks network requests for a given RenderViewHost, used to know - // when network activity is idle for lazy background pages. - void OnNetworkRequestStarted(content::RenderViewHost* render_view_host); - void OnNetworkRequestDone(content::RenderViewHost* render_view_host); - - // Prevents |extension|'s background page from being closed and sends the - // onSuspendCanceled() event to it. - void CancelSuspend(const extensions::Extension* extension); - - // If |defer| is true background host creation is to be deferred until this is - // called again with |defer| set to false, at which point all deferred - // background hosts will be created. Defaults to false. - void DeferBackgroundHostCreation(bool defer); - - // Ensures background hosts are loaded for a new browser window. - void OnBrowserWindowReady(); - - // Gets the BrowserContext associated with site_instance_ and all other - // related SiteInstances. - content::BrowserContext* GetBrowserContext() const; - - protected: - // If |context| is incognito pass the master context as |original_context|. - // Otherwise pass the same context for both. - ExtensionProcessManager(content::BrowserContext* context, - content::BrowserContext* original_context); - - // Called on browser shutdown to close our extension hosts. - void CloseBackgroundHosts(); - - // content::NotificationObserver: - virtual void Observe(int type, - const content::NotificationSource& source, - const content::NotificationDetails& details) OVERRIDE; - - // Load all background pages once the profile data is ready and the pages - // should be loaded. - void CreateBackgroundHostsForProfileStartup(); - - content::NotificationRegistrar registrar_; - - // The set of ExtensionHosts running viewless background extensions. - ExtensionHostSet background_hosts_; - - // A SiteInstance related to the SiteInstance for all extensions in - // this profile. We create it in such a way that a new - // browsing instance is created. This controls process grouping. - scoped_refptr<content::SiteInstance> site_instance_; - - private: - friend class ExtensionProcessManagerTest; - - // Extra information we keep for each extension's background page. - struct BackgroundPageData; - typedef std::string ExtensionId; - typedef std::map<ExtensionId, BackgroundPageData> BackgroundPageDataMap; - typedef std::map<content::RenderViewHost*, - extensions::ViewType> ExtensionRenderViews; - - // Called just after |host| is created so it can be registered in our lists. - void OnBackgroundHostCreated(extensions::ExtensionHost* host); - - // Close the given |host| iff it's a background page. - void CloseBackgroundHost(extensions::ExtensionHost* host); - - // These are called when the extension transitions between idle and active. - // They control the process of closing the background page when idle. - void OnLazyBackgroundPageIdle(const std::string& extension_id, - int sequence_id); - void OnLazyBackgroundPageActive(const std::string& extension_id); - void CloseLazyBackgroundPageNow(const std::string& extension_id, - int sequence_id); - - // Potentially registers a RenderViewHost, if it is associated with an - // extension. Does nothing if this is not an extension renderer. - void RegisterRenderViewHost(content::RenderViewHost* render_view_host); - - // Unregister RenderViewHosts and clear background page data for an extension - // which has been unloaded. - void UnregisterExtension(const std::string& extension_id); - - // Clears background page data for this extension. - void ClearBackgroundPageData(const std::string& extension_id); - - // Returns true if loading background pages should be deferred. - bool DeferLoadingBackgroundHosts() const; - - void OnDevToolsStateChanged(content::DevToolsAgentHost*, bool attached); - - // Contains all active extension-related RenderViewHost instances for all - // extensions. We also keep a cache of the host's view type, because that - // information is not accessible at registration/deregistration time. - ExtensionRenderViews all_extension_views_; - - BackgroundPageDataMap background_page_data_; - - // The time to delay between an extension becoming idle and - // sending a ShouldSuspend message; read from command-line switch. - base::TimeDelta event_page_idle_time_; - - // The time to delay between sending a ShouldSuspend message and - // sending a Suspend message; read from command-line switch. - base::TimeDelta event_page_suspending_time_; - - // If true, then creation of background hosts is suspended. - bool defer_background_host_creation_; - - // True if we have created the startup set of background hosts. - bool startup_background_hosts_created_; - - base::Callback<void(content::DevToolsAgentHost*, bool)> devtools_callback_; - - base::WeakPtrFactory<ExtensionProcessManager> weak_ptr_factory_; - - DISALLOW_COPY_AND_ASSIGN(ExtensionProcessManager); -}; - -#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PROCESS_MANAGER_H_ diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index 60520c9..ec17272 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc @@ -44,7 +44,6 @@ #include "chrome/browser/extensions/extension_error_ui.h" #include "chrome/browser/extensions/extension_host.h" #include "chrome/browser/extensions/extension_install_ui.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_sorting.h" #include "chrome/browser/extensions/extension_special_storage_policy.h" #include "chrome/browser/extensions/extension_sync_service.h" @@ -91,6 +90,7 @@ #include "content/public/browser/site_instance.h" #include "content/public/browser/storage_partition.h" #include "content/public/browser/url_data_source.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/constants.h" #include "extensions/common/error_utils.h" #include "extensions/common/extensions_client.h" @@ -690,7 +690,7 @@ void ExtensionService::ReloadExtension(const std::string extension_id) { // the inspector and hang onto a cookie for it, so that we can reattach // later. // TODO(yoz): this is not incognito-safe! - ExtensionProcessManager* manager = system_->process_manager(); + extensions::ProcessManager* manager = system_->process_manager(); extensions::ExtensionHost* host = manager->GetBackgroundHostForExtension(extension_id); if (host && DevToolsAgentHost::HasFor(host->render_view_host())) { @@ -2652,7 +2652,7 @@ bool ExtensionService::ShouldEnableOnInstall(const Extension* extension) { } bool ExtensionService::IsExtensionIdle(const std::string& extension_id) const { - ExtensionProcessManager* process_manager = system_->process_manager(); + extensions::ProcessManager* process_manager = system_->process_manager(); DCHECK(process_manager); extensions::ExtensionHost* host = process_manager->GetBackgroundHostForExtension(extension_id); diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h index b6c03a5..1d07aee 100644 --- a/chrome/browser/extensions/extension_service.h +++ b/chrome/browser/extensions/extension_service.h @@ -22,7 +22,6 @@ #include "chrome/browser/extensions/extension_function_histogram_value.h" #include "chrome/browser/extensions/extension_icon_manager.h" #include "chrome/browser/extensions/extension_prefs.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_sync_service.h" #include "chrome/browser/extensions/extensions_quota_service.h" #include "chrome/browser/extensions/external_provider_interface.h" @@ -39,6 +38,7 @@ #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/manifest.h" #include "extensions/common/one_shot_event.h" diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc index ce4aded..e4258f7 100644 --- a/chrome/browser/extensions/extension_service_unittest.cc +++ b/chrome/browser/extensions/extension_service_unittest.cc @@ -573,10 +573,10 @@ void ExtensionServiceTestBase::InitializeEmptyExtensionService() { InitializeExtensionService(CreateDefaultInitParams()); } -void ExtensionServiceTestBase::InitializeExtensionProcessManager() { +void ExtensionServiceTestBase::InitializeProcessManager() { static_cast<extensions::TestExtensionSystem*>( ExtensionSystem::Get(profile_.get()))-> - CreateExtensionProcessManager(); + CreateProcessManager(); } void ExtensionServiceTestBase::InitializeExtensionServiceWithUpdater() { @@ -3031,7 +3031,7 @@ TEST_F(ExtensionServiceTest, LoadExtensionsWithPlugins) { InitPluginService(); InitializeEmptyExtensionService(); - InitializeExtensionProcessManager(); + InitializeProcessManager(); service_->set_show_extensions_prompts(true); // Start by canceling any install prompts. @@ -3986,7 +3986,7 @@ TEST_F(ExtensionServiceTest, ReloadExtensions) { // Tests reloading an extension. TEST_F(ExtensionServiceTest, ReloadExtension) { InitializeEmptyExtensionService(); - InitializeExtensionProcessManager(); + InitializeProcessManager(); // Simple extension that should install without error. const char* extension_id = "behllobkkfkfnphdnhnkndlbkcpglgmj"; @@ -5440,7 +5440,7 @@ TEST_F(ExtensionServiceTest, GetSyncDataFilter) { TEST_F(ExtensionServiceTest, GetSyncExtensionDataUserSettings) { InitializeEmptyExtensionService(); - InitializeExtensionProcessManager(); + InitializeProcessManager(); InitializeExtensionSyncService(); InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); const Extension* extension = service_->GetInstalledExtension(good_crx); @@ -5740,7 +5740,7 @@ TEST_F(ExtensionServiceTest, ProcessSyncDataWrongType) { TEST_F(ExtensionServiceTest, ProcessSyncDataSettings) { InitializeEmptyExtensionService(); - InitializeExtensionProcessManager(); + InitializeProcessManager(); InitializeExtensionSyncService(); TestSyncProcessorStub processor; extension_sync_service_->MergeDataAndStartSyncing( diff --git a/chrome/browser/extensions/extension_service_unittest.h b/chrome/browser/extensions/extension_service_unittest.h index f58bdc4..44a1d43 100644 --- a/chrome/browser/extensions/extension_service_unittest.h +++ b/chrome/browser/extensions/extension_service_unittest.h @@ -54,7 +54,7 @@ class ExtensionServiceTestBase : public testing::Test { void InitializeEmptyExtensionService(); - void InitializeExtensionProcessManager(); + void InitializeProcessManager(); void InitializeExtensionServiceWithUpdater(); diff --git a/chrome/browser/extensions/extension_system.cc b/chrome/browser/extensions/extension_system.cc index b7099d2..f5a4ae5 100644 --- a/chrome/browser/extensions/extension_system.cc +++ b/chrome/browser/extensions/extension_system.cc @@ -21,7 +21,6 @@ #include "chrome/browser/extensions/extension_pref_value_map.h" #include "chrome/browser/extensions/extension_pref_value_map_factory.h" #include "chrome/browser/extensions/extension_prefs.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system_factory.h" #include "chrome/browser/extensions/extension_util.h" @@ -43,6 +42,7 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/url_data_source.h" #include "extensions/browser/lazy_background_task_queue.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/constants.h" #include "extensions/common/manifest.h" @@ -307,7 +307,7 @@ ExtensionSystemImpl::ExtensionSystemImpl(Profile* profile) shared_ = ExtensionSystemSharedFactory::GetForProfile(profile); if (profile->IsOffTheRecord()) { - extension_process_manager_.reset(ExtensionProcessManager::Create(profile)); + process_manager_.reset(ProcessManager::Create(profile)); } else { shared_->InitPrefs(); } @@ -317,7 +317,7 @@ ExtensionSystemImpl::~ExtensionSystemImpl() { } void ExtensionSystemImpl::Shutdown() { - extension_process_manager_.reset(); + process_manager_.reset(); } void ExtensionSystemImpl::InitForRegularProfile( @@ -327,13 +327,12 @@ void ExtensionSystemImpl::InitForRegularProfile( if (user_script_master() || extension_service()) return; // Already initialized. - // The ExtensionInfoMap needs to be created before the - // ExtensionProcessManager. + // The ExtensionInfoMap needs to be created before the ProcessManager. shared_->info_map(); - extension_process_manager_.reset(ExtensionProcessManager::Create(profile_)); + process_manager_.reset(ProcessManager::Create(profile_)); - extension_process_manager_->DeferBackgroundHostCreation( + process_manager_->DeferBackgroundHostCreation( defer_background_creation); shared_->Init(extensions_enabled); @@ -351,8 +350,8 @@ UserScriptMaster* ExtensionSystemImpl::user_script_master() { return shared_->user_script_master(); } -ExtensionProcessManager* ExtensionSystemImpl::process_manager() { - return extension_process_manager_.get(); +ProcessManager* ExtensionSystemImpl::process_manager() { + return process_manager_.get(); } StateStore* ExtensionSystemImpl::state_store() { diff --git a/chrome/browser/extensions/extension_system.h b/chrome/browser/extensions/extension_system.h index 663c176..93be7be 100644 --- a/chrome/browser/extensions/extension_system.h +++ b/chrome/browser/extensions/extension_system.h @@ -14,7 +14,6 @@ #include "extensions/common/one_shot_event.h" class ExtensionInfoMap; -class ExtensionProcessManager; class ExtensionService; class Profile; @@ -39,6 +38,7 @@ class ExtensionWarningService; class LazyBackgroundTaskQueue; class ManagementPolicy; class NavigationObserver; +class ProcessManager; class StandardManagementPolicyProvider; class StateStore; class UserScriptMaster; @@ -68,8 +68,8 @@ class ExtensionSystem : public BrowserContextKeyedService { // Component extensions are always enabled, external and user extensions // are controlled by |extensions_enabled|. If |defer_background_creation| is // true, then creation of background extension RenderViews will be deferred - // until ExtensionProcessManager::DeferBackgroundHostCreation is called with - // |defer| set to false. + // until extensions::ProcessManager::DeferBackgroundHostCreation is called + // with |defer| set to false. virtual void InitForRegularProfile(bool extensions_enabled, bool defer_background_creation) = 0; @@ -84,8 +84,8 @@ class ExtensionSystem : public BrowserContextKeyedService { // The UserScriptMaster is created at startup. virtual UserScriptMaster* user_script_master() = 0; - // The ExtensionProcessManager is created at startup. - virtual ExtensionProcessManager* process_manager() = 0; + // The ProcessManager is created at startup. + virtual ProcessManager* process_manager() = 0; // The StateStore is created at startup. virtual StateStore* state_store() = 0; @@ -149,7 +149,7 @@ class ExtensionSystemImpl : public ExtensionSystem { virtual ExtensionService* extension_service() OVERRIDE; // shared virtual ManagementPolicy* management_policy() OVERRIDE; // shared virtual UserScriptMaster* user_script_master() OVERRIDE; // shared - virtual ExtensionProcessManager* process_manager() OVERRIDE; + virtual ProcessManager* process_manager() OVERRIDE; virtual StateStore* state_store() OVERRIDE; // shared virtual StateStore* rules_store() OVERRIDE; // shared virtual LazyBackgroundTaskQueue* lazy_background_task_queue() @@ -221,7 +221,7 @@ class ExtensionSystemImpl : public ExtensionSystem { // ExtensionService depends on StateStore and Blacklist. scoped_ptr<ExtensionService> extension_service_; scoped_ptr<ManagementPolicy> management_policy_; - // extension_info_map_ needs to outlive extension_process_manager_. + // extension_info_map_ needs to outlive process_manager_. scoped_refptr<ExtensionInfoMap> extension_info_map_; scoped_ptr<ExtensionWarningService> extension_warning_service_; scoped_ptr<ExtensionWarningBadgeService> extension_warning_badge_service_; @@ -239,11 +239,11 @@ class ExtensionSystemImpl : public ExtensionSystem { Shared* shared_; - // |extension_process_manager_| must be destroyed before the Profile's - // |io_data_|. While |extension_process_manager_| still lives, we handle - // incoming resource requests from extension processes and those require - // access to the ResourceContext owned by |io_data_|. - scoped_ptr<ExtensionProcessManager> extension_process_manager_; + // |process_manager_| must be destroyed before the Profile's |io_data_|. While + // |process_manager_| still lives, we handle incoming resource requests from + // extension processes and those require access to the ResourceContext owned + // by |io_data_|. + scoped_ptr<ProcessManager> process_manager_; DISALLOW_COPY_AND_ASSIGN(ExtensionSystemImpl); }; diff --git a/chrome/browser/extensions/extension_test_notification_observer.cc b/chrome/browser/extensions/extension_test_notification_observer.cc index f8b7a6d..77c140d 100644 --- a/chrome/browser/extensions/extension_test_notification_observer.cc +++ b/chrome/browser/extensions/extension_test_notification_observer.cc @@ -4,7 +4,6 @@ #include "chrome/browser/extensions/extension_test_notification_observer.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile_manager.h" @@ -15,6 +14,7 @@ #include "content/public/browser/notification_service.h" #include "content/public/browser/render_view_host.h" #include "content/public/test/test_utils.h" +#include "extensions/browser/process_manager.h" using extensions::Extension; @@ -99,10 +99,10 @@ bool ExtensionTestNotificationObserver::WaitForPageActionVisibilityChangeTo( } bool ExtensionTestNotificationObserver::WaitForExtensionViewsToLoad() { - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(GetProfile())->process_manager(); - ExtensionProcessManager::ViewSet all_views = manager->GetAllViews(); - for (ExtensionProcessManager::ViewSet::const_iterator iter = + extensions::ProcessManager::ViewSet all_views = manager->GetAllViews(); + for (extensions::ProcessManager::ViewSet::const_iterator iter = all_views.begin(); iter != all_views.end();) { if (!(*iter)->IsLoading()) { diff --git a/chrome/browser/extensions/gpu_browsertest.cc b/chrome/browser/extensions/gpu_browsertest.cc index ff34a35..b22722a 100644 --- a/chrome/browser/extensions/gpu_browsertest.cc +++ b/chrome/browser/extensions/gpu_browsertest.cc @@ -8,10 +8,10 @@ #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/ui/browser.h" #include "content/public/browser/render_view_host.h" +#include "extensions/browser/process_manager.h" #include "webkit/common/webpreferences.h" // Tests that GPU acceleration is disabled for extension background @@ -22,7 +22,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, WebKitPrefsBackgroundPage) { .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") .AppendASCII("1.0.0.0"))); - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); extensions::ExtensionHost* host = FindHostWithPath(manager, "/backgroundpage.html", 1); diff --git a/chrome/browser/extensions/gtalk_extension_browsertest.cc b/chrome/browser/extensions/gtalk_extension_browsertest.cc index 694765d..b2c720f 100644 --- a/chrome/browser/extensions/gtalk_extension_browsertest.cc +++ b/chrome/browser/extensions/gtalk_extension_browsertest.cc @@ -7,7 +7,6 @@ #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" @@ -18,6 +17,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/browser/process_manager.h" using content::RenderViewHost; using content::WebContents; @@ -25,7 +25,7 @@ using extensions::Extension; class GtalkExtensionTest : public ExtensionBrowserTest { protected: - ExtensionProcessManager* GetExtensionProcessManager() { + extensions::ProcessManager* GetProcessManager() { return extensions::ExtensionSystem::Get(browser()->profile())-> process_manager(); } @@ -54,10 +54,10 @@ class GtalkExtensionTest : public ExtensionBrowserTest { } std::vector<RenderViewHost*> GetMatchingViews(std::string url_query) { - ExtensionProcessManager* manager = GetExtensionProcessManager(); - ExtensionProcessManager::ViewSet all_views = manager->GetAllViews(); + extensions::ProcessManager* manager = GetProcessManager(); + extensions::ProcessManager::ViewSet all_views = manager->GetAllViews(); std::vector<RenderViewHost*> matching_views; - for (ExtensionProcessManager::ViewSet::const_iterator iter = + for (extensions::ProcessManager::ViewSet::const_iterator iter = all_views.begin(); iter != all_views.end(); ++iter) { WebContents* web_contents = WebContents::FromRenderViewHost(*iter); std::string url = web_contents->GetURL().spec(); diff --git a/chrome/browser/extensions/lazy_background_page_apitest.cc b/chrome/browser/extensions/lazy_background_page_apitest.cc index bb99cf1..f526a74 100644 --- a/chrome/browser/extensions/lazy_background_page_apitest.cc +++ b/chrome/browser/extensions/lazy_background_page_apitest.cc @@ -104,7 +104,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, BrowserActionCreateTab) { ASSERT_TRUE(LoadExtensionAndWait("browser_action_create_tab")); // Lazy Background Page doesn't exist yet. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); int num_tabs_before = browser()->tab_strip_model()->count(); @@ -128,7 +128,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, ASSERT_TRUE(LoadExtensionAndWait("browser_action_with_callback")); // Lazy Background Page doesn't exist yet. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); int num_tabs_before = browser()->tab_strip_model()->count(); @@ -151,7 +151,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, BroadcastEvent) { ASSERT_TRUE(extension); // Lazy Background Page doesn't exist yet. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); int num_page_actions = browser()->window()->GetLocationBar()-> @@ -182,7 +182,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, Filters) { ASSERT_TRUE(extension); // Lazy Background Page doesn't exist yet. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); @@ -201,7 +201,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, OnInstalled) { EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); // Lazy Background Page has been shut down. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); } @@ -224,7 +224,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, WaitForView) { // Lazy Background Page still exists, because the extension created a new tab // to an extension page. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_TRUE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); @@ -252,7 +252,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, WaitForRequest) { EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); // Lazy Background Page still exists, because the extension started a request. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); extensions::ExtensionHost* host = pm->GetBackgroundHostForExtension(last_loaded_extension_id()); @@ -293,7 +293,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, MAYBE_WaitForNTP) { // Lazy Background Page still exists, because the extension created a new tab // to an extension page. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_TRUE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); @@ -329,9 +329,9 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, MAYBE_IncognitoSplitMode) { } // Lazy Background Page doesn't exist yet. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); - ExtensionProcessManager* pmi = + extensions::ProcessManager* pmi = extensions::ExtensionSystem::Get(incognito_browser->profile())-> process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); @@ -388,7 +388,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, Messaging) { ASSERT_TRUE(LoadExtensionAndWait("messaging")); // Lazy Background Page doesn't exist yet. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); EXPECT_EQ(1, browser()->tab_strip_model()->count()); @@ -420,7 +420,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, OnUnload) { ASSERT_TRUE(LoadExtensionAndWait("on_unload")); // Lazy Background Page has been shut down. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); @@ -483,7 +483,7 @@ IN_PROC_BROWSER_TEST_F(LazyBackgroundPageApiTest, UpdateExtensionsPage) { // Lazy Background Page still exists, because the extension created a new tab // to an extension page. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); EXPECT_TRUE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); diff --git a/chrome/browser/extensions/notifications_apitest.cc b/chrome/browser/extensions/notifications_apitest.cc index dab664a..b86ffd0 100644 --- a/chrome/browser/extensions/notifications_apitest.cc +++ b/chrome/browser/extensions/notifications_apitest.cc @@ -4,13 +4,13 @@ #include "chrome/browser/extensions/extension_apitest.h" +#include "chrome/browser/extensions/lazy_background_page_test_util.h" #include "chrome/browser/notifications/desktop_notification_service.h" #include "chrome/browser/notifications/desktop_notification_service_factory.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" -#include "chrome/browser/extensions/extension_process_manager.h" -#include "chrome/browser/extensions/lazy_background_page_test_util.h" #include "chrome/common/extensions/extension.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/switches.h" #include "ui/message_center/message_center_switches.h" #include "ui/message_center/message_center_util.h" @@ -77,7 +77,7 @@ IN_PROC_BROWSER_TEST_F(NotificationIdleTest, MAYBE_NotificationsAllowUnload) { ASSERT_TRUE(extension) << message_; // Lazy Background Page has been shut down. - ExtensionProcessManager* pm = + extensions::ProcessManager* pm = extensions::ExtensionSystem::Get(profile())->process_manager(); EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); } diff --git a/chrome/browser/extensions/process_management_browsertest.cc b/chrome/browser/extensions/process_management_browsertest.cc index e607d26..de2e749 100644 --- a/chrome/browser/extensions/process_management_browsertest.cc +++ b/chrome/browser/extensions/process_management_browsertest.cc @@ -5,7 +5,6 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" @@ -18,6 +17,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/site_instance.h" #include "content/public/browser/web_contents.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/switches.h" #include "net/dns/mock_host_resolver.h" #include "net/test/embedded_test_server/embedded_test_server.h" @@ -140,7 +140,7 @@ IN_PROC_BROWSER_TEST_F(ProcessManagementTest, MAYBE_ProcessOverflow) { browser()->tab_strip_model()->GetWebContentsAt(8)->GetRenderProcessHost(); // Get extension processes. - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = extensions::ExtensionSystem::Get(browser()->profile())-> process_manager(); content::RenderProcessHost* extension1_host = @@ -232,9 +232,9 @@ IN_PROC_BROWSER_TEST_F(ProcessManagementTest, MAYBE_ExtensionProcessBalancing) { std::set<int> process_ids; Profile* profile = browser()->profile(); - ExtensionProcessManager* epm = extensions::ExtensionSystem::Get(profile)-> + extensions::ProcessManager* epm = extensions::ExtensionSystem::Get(profile)-> process_manager(); - for (ExtensionProcessManager::const_iterator iter = + for (extensions::ProcessManager::const_iterator iter = epm->background_hosts().begin(); iter != epm->background_hosts().end(); ++iter) { process_ids.insert((*iter)->render_process_host()->GetID()); diff --git a/chrome/browser/extensions/extension_process_manager_browsertest.cc b/chrome/browser/extensions/process_manager_browsertest.cc index b4de778..af7c908 100644 --- a/chrome/browser/extensions/extension_process_manager_browsertest.cc +++ b/chrome/browser/extensions/process_manager_browsertest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/extension_process_manager.h" +#include "extensions/browser/process_manager.h" #include "chrome/browser/extensions/browser_action_test_util.h" #include "chrome/browser/extensions/extension_browsertest.h" @@ -12,19 +12,17 @@ #include "content/public/browser/notification_service.h" #include "content/public/test/test_utils.h" -using extensions::Extension; -using extensions::ExtensionSystem; +namespace extensions { // Exists as a browser test because ExtensionHosts are hard to create without // a real browser. -typedef ExtensionBrowserTest ExtensionProcessManagerBrowserTest; +typedef ExtensionBrowserTest ProcessManagerBrowserTest; // Test that basic extension loading creates the appropriate ExtensionHosts // and background pages. -IN_PROC_BROWSER_TEST_F(ExtensionProcessManagerBrowserTest, +IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, ExtensionHostCreation) { - ExtensionProcessManager* pm = - ExtensionSystem::Get(profile())->process_manager(); + ProcessManager* pm = ExtensionSystem::Get(profile())->process_manager(); // We start with no background hosts. ASSERT_EQ(0u, pm->background_hosts().size()); @@ -63,10 +61,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionProcessManagerBrowserTest, // background page and that clicking on the action creates the appropriate // ExtensionHost. // Disabled due to flake, see http://crbug.com/315242 -IN_PROC_BROWSER_TEST_F(ExtensionProcessManagerBrowserTest, +IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, DISABLED_PopupHostCreation) { - ExtensionProcessManager* pm = - ExtensionSystem::Get(profile())->process_manager(); + ProcessManager* pm = ExtensionSystem::Get(profile())->process_manager(); // Load an extension with the ability to open a popup but no background // page. @@ -104,3 +101,5 @@ IN_PROC_BROWSER_TEST_F(ExtensionProcessManagerBrowserTest, EXPECT_FALSE(pm->IsBackgroundHostClosing(popup->id())); EXPECT_EQ(0, pm->GetLazyKeepaliveCount(popup.get())); } + +} // namespace extensions diff --git a/chrome/browser/extensions/extension_process_manager_unittest.cc b/chrome/browser/extensions/process_manager_unittest.cc index c8ca541..9ad05db 100644 --- a/chrome/browser/extensions/extension_process_manager_unittest.cc +++ b/chrome/browser/extensions/process_manager_unittest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/extension_process_manager.h" +#include "extensions/browser/process_manager.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/extensions/extension_error_reporter.h" @@ -15,8 +15,15 @@ using content::SiteInstance; +namespace extensions { + +// TODO(jamescook): Convert this from TestingProfile to TestBrowserContext and +// move to extensions/browser. This is dependent on ExtensionPrefs being +// converted and ExtensionSystem being converted or eliminated. +// http://crbug.com/315855 + // make the test a PlatformTest to setup autorelease pools properly on mac -class ExtensionProcessManagerTest : public testing::Test { +class ProcessManagerTest : public testing::Test { public: static void SetUpTestCase() { ExtensionErrorReporter::Init(false); // no noisy errors @@ -28,20 +35,20 @@ class ExtensionProcessManagerTest : public testing::Test { // Returns true if the notification |type| is registered for |manager| with // source |profile|. Pass NULL for |profile| for all sources. - static bool IsRegistered(ExtensionProcessManager* manager, - int type, - TestingProfile* profile) { + static bool IsRegistered(ProcessManager* manager, + int type, + TestingProfile* profile) { return manager->registrar_.IsRegistered( manager, type, content::Source<Profile>(profile)); } }; // Test that notification registration works properly. -TEST_F(ExtensionProcessManagerTest, ExtensionNotificationRegistration) { +TEST_F(ProcessManagerTest, ExtensionNotificationRegistration) { // Test for a normal profile. scoped_ptr<TestingProfile> original_profile(new TestingProfile); - scoped_ptr<ExtensionProcessManager> manager1( - ExtensionProcessManager::Create(original_profile.get())); + scoped_ptr<ProcessManager> manager1( + ProcessManager::Create(original_profile.get())); EXPECT_EQ(original_profile.get(), manager1->GetBrowserContext()); EXPECT_EQ(0u, manager1->background_hosts().size()); @@ -65,8 +72,8 @@ TEST_F(ExtensionProcessManagerTest, ExtensionNotificationRegistration) { builder.SetIncognito(); scoped_ptr<TestingProfile> incognito_profile = builder.Build(); incognito_profile->SetOriginalProfile(original_profile.get()); - scoped_ptr<ExtensionProcessManager> manager2( - ExtensionProcessManager::Create(incognito_profile.get())); + scoped_ptr<ProcessManager> manager2( + ProcessManager::Create(incognito_profile.get())); EXPECT_EQ(incognito_profile.get(), manager2->GetBrowserContext()); EXPECT_EQ(0u, manager2->background_hosts().size()); @@ -102,17 +109,15 @@ TEST_F(ExtensionProcessManagerTest, ExtensionNotificationRegistration) { // Test that extensions get grouped in the right SiteInstance (and therefore // process) based on their URLs. -TEST_F(ExtensionProcessManagerTest, ProcessGrouping) { +TEST_F(ProcessManagerTest, ProcessGrouping) { // Extensions in different profiles should always be different SiteInstances. // Note: we don't initialize these, since we're not testing that // functionality. This means we can get away with a NULL UserScriptMaster. TestingProfile profile1; - scoped_ptr<ExtensionProcessManager> manager1( - ExtensionProcessManager::Create(&profile1)); + scoped_ptr<ProcessManager> manager1(ProcessManager::Create(&profile1)); TestingProfile profile2; - scoped_ptr<ExtensionProcessManager> manager2( - ExtensionProcessManager::Create(&profile2)); + scoped_ptr<ProcessManager> manager2(ProcessManager::Create(&profile2)); // Extensions with common origins ("scheme://id/") should be grouped in the // same SiteInstance. @@ -134,3 +139,5 @@ TEST_F(ExtensionProcessManagerTest, ProcessGrouping) { manager2->GetSiteInstanceForURL(ext1_url1); EXPECT_NE(site11, other_profile_site); } + +} // namespace extensions diff --git a/chrome/browser/extensions/process_map.h b/chrome/browser/extensions/process_map.h index 73439ad..440e7a9 100644 --- a/chrome/browser/extensions/process_map.h +++ b/chrome/browser/extensions/process_map.h @@ -53,7 +53,7 @@ namespace extensions { // extensions (not hosted apps), and you are on the UI thread, and you don't // care about incognito version of this extension (or vice versa if you're in // an incognito profile) then use -// ExtensionProcessManager::GetSiteInstanceForURL()->[Has|Get]Process(). +// extensions::ProcessManager::GetSiteInstanceForURL()->[Has|Get]Process(). // // 3. The process ids contained in this class are *not limited* to the Profile // you got this map from. They can also be associated with that profile's diff --git a/chrome/browser/extensions/suggest_permission_util.cc b/chrome/browser/extensions/suggest_permission_util.cc index cd9e1db..7eb1e10 100644 --- a/chrome/browser/extensions/suggest_permission_util.cc +++ b/chrome/browser/extensions/suggest_permission_util.cc @@ -4,12 +4,12 @@ #include "chrome/browser/extensions/suggest_permission_util.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_messages.h" #include "content/public/browser/render_view_host.h" #include "content/public/common/console_message_level.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/permissions/permissions_info.h" using content::CONSOLE_MESSAGE_LEVEL_WARNING; @@ -47,7 +47,7 @@ void SuggestAPIPermissionInDevToolsConsole(APIPermission::ID permission, void SuggestAPIPermissionInDevToolsConsole(APIPermission::ID permission, const Extension* extension, Profile* profile) { - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = extensions::ExtensionSystem::Get(profile)->process_manager(); std::set<content::RenderViewHost*> views = diff --git a/chrome/browser/extensions/test_extension_system.cc b/chrome/browser/extensions/test_extension_system.cc index a628a9f..e6d448d 100644 --- a/chrome/browser/extensions/test_extension_system.cc +++ b/chrome/browser/extensions/test_extension_system.cc @@ -14,7 +14,6 @@ #include "chrome/browser/extensions/extension_pref_value_map_factory.h" #include "chrome/browser/extensions/extension_prefs.h" #include "chrome/browser/extensions/extension_prefs_factory.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/management_policy.h" @@ -25,6 +24,7 @@ #include "chrome/browser/value_store/testing_value_store.h" #include "chrome/common/chrome_switches.h" #include "content/public/browser/browser_thread.h" +#include "extensions/browser/process_manager.h" using content::BrowserThread; @@ -41,16 +41,15 @@ TestExtensionSystem::~TestExtensionSystem() { } void TestExtensionSystem::Shutdown() { - extension_process_manager_.reset(); + process_manager_.reset(); } -void TestExtensionSystem::CreateExtensionProcessManager() { - extension_process_manager_.reset(ExtensionProcessManager::Create(profile_)); +void TestExtensionSystem::CreateProcessManager() { + process_manager_.reset(ProcessManager::Create(profile_)); } -void TestExtensionSystem::SetExtensionProcessManager( - ExtensionProcessManager* manager) { - extension_process_manager_.reset(manager); +void TestExtensionSystem::SetProcessManager(ProcessManager* manager) { + process_manager_.reset(manager); } ExtensionPrefs* TestExtensionSystem::CreateExtensionPrefs( @@ -121,8 +120,8 @@ UserScriptMaster* TestExtensionSystem::user_script_master() { return NULL; } -ExtensionProcessManager* TestExtensionSystem::process_manager() { - return extension_process_manager_.get(); +ProcessManager* TestExtensionSystem::process_manager() { + return process_manager_.get(); } StateStore* TestExtensionSystem::state_store() { diff --git a/chrome/browser/extensions/test_extension_system.h b/chrome/browser/extensions/test_extension_system.h index cab117b..7c5cc9a 100644 --- a/chrome/browser/extensions/test_extension_system.h +++ b/chrome/browser/extensions/test_extension_system.h @@ -44,13 +44,12 @@ class TestExtensionSystem : public ExtensionSystem { const base::FilePath& install_directory, bool autoupdate_enabled); - // Creates an ExtensionProcessManager. If not invoked, the - // ExtensionProcessManager is NULL. - void CreateExtensionProcessManager(); + // Creates a ProcessManager. If not invoked, the ProcessManager is NULL. + void CreateProcessManager(); - // Allows the ExtensionProcessManager to be overriden, for example by a - // stub implementation. Takes ownership of |manager|. - void SetExtensionProcessManager(ExtensionProcessManager* manager); + // Allows the ProcessManager to be overriden, for example by a stub + // implementation. Takes ownership of |manager|. + void SetProcessManager(ProcessManager* manager); void CreateSocketManager(); @@ -60,7 +59,7 @@ class TestExtensionSystem : public ExtensionSystem { virtual ExtensionService* extension_service() OVERRIDE; virtual ManagementPolicy* management_policy() OVERRIDE; virtual UserScriptMaster* user_script_master() OVERRIDE; - virtual ExtensionProcessManager* process_manager() OVERRIDE; + virtual ProcessManager* process_manager() OVERRIDE; virtual StateStore* state_store() OVERRIDE; virtual StateStore* rules_store() OVERRIDE; TestingValueStore* value_store() { return value_store_; } @@ -92,7 +91,7 @@ class TestExtensionSystem : public ExtensionSystem { standard_management_policy_provider_; scoped_ptr<ManagementPolicy> management_policy_; scoped_ptr<ExtensionService> extension_service_; - scoped_ptr<ExtensionProcessManager> extension_process_manager_; + scoped_ptr<ProcessManager> process_manager_; scoped_refptr<ExtensionInfoMap> info_map_; scoped_ptr<ErrorConsole> error_console_; OneShotEvent ready_; diff --git a/chrome/browser/extensions/window_open_apitest.cc b/chrome/browser/extensions/window_open_apitest.cc index 5cee30e..81a9c3f 100644 --- a/chrome/browser/extensions/window_open_apitest.cc +++ b/chrome/browser/extensions/window_open_apitest.cc @@ -8,7 +8,6 @@ #include "base/strings/stringprintf.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_test_message_listener.h" #include "chrome/browser/profiles/profile.h" @@ -26,6 +25,7 @@ #include "content/public/browser/web_contents.h" #include "content/public/common/result_codes.h" #include "content/public/test/browser_test_utils.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/switches.h" #include "net/dns/mock_host_resolver.h" #include "net/test/embedded_test_server/embedded_test_server.h" diff --git a/chrome/browser/memory_details.cc b/chrome/browser/memory_details.cc index 4002c20..7c6780c 100644 --- a/chrome/browser/memory_details.cc +++ b/chrome/browser/memory_details.cc @@ -10,7 +10,6 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/extension.h" @@ -26,6 +25,7 @@ #include "content/public/browser/render_widget_host_iterator.h" #include "content/public/browser/web_contents.h" #include "content/public/common/bindings_policy.h" +#include "extensions/browser/process_manager.h" #include "extensions/browser/view_type_utils.h" #include "grit/chromium_strings.h" #include "grit/generated_resources.h" diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc index ffb7959..b5dc439 100644 --- a/chrome/browser/net/chrome_network_delegate.cc +++ b/chrome/browser/net/chrome_network_delegate.cc @@ -26,7 +26,6 @@ #include "chrome/browser/extensions/api/web_request/web_request_api.h" #include "chrome/browser/extensions/event_router_forwarder.h" #include "chrome/browser/extensions/extension_info_map.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/google/google_util.h" #include "chrome/browser/net/chrome_network_data_saving_metrics.h" @@ -41,6 +40,7 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/resource_request_info.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/constants.h" #include "net/base/host_port_pair.h" #include "net/base/net_errors.h" @@ -169,7 +169,7 @@ void ForceGoogleSafeSearchCallbackWrapper( enum RequestStatus { REQUEST_STARTED, REQUEST_DONE }; -// Notifies the ExtensionProcessManager that a request has started or stopped +// Notifies the extensions::ProcessManager that a request has started or stopped // for a particular RenderView. void NotifyEPMRequestStatus(RequestStatus status, void* profile_id, @@ -180,10 +180,10 @@ void NotifyEPMRequestStatus(RequestStatus status, if (!g_browser_process->profile_manager()->IsValidProfile(profile)) return; - ExtensionProcessManager* extension_process_manager = + extensions::ProcessManager* process_manager = extensions::ExtensionSystem::Get(profile)->process_manager(); // This may be NULL in unit tests. - if (!extension_process_manager) + if (!process_manager) return; // Will be NULL if the request was not issued on behalf of a renderer (e.g. a @@ -192,9 +192,9 @@ void NotifyEPMRequestStatus(RequestStatus status, RenderViewHost::FromID(process_id, render_view_id); if (render_view_host) { if (status == REQUEST_STARTED) { - extension_process_manager->OnNetworkRequestStarted(render_view_host); + process_manager->OnNetworkRequestStarted(render_view_host); } else if (status == REQUEST_DONE) { - extension_process_manager->OnNetworkRequestDone(render_view_host); + process_manager->OnNetworkRequestDone(render_view_host); } else { NOTREACHED(); } diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc index 85d113b..89088f1a 100644 --- a/chrome/browser/policy/policy_browsertest.cc +++ b/chrome/browser/policy/policy_browsertest.cc @@ -35,7 +35,6 @@ #include "chrome/browser/download/download_prefs.h" #include "chrome/browser/extensions/crx_installer.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/unpacked_installer.h" @@ -114,6 +113,7 @@ #include "content/public/test/test_utils.h" #include "content/test/net/url_request_failed_job.h" #include "content/test/net/url_request_mock_http_job.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/constants.h" #include "grit/generated_resources.h" #include "net/base/net_errors.h" @@ -1555,10 +1555,10 @@ IN_PROC_BROWSER_TEST_F(PolicyTest, ExtensionInstallForcelist) { // Wait until any background pages belonging to force-installed extensions // have been loaded. - ExtensionProcessManager* manager = + extensions::ProcessManager* manager = extensions::ExtensionSystem::Get(browser()->profile())->process_manager(); - ExtensionProcessManager::ViewSet all_views = manager->GetAllViews(); - for (ExtensionProcessManager::ViewSet::const_iterator iter = + extensions::ProcessManager::ViewSet all_views = manager->GetAllViews(); + for (extensions::ProcessManager::ViewSet::const_iterator iter = all_views.begin(); iter != all_views.end();) { if (!(*iter)->IsLoading()) { diff --git a/chrome/browser/renderer_host/chrome_render_message_filter.cc b/chrome/browser/renderer_host/chrome_render_message_filter.cc index 37c7f14..da6dbba 100644 --- a/chrome/browser/renderer_host/chrome_render_message_filter.cc +++ b/chrome/browser/renderer_host/chrome_render_message_filter.cc @@ -23,7 +23,6 @@ #include "chrome/browser/extensions/api/activity_log_private/activity_log_private_api.h" #include "chrome/browser/extensions/api/messaging/message_service.h" #include "chrome/browser/extensions/event_router.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/google/google_util.h" #include "chrome/browser/net/chrome_url_request_context.h" @@ -39,6 +38,7 @@ #include "content/public/browser/notification_service.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/resource_dispatcher_host.h" +#include "extensions/browser/process_manager.h" #include "extensions/common/constants.h" #if defined(USE_TCMALLOC) diff --git a/chrome/browser/speech/extension_api/tts_engine_extension_api.cc b/chrome/browser/speech/extension_api/tts_engine_extension_api.cc index f6c7bce..58e267f 100644 --- a/chrome/browser/speech/extension_api/tts_engine_extension_api.cc +++ b/chrome/browser/speech/extension_api/tts_engine_extension_api.cc @@ -10,7 +10,6 @@ #include "base/values.h" #include "chrome/browser/extensions/event_router.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" @@ -23,6 +22,7 @@ #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" #include "content/public/common/console_message_level.h" +#include "extensions/browser/process_manager.h" #include "net/base/network_change_notifier.h" using extensions::EventRouter; @@ -48,7 +48,7 @@ void WarnIfMissingPauseOrResumeListener( if (has_onpause == has_onresume) return; - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = ExtensionSystem::Get(profile)->process_manager(); extensions::ExtensionHost* host = process_manager->GetBackgroundHostForExtension(extension_id); diff --git a/chrome/browser/task_manager/extension_process_resource_provider.cc b/chrome/browser/task_manager/extension_process_resource_provider.cc index 121ae0f..4a0ab96 100644 --- a/chrome/browser/task_manager/extension_process_resource_provider.cc +++ b/chrome/browser/task_manager/extension_process_resource_provider.cc @@ -10,7 +10,6 @@ #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/devtools/devtools_window.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" @@ -24,6 +23,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/site_instance.h" #include "content/public/browser/web_contents.h" +#include "extensions/browser/process_manager.h" #include "extensions/browser/view_type_utils.h" #include "grit/theme_resources.h" #include "ui/base/l10n/l10n_util.h" @@ -150,7 +150,7 @@ void ExtensionProcessResource::SetSupportNetworkUsage() { const Extension* ExtensionProcessResource::GetExtension() const { Profile* profile = Profile::FromBrowserContext( render_view_host_->GetProcess()->GetBrowserContext()); - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = extensions::ExtensionSystem::Get(profile)->process_manager(); return process_manager->GetExtensionForRenderViewHost(render_view_host_); } @@ -213,12 +213,13 @@ void ExtensionProcessResourceProvider::StartUpdating() { } for (size_t i = 0; i < profiles.size(); ++i) { - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = extensions::ExtensionSystem::Get(profiles[i])->process_manager(); if (process_manager) { - const ExtensionProcessManager::ViewSet all_views = + const extensions::ProcessManager::ViewSet all_views = process_manager->GetAllViews(); - ExtensionProcessManager::ViewSet::const_iterator jt = all_views.begin(); + extensions::ProcessManager::ViewSet::const_iterator jt = + all_views.begin(); for (; jt != all_views.end(); ++jt) { content::RenderViewHost* rvh = *jt; // Don't add dead extension processes. diff --git a/chrome/browser/task_manager/task_manager.cc b/chrome/browser/task_manager/task_manager.cc index ca2f8b5..b10876e 100644 --- a/chrome/browser/task_manager/task_manager.cc +++ b/chrome/browser/task_manager/task_manager.cc @@ -16,7 +16,6 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/task_manager/background_resource_provider.h" diff --git a/chrome/browser/translate/translate_manager_browsertest.cc b/chrome/browser/translate/translate_manager_browsertest.cc index 6317ad5..afffdda 100644 --- a/chrome/browser/translate/translate_manager_browsertest.cc +++ b/chrome/browser/translate/translate_manager_browsertest.cc @@ -1331,7 +1331,7 @@ TEST_F(TranslateManagerBrowserTest, BeforeTranslateExtraButtons) { static_cast<TestingProfile*>(web_contents()->GetBrowserContext()); static_cast<extensions::TestExtensionSystem*>( extensions::ExtensionSystem::Get(test_profile))-> - CreateExtensionProcessManager(); + CreateProcessManager(); test_profile->ForceIncognito(true); for (int i = 0; i < 8; ++i) { SCOPED_TRACE(::testing::Message() << "Iteration " << i << diff --git a/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.cc b/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.cc index 5fa4264..16415f7 100644 --- a/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.cc +++ b/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.cc @@ -8,7 +8,6 @@ #include "ash/launcher/launcher_model.h" #include "ash/shell.h" #include "ash/wm/window_util.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/favicon/favicon_tab_helper.h" #include "chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item.h" @@ -25,6 +24,7 @@ #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" #include "content/public/browser/web_contents.h" +#include "extensions/browser/process_manager.h" #include "ui/aura/window.h" #include "ui/events/event.h" #include "ui/views/corewm/window_animations.h" diff --git a/chrome/browser/ui/gtk/notifications/balloon_view_gtk.cc b/chrome/browser/ui/gtk/notifications/balloon_view_gtk.cc index c74bef7..4457382 100644 --- a/chrome/browser/ui/gtk/notifications/balloon_view_gtk.cc +++ b/chrome/browser/ui/gtk/notifications/balloon_view_gtk.cc @@ -15,7 +15,6 @@ #include "base/strings/string_util.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/notifications/balloon.h" #include "chrome/browser/notifications/desktop_notification_service.h" #include "chrome/browser/notifications/notification.h" @@ -35,6 +34,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/render_widget_host_view.h" #include "content/public/browser/web_contents.h" +#include "extensions/browser/process_manager.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "ui/base/gtk/gtk_hig_constants.h" diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc index 6761fcb..0d5b9a9 100644 --- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc +++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc @@ -418,7 +418,7 @@ bool StartupBrowserCreatorImpl::Launch(Profile* profile, #if defined(ENABLE_EXTENSIONS) // If we deferred creation of background extension hosts, we want to create // them now that the session (if any) has been restored. - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = extensions::ExtensionSystem::Get(profile)->process_manager(); process_manager->DeferBackgroundHostCreation(false); #endif diff --git a/chrome/browser/ui/views/select_file_dialog_extension.cc b/chrome/browser/ui/views/select_file_dialog_extension.cc index 3257bab..67c0bfd 100644 --- a/chrome/browser/ui/views/select_file_dialog_extension.cc +++ b/chrome/browser/ui/views/select_file_dialog_extension.cc @@ -163,7 +163,8 @@ void SelectFileDialogExtension::ExtensionTerminated( // reload the extension at all - when we try to open the extension the next // time, the extension subsystem would automatically reload it for us. At // this time though this is broken because of some faulty wiring in - // ExtensionProcessManager::CreateViewHost. Once that is fixed, remove this. + // extensions::ProcessManager::CreateViewHost. Once that is fixed, remove + // this. if (profile_) { base::MessageLoop::current()->PostTask( FROM_HERE, diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc index 42a5684..9d4f05d 100644 --- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc +++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc @@ -1077,7 +1077,7 @@ ExtensionSettingsHandler::GetInspectablePagesForExtension( std::vector<ExtensionPage> result; // Get the extension process's active views. - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = ExtensionSystem::Get(extension_service_->profile())->process_manager(); GetInspectablePagesForExtensionProcess( extension, @@ -1104,7 +1104,7 @@ ExtensionSettingsHandler::GetInspectablePagesForExtension( // shell windows for incognito processes. if (extension_service_->profile()->HasOffTheRecordProfile() && IncognitoInfo::IsSplitMode(extension)) { - ExtensionProcessManager* process_manager = + extensions::ProcessManager* process_manager = ExtensionSystem::Get(extension_service_->profile()-> GetOffTheRecordProfile())->process_manager(); GetInspectablePagesForExtensionProcess( |