summaryrefslogtreecommitdiffstats
path: root/chrome/test/thread_test_helper.h
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-23 08:53:26 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-23 08:53:26 +0000
commit2823fb246d4d39fd8f14fb8a29a2d53d2e67d55a (patch)
tree656029e76252b19306ec981542737dc33492baca /chrome/test/thread_test_helper.h
parent0e2ca05ee5c69a2e9c0910953f2e0850092aeeb5 (diff)
downloadchromium_src-2823fb246d4d39fd8f14fb8a29a2d53d2e67d55a.zip
chromium_src-2823fb246d4d39fd8f14fb8a29a2d53d2e67d55a.tar.gz
chromium_src-2823fb246d4d39fd8f14fb8a29a2d53d2e67d55a.tar.bz2
Hook up indexed databases to content settings.
Step 2: add a browsing data helper for indexed databases. BUG=56248 TEST=CannedBrowsingDataIndexedDBHelperTest.*,BrowsingDataIndexedDBHelperTest.* Review URL: http://codereview.chromium.org/3468007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60270 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/thread_test_helper.h')
-rw-r--r--chrome/test/thread_test_helper.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/chrome/test/thread_test_helper.h b/chrome/test/thread_test_helper.h
new file mode 100644
index 0000000..8dd7a8c
--- /dev/null
+++ b/chrome/test/thread_test_helper.h
@@ -0,0 +1,59 @@
+// Copyright (c) 2010 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_TEST_THREAD_TEST_HELPER_H_
+#define CHROME_TEST_THREAD_TEST_HELPER_H_
+#pragma once
+
+#include "base/ref_counted.h"
+#include "base/waitable_event.h"
+#include "chrome/browser/chrome_thread.h"
+
+// Helper class that executes code on a given thread while blocking on the
+// invoking thread (normally the UI thread). To use, derive from this class and
+// overwrite RunTest. An alternative use of this class is to use it directly.
+// It will then block until all pending tasks on a given thread have been
+// executed.
+class ThreadTestHelper : public base::RefCountedThreadSafe<ThreadTestHelper> {
+ public:
+ explicit ThreadTestHelper(ChromeThread::ID thread_id)
+ : test_result_(false),
+ thread_id_(thread_id),
+ done_event_(false, false) {
+ }
+
+ // True if RunTest() was successfully executed on the target thread.
+ bool Run() WARN_UNUSED_RESULT {
+ if (!ChromeThread::PostTask(thread_id_, FROM_HERE, NewRunnableMethod(
+ this, &ThreadTestHelper::RunInThread))) {
+ return false;
+ }
+ done_event_.Wait();
+ return test_result_;
+ }
+
+ virtual void RunTest() { set_test_result(true); }
+
+ protected:
+ friend class base::RefCountedThreadSafe<ThreadTestHelper>;
+
+ virtual ~ThreadTestHelper() {}
+
+ // Use this method to store the result of RunTest().
+ void set_test_result(bool test_result) { test_result_ = test_result; }
+
+ private:
+ void RunInThread() {
+ RunTest();
+ done_event_.Signal();
+ }
+
+ bool test_result_;
+ ChromeThread::ID thread_id_;
+ base::WaitableEvent done_event_;
+
+ DISALLOW_COPY_AND_ASSIGN(ThreadTestHelper);
+};
+
+#endif // CHROME_TEST_THREAD_TEST_HELPER_H_