summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-14 00:06:04 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-14 00:06:04 +0000
commita6695e6f0592bbcaa751d28d5814139199625059 (patch)
tree3904c69efe4b4c27726ededcce424236de4586d5
parentdf7bd22a1676edc2d4112ba83f3843f890e1a0a2 (diff)
downloadchromium_src-a6695e6f0592bbcaa751d28d5814139199625059.zip
chromium_src-a6695e6f0592bbcaa751d28d5814139199625059.tar.gz
chromium_src-a6695e6f0592bbcaa751d28d5814139199625059.tar.bz2
Fix memory leak of a TestingValueStore in unit_tests.
BUG=132621 TEST=no Review URL: https://chromiumcodereview.appspot.com/10544146 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142033 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/state_store.h1
-rw-r--r--chrome/browser/value_store/value_store_frontend.cc11
-rw-r--r--chrome/browser/value_store/value_store_frontend.h1
-rw-r--r--tools/heapcheck/suppressions.txt13
-rw-r--r--tools/valgrind/memcheck/suppressions.txt16
5 files changed, 9 insertions, 33 deletions
diff --git a/chrome/browser/extensions/state_store.h b/chrome/browser/extensions/state_store.h
index 8e8ef7a..54f5995 100644
--- a/chrome/browser/extensions/state_store.h
+++ b/chrome/browser/extensions/state_store.h
@@ -26,6 +26,7 @@ class StateStore
typedef ValueStoreFrontend::ReadCallback ReadCallback;
StateStore(Profile* profile, const FilePath& db_path);
+ // This variant is useful for testing (using a mock ValueStore).
StateStore(Profile* profile, ValueStore* store);
virtual ~StateStore();
diff --git a/chrome/browser/value_store/value_store_frontend.cc b/chrome/browser/value_store/value_store_frontend.cc
index 58dd258..b820155 100644
--- a/chrome/browser/value_store/value_store_frontend.cc
+++ b/chrome/browser/value_store/value_store_frontend.cc
@@ -13,7 +13,6 @@ using content::BrowserThread;
class ValueStoreFrontend::Backend : public base::RefCountedThreadSafe<Backend> {
public:
Backend() : storage_(NULL) {}
- explicit Backend(ValueStore* storage) : storage_(storage) {}
void Init(const FilePath& db_path) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
@@ -23,10 +22,11 @@ class ValueStoreFrontend::Backend : public base::RefCountedThreadSafe<Backend> {
storage_ = new FailingValueStore();
}
- void InitWithStore(ValueStore* storage) {
+ // This variant is useful for testing (using a mock ValueStore).
+ void InitWithStore(scoped_ptr<ValueStore> storage) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
DCHECK(!storage_);
- storage_ = storage;
+ storage_ = storage.release();
}
void Get(const std::string& key,
@@ -90,7 +90,10 @@ ValueStoreFrontend::ValueStoreFrontend(const FilePath& db_path)
}
ValueStoreFrontend::ValueStoreFrontend(ValueStore* value_store)
- : backend_(new Backend(value_store)) {
+ : backend_(new Backend()) {
+ BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
+ base::Bind(&ValueStoreFrontend::Backend::InitWithStore,
+ backend_, base::Passed(scoped_ptr<ValueStore>(value_store))));
}
ValueStoreFrontend::~ValueStoreFrontend() {
diff --git a/chrome/browser/value_store/value_store_frontend.h b/chrome/browser/value_store/value_store_frontend.h
index d5d96dd..ad8dc78 100644
--- a/chrome/browser/value_store/value_store_frontend.h
+++ b/chrome/browser/value_store/value_store_frontend.h
@@ -26,6 +26,7 @@ class ValueStoreFrontend
typedef base::Callback<void(scoped_ptr<base::Value>)> ReadCallback;
explicit ValueStoreFrontend(const FilePath& db_path);
+ // This variant is useful for testing (using a mock ValueStore).
explicit ValueStoreFrontend(ValueStore* value_store);
~ValueStoreFrontend();
diff --git a/tools/heapcheck/suppressions.txt b/tools/heapcheck/suppressions.txt
index 7cc40a2..08e9ada 100644
--- a/tools/heapcheck/suppressions.txt
+++ b/tools/heapcheck/suppressions.txt
@@ -1479,16 +1479,3 @@
fun:ChromeRenderViewHostTestHarness::SetUp
fun:TabContentsTestHarness::SetUp
}
-{
- bug_132621_a
- Heapcheck:Leak
- fun:TestExtensionSystem::CreateExtensionService
- fun:ChromeLauncherControllerTest::ChromeLauncherControllerTest
- fun:ChromeLauncherControllerTest_*_Test::ChromeLauncherControllerTest_*
-}
-{
- bug_132621_b
- Heapcheck:Leak
- fun:TestExtensionSystem::CreateExtensionService
- fun:ExtensionUITest::SetUp
-}
diff --git a/tools/valgrind/memcheck/suppressions.txt b/tools/valgrind/memcheck/suppressions.txt
index 1aece69..db69edb 100644
--- a/tools/valgrind/memcheck/suppressions.txt
+++ b/tools/valgrind/memcheck/suppressions.txt
@@ -5589,22 +5589,6 @@
fun:_ZN14TestingProfile20CreateHistoryServiceEbb
fun:_ZN21ShortcutsProviderTest5SetUpEv
}
-{
- bug_132621_a
- Memcheck:Leak
- fun:_Znw*
- fun:_ZN19TestExtensionSystem22CreateExtensionServiceEPK11CommandLineRK8FilePathb
- fun:_ZN15ExtensionUITest5SetUpEv
-}
-{
- bug_132621_b
- Memcheck:Leak
- fun:_Znw*
- fun:_ZN19TestExtensionSystem22CreateExtensionServiceEPK11CommandLineRK8FilePathb
- fun:_ZN28ChromeLauncherControllerTestC2Ev
- fun:_ZN*ChromeLauncherControllerTest_*_TestC1Ev
- fun:_ZN7testing8internal15TestFactoryImplI*ChromeLauncherControllerTest_*_TestE10CreateTestEv
-}
#-----------------------------------------------------------------------
# 4. These only occur on our Google workstations