diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-23 08:53:26 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-23 08:53:26 +0000 |
commit | 2823fb246d4d39fd8f14fb8a29a2d53d2e67d55a (patch) | |
tree | 656029e76252b19306ec981542737dc33492baca /chrome/test/thread_test_helper.h | |
parent | 0e2ca05ee5c69a2e9c0910953f2e0850092aeeb5 (diff) | |
download | chromium_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.h | 59 |
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_ |