summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-18 13:00:22 +0000
committerukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-18 13:00:22 +0000
commit1c4a9eaea6f247d043f2d500fb396f3c7ffa4a70 (patch)
tree921f40e7c550525f93d15ac700bb01de3b13b39e
parent8d415a2a24d514f8cee1bdd4d775017135ab7d25 (diff)
downloadchromium_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.cc9
-rw-r--r--chrome/common/net/test_url_fetcher_factory.h4
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);