summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortapted <tapted@chromium.org>2015-12-02 19:39:00 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-03 03:39:40 +0000
commitd7365d9aaa55e88d9ecca49eb2158b62d1190f09 (patch)
tree27725f5772d7bde29c42291438196e2b303df8e5
parent1184dca33c86af20e84eb41755db417a6367ab5d (diff)
downloadchromium_src-d7365d9aaa55e88d9ecca49eb2158b62d1190f09.zip
chromium_src-d7365d9aaa55e88d9ecca49eb2158b62d1190f09.tar.gz
chromium_src-d7365d9aaa55e88d9ecca49eb2158b62d1190f09.tar.bz2
Revert of Tests: Simplify SequencedWorkerPoolOwner, call Shutdown on destructor. (patchset #4 id:60001 of https://codereview.chromium.org/1417353006/ )
Reason for revert: Suspected for persistent failures on ios_net_unittests - RoundTripTestCookieStore/CookieStoreTest/0.TestNonDottedAndTLD - CookieStoreIOS/CookieStoreTest/0.TestNonDottedAndTLD Failing since https://build.chromium.org/p/chromium.mac/builders/iOS_Simulator_%28dbg%29/builds/32876 Errors like ../../net/cookies/cookie_store_unittest.h:536: Failure Value of: this->SetCookie(cs.get(), url, "a=1; domain=com") Actual: false Expected: true (It's a tricky one! Sorry if this is not it) Original issue's description: > Tests: Simplify SequencedWorkerPoolOwner, call Shutdown on destructor. > > Also ports remaining tests using raw SWPs to use SWPOwner. > > BUG=450228 > > Committed: https://crrev.com/fc939726c283e34112d9bc845a39460410fe9cd9 > Cr-Commit-Position: refs/heads/master@{#362805} TBR=phajdan.jr@chromium.org,jam@chromium.org,brettw@chromium.org,tommycli@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=450228 Review URL: https://codereview.chromium.org/1496493004 Cr-Commit-Position: refs/heads/master@{#362890}
-rw-r--r--base/sequence_checker_unittest.cc2
-rw-r--r--base/test/launcher/test_launcher.cc5
-rw-r--r--base/test/sequenced_worker_pool_owner.cc8
-rw-r--r--base/test/sequenced_worker_pool_owner.h8
-rw-r--r--base/threading/sequenced_task_runner_handle_unittest.cc1
-rw-r--r--base/threading/sequenced_worker_pool_unittest.cc45
-rw-r--r--chrome/browser/chromeos/extensions/external_cache_unittest.cc5
-rw-r--r--chrome/browser/extensions/updater/local_extension_cache_unittest.cc5
-rw-r--r--chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc38
-rw-r--r--chrome/browser/ui/app_list/search/history_unittest.cc1
-rw-r--r--components/autofill/core/browser/test_autofill_driver.cc4
-rw-r--r--components/component_updater/component_updater_service_unittest.cc1
-rw-r--r--components/rlz/rlz_tracker_unittest.cc10
-rw-r--r--components/update_client/update_client_unittest.cc27
-rw-r--r--content/browser/media/webrtc_identity_store_unittest.cc2
-rw-r--r--content/browser/net/quota_policy_cookie_store_unittest.cc2
-rw-r--r--net/base/file_stream_unittest.cc11
-rw-r--r--net/extras/sqlite/sqlite_persistent_cookie_store_perftest.cc1
-rw-r--r--net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc1
-rw-r--r--net/url_request/url_request_simple_job_unittest.cc19
-rw-r--r--ui/app_list/search/history_data_store_unittest.cc10
21 files changed, 138 insertions, 68 deletions
diff --git a/base/sequence_checker_unittest.cc b/base/sequence_checker_unittest.cc
index d721cbf..f0eda25 100644
--- a/base/sequence_checker_unittest.cc
+++ b/base/sequence_checker_unittest.cc
@@ -66,6 +66,7 @@ class SequenceCheckerTest : public testing::Test {
void TearDown() override {
other_thread_.Stop();
+ pool()->Shutdown();
}
protected:
@@ -308,6 +309,7 @@ void SequenceCheckerTest::TwoDifferentWorkerPoolsDeathTest() {
base::Bind(&SequenceCheckedObject::DoStuff,
base::Unretained(sequence_checked_object.get())));
second_pool_owner.pool()->FlushForTesting();
+ second_pool_owner.pool()->Shutdown();
}
#if ENABLE_SEQUENCE_CHECKER
diff --git a/base/test/launcher/test_launcher.cc b/base/test/launcher/test_launcher.cc
index dd13c4a..b1a1a89c 100644
--- a/base/test/launcher/test_launcher.cc
+++ b/base/test/launcher/test_launcher.cc
@@ -468,7 +468,10 @@ TestLauncher::TestLauncher(TestLauncherDelegate* launcher_delegate,
parallel_jobs_(parallel_jobs) {
}
-TestLauncher::~TestLauncher() {}
+TestLauncher::~TestLauncher() {
+ if (worker_pool_owner_)
+ worker_pool_owner_->pool()->Shutdown();
+}
bool TestLauncher::Run() {
if (!Init())
diff --git a/base/test/sequenced_worker_pool_owner.cc b/base/test/sequenced_worker_pool_owner.cc
index 37bad2b..b0d8b7a 100644
--- a/base/test/sequenced_worker_pool_owner.cc
+++ b/base/test/sequenced_worker_pool_owner.cc
@@ -18,11 +18,8 @@ SequencedWorkerPoolOwner::SequencedWorkerPoolOwner(
has_work_call_count_(0) {}
SequencedWorkerPoolOwner::~SequencedWorkerPoolOwner() {
- pool_->Shutdown();
pool_ = NULL;
-
- // Spin the current message loop until SWP destruction verified in OnDestruct.
- exit_loop_.Run();
+ MessageLoop::current()->Run();
}
const scoped_refptr<SequencedWorkerPool>& SequencedWorkerPoolOwner::pool() {
@@ -54,7 +51,8 @@ void SequencedWorkerPoolOwner::WillWaitForShutdown() {
}
void SequencedWorkerPoolOwner::OnDestruct() {
- constructor_message_loop_->PostTask(FROM_HERE, exit_loop_.QuitClosure());
+ constructor_message_loop_->task_runner()->PostTask(
+ FROM_HERE, constructor_message_loop_->QuitWhenIdleClosure());
}
} // namespace base
diff --git a/base/test/sequenced_worker_pool_owner.h b/base/test/sequenced_worker_pool_owner.h
index 20bffb1..bf5f2f7 100644
--- a/base/test/sequenced_worker_pool_owner.h
+++ b/base/test/sequenced_worker_pool_owner.h
@@ -12,7 +12,6 @@
#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/memory/ref_counted.h"
-#include "base/run_loop.h"
#include "base/synchronization/lock.h"
#include "base/threading/sequenced_worker_pool.h"
@@ -26,9 +25,6 @@ class MessageLoop;
// strange races with other tests that touch global stuff (like histograms and
// logging). However, this requires that nothing else on this thread holds a
// ref to the pool when the SequencedWorkerPoolOwner is destroyed.
-//
-// This class calls Shutdown on the owned SequencedWorkerPool in the destructor.
-// Tests may themselves call Shutdown earlier to test shutdown behavior.
class SequencedWorkerPoolOwner : public SequencedWorkerPool::TestingObserver {
public:
SequencedWorkerPoolOwner(size_t max_threads,
@@ -50,11 +46,7 @@ class SequencedWorkerPoolOwner : public SequencedWorkerPool::TestingObserver {
void WillWaitForShutdown() override;
void OnDestruct() override;
- // Used to run the current thread's message loop until the
- // SequencedWorkerPool's destruction has been verified.
- base::RunLoop exit_loop_;
MessageLoop* const constructor_message_loop_;
-
scoped_refptr<SequencedWorkerPool> pool_;
Closure will_wait_for_shutdown_callback_;
diff --git a/base/threading/sequenced_task_runner_handle_unittest.cc b/base/threading/sequenced_task_runner_handle_unittest.cc
index bd380ef..1080262 100644
--- a/base/threading/sequenced_task_runner_handle_unittest.cc
+++ b/base/threading/sequenced_task_runner_handle_unittest.cc
@@ -61,6 +61,7 @@ TEST_F(SequencedTaskRunnerHandleTest, FromSequencedWorkerPool) {
base::Bind(&SequencedTaskRunnerHandleTest::GetTaskRunner,
base::Bind(&WaitableEvent::Signal, base::Unretained(&event))));
event.Wait();
+ owner.pool()->Shutdown();
}
class ThreadRunner : public DelegateSimpleThread::Delegate {
diff --git a/base/threading/sequenced_worker_pool_unittest.cc b/base/threading/sequenced_worker_pool_unittest.cc
index 262c4fb..5812ee7 100644
--- a/base/threading/sequenced_worker_pool_unittest.cc
+++ b/base/threading/sequenced_worker_pool_unittest.cc
@@ -234,6 +234,8 @@ class SequencedWorkerPoolTest : public testing::Test {
ResetPool();
}
+ void TearDown() override { pool()->Shutdown(); }
+
const scoped_refptr<SequencedWorkerPool>& pool() {
return pool_owner_->pool();
}
@@ -349,6 +351,7 @@ TEST_F(SequencedWorkerPoolTest, DelayedTaskDuringShutdown) {
ASSERT_EQ(1u, completion_sequence.size());
ASSERT_EQ(1, completion_sequence[0]);
+ pool()->Shutdown();
// Shutdown is asynchronous, so use ResetPool() to block until the pool is
// fully destroyed (and thus shut down).
ResetPool();
@@ -427,6 +430,9 @@ TEST_F(SequencedWorkerPoolTest, LotsOfTasksTwoPools) {
std::vector<int> result =
tracker()->WaitUntilTasksComplete(2*kNumTasks);
EXPECT_EQ(2 * kNumTasks, result.size());
+
+ pool2.pool()->Shutdown();
+ pool1.pool()->Shutdown();
}
// Test that tasks with the same sequence token are executed in order but don't
@@ -793,30 +799,33 @@ TEST_F(SequencedWorkerPoolTest, IsRunningOnCurrentThread) {
SequencedWorkerPool::SequenceToken token2 = pool()->GetSequenceToken();
SequencedWorkerPool::SequenceToken unsequenced_token;
- SequencedWorkerPoolOwner unused_pool_owner(2, "unused_pool");
+ scoped_refptr<SequencedWorkerPool> unused_pool =
+ new SequencedWorkerPool(2, "unused_pool");
EXPECT_FALSE(pool()->RunsTasksOnCurrentThread());
EXPECT_FALSE(pool()->IsRunningSequenceOnCurrentThread(token1));
EXPECT_FALSE(pool()->IsRunningSequenceOnCurrentThread(token2));
EXPECT_FALSE(pool()->IsRunningSequenceOnCurrentThread(unsequenced_token));
- EXPECT_FALSE(unused_pool_owner.pool()->RunsTasksOnCurrentThread());
- EXPECT_FALSE(
- unused_pool_owner.pool()->IsRunningSequenceOnCurrentThread(token1));
+ EXPECT_FALSE(unused_pool->RunsTasksOnCurrentThread());
+ EXPECT_FALSE(unused_pool->IsRunningSequenceOnCurrentThread(token1));
+ EXPECT_FALSE(unused_pool->IsRunningSequenceOnCurrentThread(token2));
EXPECT_FALSE(
- unused_pool_owner.pool()->IsRunningSequenceOnCurrentThread(token2));
- EXPECT_FALSE(unused_pool_owner.pool()->IsRunningSequenceOnCurrentThread(
- unsequenced_token));
+ unused_pool->IsRunningSequenceOnCurrentThread(unsequenced_token));
pool()->PostSequencedWorkerTask(
- token1, FROM_HERE, base::Bind(&IsRunningOnCurrentThreadTask, token1,
- token2, pool(), unused_pool_owner.pool()));
+ token1, FROM_HERE,
+ base::Bind(&IsRunningOnCurrentThreadTask,
+ token1, token2, pool(), unused_pool));
pool()->PostSequencedWorkerTask(
token2, FROM_HERE,
- base::Bind(&IsRunningOnCurrentThreadTask, token2, unsequenced_token,
- pool(), unused_pool_owner.pool()));
+ base::Bind(&IsRunningOnCurrentThreadTask,
+ token2, unsequenced_token, pool(), unused_pool));
pool()->PostWorkerTask(
- FROM_HERE, base::Bind(&IsRunningOnCurrentThreadTask, unsequenced_token,
- token1, pool(), unused_pool_owner.pool()));
+ FROM_HERE,
+ base::Bind(&IsRunningOnCurrentThreadTask,
+ unsequenced_token, token1, pool(), unused_pool));
+ pool()->Shutdown();
+ unused_pool->Shutdown();
}
// Checks that tasks are destroyed in the right context during shutdown. If a
@@ -938,14 +947,16 @@ TEST_F(SequencedWorkerPoolTest, GetWorkerPoolAndSequenceTokenForCurrentThread) {
pool()->FlushForTesting();
}
-TEST_F(SequencedWorkerPoolTest, ShutsDownCleanWithContinueOnShutdown) {
+TEST(SequencedWorkerPoolRefPtrTest, ShutsDownCleanWithContinueOnShutdown) {
+ MessageLoop loop;
+ scoped_refptr<SequencedWorkerPool> pool(new SequencedWorkerPool(3, "Pool"));
scoped_refptr<SequencedTaskRunner> task_runner =
- pool()->GetSequencedTaskRunnerWithShutdownBehavior(
- pool()->GetSequenceToken(),
+ pool->GetSequencedTaskRunnerWithShutdownBehavior(
+ pool->GetSequenceToken(),
base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
// Upon test exit, should shut down without hanging.
- pool()->Shutdown();
+ pool->Shutdown();
}
class SequencedWorkerPoolTaskRunnerTestDelegate {
diff --git a/chrome/browser/chromeos/extensions/external_cache_unittest.cc b/chrome/browser/chromeos/extensions/external_cache_unittest.cc
index c0e036c..58f5268 100644
--- a/chrome/browser/chromeos/extensions/external_cache_unittest.cc
+++ b/chrome/browser/chromeos/extensions/external_cache_unittest.cc
@@ -70,6 +70,11 @@ class ExternalCacheTest : public testing::Test,
pool_owner_->pool()->GetNamedSequenceToken("background"));
}
+ void TearDown() override {
+ pool_owner_->pool()->Shutdown();
+ base::RunLoop().RunUntilIdle();
+ }
+
// ExternalCache::Delegate:
void OnExtensionListsUpdated(const base::DictionaryValue* prefs) override {
prefs_.reset(prefs->DeepCopy());
diff --git a/chrome/browser/extensions/updater/local_extension_cache_unittest.cc b/chrome/browser/extensions/updater/local_extension_cache_unittest.cc
index 6dcda93..3fe8a2b 100644
--- a/chrome/browser/extensions/updater/local_extension_cache_unittest.cc
+++ b/chrome/browser/extensions/updater/local_extension_cache_unittest.cc
@@ -48,6 +48,11 @@ class LocalExtensionCacheTest : public testing::Test {
pool_owner_->pool()->GetNamedSequenceToken("background"));
}
+ void TearDown() override {
+ pool_owner_->pool()->Shutdown();
+ base::RunLoop().RunUntilIdle();
+ }
+
base::FilePath CreateCacheDir(bool initialized) {
EXPECT_TRUE(cache_dir_.CreateUniqueTempDir());
if (initialized)
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc
index c2cd8ca..13cc2c1 100644
--- a/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc
+++ b/chrome/browser/sync_file_system/drive_backend/sync_engine_unittest.cc
@@ -7,7 +7,6 @@
#include "base/files/scoped_temp_dir.h"
#include "base/macros.h"
#include "base/run_loop.h"
-#include "base/test/sequenced_worker_pool_owner.h"
#include "base/thread_task_runner_handle.h"
#include "chrome/browser/sync_file_system/drive_backend/callback_helper.h"
#include "chrome/browser/sync_file_system/drive_backend/fake_sync_worker.h"
@@ -29,7 +28,7 @@ class SyncEngineTest : public testing::Test,
public:
typedef RemoteFileSyncService::OriginStatusMap RemoteOriginStatusMap;
- SyncEngineTest() : worker_pool_owner_(1, "Worker") {}
+ SyncEngineTest() {}
~SyncEngineTest() override {}
void SetUp() override {
@@ -38,25 +37,28 @@ class SyncEngineTest : public testing::Test,
scoped_ptr<drive::DriveServiceInterface>
fake_drive_service(new drive::FakeDriveService);
+ worker_pool_ = new base::SequencedWorkerPool(1, "Worker");
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner =
base::ThreadTaskRunnerHandle::Get();
worker_task_runner_ =
- worker_pool_owner_.pool()->GetSequencedTaskRunnerWithShutdownBehavior(
- worker_pool_owner_.pool()->GetSequenceToken(),
+ worker_pool_->GetSequencedTaskRunnerWithShutdownBehavior(
+ worker_pool_->GetSequenceToken(),
base::SequencedWorkerPool::SKIP_ON_SHUTDOWN);
sync_engine_.reset(new drive_backend::SyncEngine(
- ui_task_runner.get(), worker_task_runner_.get(),
- nullptr, // drive_task_runner
- worker_pool_owner_.pool().get(), profile_dir_.path(),
- nullptr, // task_logger
- nullptr, // notification_manager
- nullptr, // extension_service
- nullptr, // signin_manager
- nullptr, // token_service
- nullptr, // request_context
- nullptr, // drive_service_factory
- nullptr)); // in_memory_env
+ ui_task_runner.get(),
+ worker_task_runner_.get(),
+ nullptr /* drive_task_runner */,
+ worker_pool_.get(),
+ profile_dir_.path(),
+ nullptr /* task_logger */,
+ nullptr /* notification_manager */,
+ nullptr /* extension_service */,
+ nullptr /* signin_manager */,
+ nullptr /* token_service */,
+ nullptr /* request_context */,
+ nullptr /* drive_service_factory */,
+ nullptr /* in_memory_env */));
sync_engine_->InitializeForTesting(
fake_drive_service.Pass(),
@@ -71,8 +73,12 @@ class SyncEngineTest : public testing::Test,
void TearDown() override {
sync_engine_.reset();
WaitForWorkerTaskRunner();
+ worker_pool_->Shutdown();
worker_task_runner_ = nullptr;
+ worker_pool_ = nullptr;
+
+ base::RunLoop().RunUntilIdle();
}
bool FindOriginStatus(const GURL& origin, std::string* status) {
@@ -125,7 +131,7 @@ class SyncEngineTest : public testing::Test,
base::ScopedTempDir profile_dir_;
scoped_ptr<drive_backend::SyncEngine> sync_engine_;
- base::SequencedWorkerPoolOwner worker_pool_owner_;
+ scoped_refptr<base::SequencedWorkerPool> worker_pool_;
scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
DISALLOW_COPY_AND_ASSIGN(SyncEngineTest);
diff --git a/chrome/browser/ui/app_list/search/history_unittest.cc b/chrome/browser/ui/app_list/search/history_unittest.cc
index 41578f1..d5365e6 100644
--- a/chrome/browser/ui/app_list/search/history_unittest.cc
+++ b/chrome/browser/ui/app_list/search/history_unittest.cc
@@ -99,6 +99,7 @@ class SearchHistoryTest : public testing::Test {
}
void TearDown() override {
Flush();
+ worker_pool_owner_->pool()->Shutdown();
}
void CreateHistory() {
diff --git a/components/autofill/core/browser/test_autofill_driver.cc b/components/autofill/core/browser/test_autofill_driver.cc
index 38a83ed..3eaacd5 100644
--- a/components/autofill/core/browser/test_autofill_driver.cc
+++ b/components/autofill/core/browser/test_autofill_driver.cc
@@ -14,7 +14,9 @@ TestAutofillDriver::TestAutofillDriver()
new base::SequencedWorkerPoolOwner(4, "TestAutofillDriver")),
url_request_context_(NULL) {}
-TestAutofillDriver::~TestAutofillDriver() {}
+TestAutofillDriver::~TestAutofillDriver() {
+ blocking_pool_owner_->pool()->Shutdown();
+}
bool TestAutofillDriver::IsOffTheRecord() const {
return false;
diff --git a/components/component_updater/component_updater_service_unittest.cc b/components/component_updater/component_updater_service_unittest.cc
index a5a839d..9d78eb8 100644
--- a/components/component_updater/component_updater_service_unittest.cc
+++ b/components/component_updater/component_updater_service_unittest.cc
@@ -174,6 +174,7 @@ ComponentUpdaterTest::ComponentUpdaterTest()
ComponentUpdaterTest::~ComponentUpdaterTest() {
EXPECT_CALL(update_client(), RemoveObserver(_)).Times(1);
+ worker_pool_->pool()->Shutdown();
component_updater_.reset();
}
diff --git a/components/rlz/rlz_tracker_unittest.cc b/components/rlz/rlz_tracker_unittest.cc
index ba505ee..eb33d89 100644
--- a/components/rlz/rlz_tracker_unittest.cc
+++ b/components/rlz/rlz_tracker_unittest.cc
@@ -8,8 +8,8 @@
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/utf_string_conversions.h"
-#include "base/test/sequenced_worker_pool_owner.h"
#include "base/thread_task_runner_handle.h"
+#include "base/threading/sequenced_worker_pool.h"
#include "base/time/time.h"
#include "components/rlz/rlz_tracker_delegate.h"
#include "net/url_request/url_request_test_util.h"
@@ -30,10 +30,12 @@ namespace {
class TestRLZTrackerDelegate : public RLZTrackerDelegate {
public:
TestRLZTrackerDelegate()
- : worker_pool_owner_(1, "TestRLZTracker"),
+ : worker_pool_(new base::SequencedWorkerPool(1, "TestRLZTracker")),
request_context_getter_(new net::TestURLRequestContextGetter(
base::ThreadTaskRunnerHandle::Get())) {}
+ ~TestRLZTrackerDelegate() override { worker_pool_->Shutdown(); }
+
void set_brand(const char* brand) { brand_override_ = brand; }
void set_reactivation_brand(const char* reactivation_brand) {
@@ -66,7 +68,7 @@ class TestRLZTrackerDelegate : public RLZTrackerDelegate {
bool IsOnUIThread() override { return true; }
base::SequencedWorkerPool* GetBlockingPool() override {
- return worker_pool_owner_.pool().get();
+ return worker_pool_.get();
}
net::URLRequestContextGetter* GetRequestContext() override {
@@ -106,7 +108,7 @@ class TestRLZTrackerDelegate : public RLZTrackerDelegate {
}
private:
- base::SequencedWorkerPoolOwner worker_pool_owner_;
+ scoped_refptr<base::SequencedWorkerPool> worker_pool_;
scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
std::string brand_override_;
diff --git a/components/update_client/update_client_unittest.cc b/components/update_client/update_client_unittest.cc
index d8ad6df..c5bccb0 100644
--- a/components/update_client/update_client_unittest.cc
+++ b/components/update_client/update_client_unittest.cc
@@ -137,6 +137,7 @@ class UpdateClientTest : public testing::Test {
protected:
void RunThreads();
+ void StopWorkerPool();
// Returns the full path to a test file.
static base::FilePath TestFilePath(const char* file);
@@ -177,6 +178,10 @@ void UpdateClientTest::RunThreads() {
runloop_.Run();
}
+void UpdateClientTest::StopWorkerPool() {
+ worker_pool_->pool()->Shutdown();
+}
+
base::FilePath UpdateClientTest::TestFilePath(const char* file) {
base::FilePath path;
PathService::Get(base::DIR_SOURCE_ROOT, &path);
@@ -282,6 +287,8 @@ TEST_F(UpdateClientTest, OneCrxNoUpdate) {
RunThreads();
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Tests the scenario where two CRXs are checked for updates. On CRX has
@@ -463,6 +470,8 @@ TEST_F(UpdateClientTest, TwoCrxUpdateNoUpdate) {
RunThreads();
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Tests the update check for two CRXs scenario. Both CRXs have updates.
@@ -699,6 +708,8 @@ TEST_F(UpdateClientTest, TwoCrxUpdate) {
RunThreads();
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Tests the scenario where there is a download timeout for the first
@@ -935,6 +946,8 @@ TEST_F(UpdateClientTest, TwoCrxUpdateDownloadTimeout) {
RunThreads();
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Tests the differential update scenario for one CRX.
@@ -1199,6 +1212,8 @@ TEST_F(UpdateClientTest, OneCrxDiffUpdate) {
}
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Tests the update scenario for one CRX where the CRX installer returns
@@ -1391,6 +1406,8 @@ TEST_F(UpdateClientTest, OneCrxInstallError) {
RunThreads();
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Tests the fallback from differential to full update scenario for one CRX.
@@ -1674,6 +1691,8 @@ TEST_F(UpdateClientTest, OneCrxDiffUpdateFailsFullUpdateSucceeds) {
}
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Tests the queuing of update checks. In this scenario, two update checks are
@@ -1778,6 +1797,8 @@ TEST_F(UpdateClientTest, OneCrxNoUpdateQueuedCall) {
RunThreads();
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Tests the install of one CRX.
@@ -1949,6 +1970,8 @@ TEST_F(UpdateClientTest, OneCrxInstall) {
RunThreads();
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Tests that overlapping installs of the same CRX result in an error.
@@ -2061,6 +2084,8 @@ TEST_F(UpdateClientTest, ConcurrentInstallSameCRX) {
RunThreads();
update_client->RemoveObserver(&observer);
+
+ StopWorkerPool();
}
// Make sure that we don't get any crashes when trying to update an empty list
@@ -2119,6 +2144,8 @@ TEST_F(UpdateClientTest, EmptyIdList) {
empty_id_list, base::Bind(&DataCallbackFake::Callback),
base::Bind(&CompletionCallbackFake::Callback, runloop.QuitClosure()));
runloop.Run();
+
+ StopWorkerPool();
}
} // namespace update_client
diff --git a/content/browser/media/webrtc_identity_store_unittest.cc b/content/browser/media/webrtc_identity_store_unittest.cc
index 025e2f3..b97808d 100644
--- a/content/browser/media/webrtc_identity_store_unittest.cc
+++ b/content/browser/media/webrtc_identity_store_unittest.cc
@@ -49,6 +49,8 @@ class WebRtcIdentityStoreTest : public testing::Test {
webrtc_identity_store_->SetTaskRunnerForTesting(pool_owner_->pool());
}
+ ~WebRtcIdentityStoreTest() override { pool_owner_->pool()->Shutdown(); }
+
void SetValidityPeriod(base::TimeDelta validity_period) {
webrtc_identity_store_->SetValidityPeriodForTesting(validity_period);
}
diff --git a/content/browser/net/quota_policy_cookie_store_unittest.cc b/content/browser/net/quota_policy_cookie_store_unittest.cc
index ca33d6e..f7987c5 100644
--- a/content/browser/net/quota_policy_cookie_store_unittest.cc
+++ b/content/browser/net/quota_policy_cookie_store_unittest.cc
@@ -109,6 +109,7 @@ class QuotaPolicyCookieStoreTest : public testing::Test {
// tasks that block pool shutdown (e.g. |store_|'s cleanup) have run before
// yielding control.
pool_owner_->pool()->FlushForTesting();
+ pool_owner_->pool()->Shutdown();
pool_owner_.reset(new base::SequencedWorkerPoolOwner(3, "Background Pool"));
}
@@ -118,6 +119,7 @@ class QuotaPolicyCookieStoreTest : public testing::Test {
void TearDown() override {
DestroyStore();
+ pool_owner_->pool()->Shutdown();
}
TestBrowserThreadBundle bundle_;
diff --git a/net/base/file_stream_unittest.cc b/net/base/file_stream_unittest.cc
index a36e5ce..b83cc18 100644
--- a/net/base/file_stream_unittest.cc
+++ b/net/base/file_stream_unittest.cc
@@ -13,9 +13,9 @@
#include "base/run_loop.h"
#include "base/strings/string_util.h"
#include "base/synchronization/waitable_event.h"
-#include "base/test/sequenced_worker_pool_owner.h"
#include "base/test/test_timeouts.h"
#include "base/thread_task_runner_handle.h"
+#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_restrictions.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
@@ -714,10 +714,11 @@ TEST_F(FileStreamTest, WriteClose) {
}
TEST_F(FileStreamTest, OpenAndDelete) {
- base::SequencedWorkerPoolOwner pool_owner(1, "StreamTest");
+ scoped_refptr<base::SequencedWorkerPool> pool(
+ new base::SequencedWorkerPool(1, "StreamTest"));
bool prev = base::ThreadRestrictions::SetIOAllowed(false);
- scoped_ptr<FileStream> stream(new FileStream(pool_owner.pool()));
+ scoped_ptr<FileStream> stream(new FileStream(pool.get()));
int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE |
base::File::FLAG_ASYNC;
TestCompletionCallback open_callback;
@@ -729,12 +730,14 @@ TEST_F(FileStreamTest, OpenAndDelete) {
stream.reset();
// Force an operation through the pool.
- scoped_ptr<FileStream> stream2(new FileStream(pool_owner.pool()));
+ scoped_ptr<FileStream> stream2(new FileStream(pool.get()));
TestCompletionCallback open_callback2;
rv = stream2->Open(temp_file_path(), flags, open_callback2.callback());
EXPECT_EQ(OK, open_callback2.GetResult(rv));
stream2.reset();
+ pool->Shutdown();
+
// open_callback won't be called.
base::RunLoop().RunUntilIdle();
EXPECT_FALSE(open_callback.have_result());
diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store_perftest.cc b/net/extras/sqlite/sqlite_persistent_cookie_store_perftest.cc
index 4be580b..b149ac0 100644
--- a/net/extras/sqlite/sqlite_persistent_cookie_store_perftest.cc
+++ b/net/extras/sqlite/sqlite_persistent_cookie_store_perftest.cc
@@ -99,6 +99,7 @@ class SQLitePersistentCookieStorePerfTest : public testing::Test {
void TearDown() override {
store_ = NULL;
+ pool_owner_->pool()->Shutdown();
}
protected:
diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc
index 92965ee..fd140ea 100644
--- a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc
+++ b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc
@@ -196,6 +196,7 @@ class SQLitePersistentCookieStoreTest : public testing::Test {
void TearDown() override {
DestroyStore();
+ pool_owner_->pool()->Shutdown();
}
protected:
diff --git a/net/url_request/url_request_simple_job_unittest.cc b/net/url_request/url_request_simple_job_unittest.cc
index 08c08fb..1286977 100644
--- a/net/url_request/url_request_simple_job_unittest.cc
+++ b/net/url_request/url_request_simple_job_unittest.cc
@@ -6,7 +6,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/run_loop.h"
#include "base/strings/stringprintf.h"
-#include "base/test/sequenced_worker_pool_owner.h"
+#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/worker_pool.h"
#include "net/base/request_priority.h"
#include "net/url_request/url_request_job.h"
@@ -114,12 +114,11 @@ class SimpleJobProtocolHandler :
class URLRequestSimpleJobTest : public ::testing::Test {
public:
URLRequestSimpleJobTest()
- : worker_pool_owner_(1, "URLRequestSimpleJobTest"),
- task_runner_(worker_pool_owner_.pool()
- ->GetSequencedTaskRunnerWithShutdownBehavior(
- worker_pool_owner_.pool()
- ->GetSequenceToken(),
- base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)),
+ : worker_pool_(
+ new base::SequencedWorkerPool(1, "URLRequestSimpleJobTest")),
+ task_runner_(worker_pool_->GetSequencedTaskRunnerWithShutdownBehavior(
+ worker_pool_->GetSequenceToken(),
+ base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)),
context_(true) {
job_factory_.SetProtocolHandler(
"data", make_scoped_ptr(new SimpleJobProtocolHandler(task_runner_)));
@@ -130,6 +129,8 @@ class URLRequestSimpleJobTest : public ::testing::Test {
context_.CreateRequest(GURL("data:test"), DEFAULT_PRIORITY, &delegate_);
}
+ ~URLRequestSimpleJobTest() override { worker_pool_->Shutdown(); }
+
void StartRequest(const HttpRequestHeaders* headers) {
if (headers)
request_->SetExtraRequestHeaders(*headers);
@@ -140,8 +141,10 @@ class URLRequestSimpleJobTest : public ::testing::Test {
EXPECT_FALSE(request_->is_pending());
}
+ void TearDown() override { worker_pool_->Shutdown(); }
+
protected:
- base::SequencedWorkerPoolOwner worker_pool_owner_;
+ scoped_refptr<base::SequencedWorkerPool> worker_pool_;
scoped_refptr<base::SequencedTaskRunner> task_runner_;
TestURLRequestContext context_;
URLRequestJobFactoryImpl job_factory_;
diff --git a/ui/app_list/search/history_data_store_unittest.cc b/ui/app_list/search/history_data_store_unittest.cc
index 6af4dc0..26890f4 100644
--- a/ui/app_list/search/history_data_store_unittest.cc
+++ b/ui/app_list/search/history_data_store_unittest.cc
@@ -9,7 +9,7 @@
#include "base/memory/ref_counted.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
-#include "base/test/sequenced_worker_pool_owner.h"
+#include "base/threading/sequenced_worker_pool.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/app_list/search/dictionary_data_store.h"
#include "ui/app_list/search/history_data.h"
@@ -41,10 +41,12 @@ std::string GetDataContent(const HistoryData::Data& data) {
class HistoryDataStoreTest : public testing::Test {
public:
- HistoryDataStoreTest() : worker_pool_owner_(1, "AppLanucherTest") {}
+ HistoryDataStoreTest() {}
+ ~HistoryDataStoreTest() override {}
// testing::Test overrides:
void SetUp() override {
+ worker_pool_ = new base::SequencedWorkerPool(1, "AppLauncherTest");
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
}
void TearDown() override {
@@ -55,7 +57,7 @@ class HistoryDataStoreTest : public testing::Test {
void OpenStore(const std::string& file_name) {
data_file_ = temp_dir_.path().AppendASCII(file_name);
store_ = new HistoryDataStore(scoped_refptr<DictionaryDataStore>(
- new DictionaryDataStore(data_file_, worker_pool_owner_.pool().get())));
+ new DictionaryDataStore(data_file_, worker_pool_.get())));
Load();
}
@@ -93,7 +95,7 @@ class HistoryDataStoreTest : public testing::Test {
base::ScopedTempDir temp_dir_;
base::FilePath data_file_;
scoped_ptr<base::RunLoop> run_loop_;
- base::SequencedWorkerPoolOwner worker_pool_owner_;
+ scoped_refptr<base::SequencedWorkerPool> worker_pool_;
scoped_refptr<HistoryDataStore> store_;
HistoryData::Associations associations_;