From 0e7a02bf814bf5a548e1d846f58fc614c449e31a Mon Sep 17 00:00:00 2001 From: "phajdan.jr@chromium.org" Date: Mon, 9 Nov 2009 20:08:34 +0000 Subject: Fix a memory leak in ExtensionsServiceTest by ensuring that the message loop runs after destroying the ExtensionsService. TEST=none BUG=none Review URL: http://codereview.chromium.org/381006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31464 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/extensions/extensions_service_unittest.cc | 7 +++++++ chrome/browser/extensions/user_script_listener_unittest.cc | 8 ++++++++ 2 files changed, 15 insertions(+) (limited to 'chrome') diff --git a/chrome/browser/extensions/extensions_service_unittest.cc b/chrome/browser/extensions/extensions_service_unittest.cc index aa38fe6..63a12a2 100644 --- a/chrome/browser/extensions/extensions_service_unittest.cc +++ b/chrome/browser/extensions/extensions_service_unittest.cc @@ -209,6 +209,13 @@ class ExtensionsServiceTest NotificationService::AllSources()); } + ~ExtensionsServiceTest() { + // Drop our reference to ExtensionsService now, so that it can be destroyed + // while ChromeThreads and MessageLoop are still around (they are used + // in the ExtensionsService destruction process). + service_ = NULL; + } + virtual void InitializeExtensionsService(const FilePath& pref_file, const FilePath& extensions_install_dir) { prefs_.reset(new PrefService(pref_file)); diff --git a/chrome/browser/extensions/user_script_listener_unittest.cc b/chrome/browser/extensions/user_script_listener_unittest.cc index e36a05f..35cf1d8 100644 --- a/chrome/browser/extensions/user_script_listener_unittest.cc +++ b/chrome/browser/extensions/user_script_listener_unittest.cc @@ -207,6 +207,10 @@ class ExtensionTestingProfile : public TestingProfile { service_->Init(); } + void ShutdownExtensionsService() { + service_ = NULL; + } + virtual ExtensionsService* GetExtensionsService() { return service_.get(); } @@ -239,6 +243,10 @@ class UserScriptListenerTest : public testing::Test { } virtual void TearDown() { + // Shutdown ExtensionsService now, so that it can be destroyed while + // ChromeThreads and MessageLoop are still around (they are used in the + // ExtensionsService destruction process). + profile_.ShutdownExtensionsService(); io_thread_.reset(); file_thread_.reset(); ui_thread_.reset(); -- cgit v1.1