diff options
author | ukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-18 13:00:22 +0000 |
---|---|---|
committer | ukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-18 13:00:22 +0000 |
commit | 1c4a9eaea6f247d043f2d500fb396f3c7ffa4a70 (patch) | |
tree | 921f40e7c550525f93d15ac700bb01de3b13b39e | |
parent | 8d415a2a24d514f8cee1bdd4d775017135ab7d25 (diff) | |
download | chromium_src-1c4a9eaea6f247d043f2d500fb396f3c7ffa4a70.zip chromium_src-1c4a9eaea6f247d043f2d500fb396f3c7ffa4a70.tar.gz chromium_src-1c4a9eaea6f247d043f2d500fb396f3c7ffa4a70.tar.bz2 |
Fix leaks in GoogleURLTrackerTest::CreateRequestContext()
URLFetcher will release URLRequestContextGetter in CancelURLRequest,
which runs in IOMessageLoopProxy. So, if a test doesn't run with
IO thread, it will not run CancelURLRequest from URLFetcher::Core::Stop().
BUG=52562
TEST=./tools/valgrind/chrome_tests.sh --test unit --tool memcheck --gtest_filter='GoogleURLTrackerTest.*'
Review URL: http://codereview.chromium.org/3198001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56522 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/google_url_tracker_unittest.cc | 9 | ||||
-rw-r--r-- | chrome/common/net/test_url_fetcher_factory.h | 4 |
2 files changed, 8 insertions, 5 deletions
diff --git a/chrome/browser/google_url_tracker_unittest.cc b/chrome/browser/google_url_tracker_unittest.cc index 428a3e3..f73655f 100644 --- a/chrome/browser/google_url_tracker_unittest.cc +++ b/chrome/browser/google_url_tracker_unittest.cc @@ -70,13 +70,14 @@ class TestInfoBarDelegateFactory class GoogleURLTrackerTest : public testing::Test { protected: GoogleURLTrackerTest() - : original_default_request_context_(NULL) { + : message_loop_(MessageLoop::TYPE_IO), + io_thread_(ChromeThread::IO, &message_loop_), + original_default_request_context_(NULL) { } void SetUp() { original_default_request_context_ = Profile::GetDefaultRequestContext(); Profile::set_default_request_context(NULL); - message_loop_ = new MessageLoop(MessageLoop::TYPE_IO); network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock()); testing_profile_.reset(new TestingProfile); TestingBrowserProcess* testing_browser_process = @@ -99,7 +100,6 @@ class GoogleURLTrackerTest : public testing::Test { testing_browser_process->SetPrefService(NULL); testing_profile_.reset(); network_change_notifier_.reset(); - delete message_loop_; Profile::set_default_request_context(original_default_request_context_); } @@ -214,7 +214,8 @@ class GoogleURLTrackerTest : public testing::Test { } private: - MessageLoop* message_loop_; + MessageLoop message_loop_; + ChromeThread io_thread_; scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; scoped_ptr<TestingProfile> testing_profile_; diff --git a/chrome/common/net/test_url_fetcher_factory.h b/chrome/common/net/test_url_fetcher_factory.h index 3d86466..f2a5acf 100644 --- a/chrome/common/net/test_url_fetcher_factory.h +++ b/chrome/common/net/test_url_fetcher_factory.h @@ -20,7 +20,9 @@ // URLFetcher. // Typical usage: // // TestURLFetcher requires a MessageLoop: -// MessageLoopForUI message_loop; +// MessageLoopForIO message_loop; +// // and IO thread to clean up request_context etc. +// ChromeThread io_thread(ChromeThread::IO, &message_loop); // // Create and register factory. // TestURLFetcherFactory factory; // URLFetcher::set_factory(&factory); |