Index: chromeos/printing/ppd_provider_unittest.cc |
diff --git a/chromeos/printing/ppd_provider_unittest.cc b/chromeos/printing/ppd_provider_unittest.cc |
index ea57417e75da8570c7a3ca65571ca5deabdad58b..1019fa1a20c08de589692f9ec8e9b4fe46e9eed8 100644 |
--- a/chromeos/printing/ppd_provider_unittest.cc |
+++ b/chromeos/printing/ppd_provider_unittest.cc |
@@ -14,6 +14,7 @@ |
#include "base/run_loop.h" |
#include "base/single_thread_task_runner.h" |
#include "base/strings/stringprintf.h" |
+#include "base/test/scoped_task_environment.h" |
#include "base/test/test_message_loop.h" |
#include "base/threading/sequenced_task_runner_handle.h" |
#include "base/threading/thread_task_runner_handle.h" |
@@ -59,9 +60,10 @@ More random contents that we don't care about. |
class PpdProviderTest : public ::testing::Test { |
public: |
PpdProviderTest() |
- : loop_(base::MessageLoop::TYPE_IO), |
+ : scoped_task_environment_( |
+ base::test::ScopedTaskEnvironment::MainThreadType::IO), |
request_context_getter_(new net::TestURLRequestContextGetter( |
- base::MessageLoop::current()->task_runner())) {} |
+ scoped_task_environment_.GetMainThreadTaskRunner())) {} |
void SetUp() override { |
ASSERT_TRUE(ppd_cache_temp_dir_.CreateUniqueTempDir()); |
@@ -74,19 +76,17 @@ class PpdProviderTest : public ::testing::Test { |
auto provider_options = PpdProvider::Options(); |
provider_options.ppd_server_root = std::string("https://") + kPpdServer; |
- return PpdProvider::Create( |
- locale, request_context_getter_.get(), |
- PpdCache::Create(ppd_cache_temp_dir_.GetPath(), |
- base::MessageLoop::current()->task_runner()), |
- loop_.task_runner().get(), provider_options); |
+ return PpdProvider::Create(locale, request_context_getter_.get(), |
+ PpdCache::Create(ppd_cache_temp_dir_.GetPath()), |
+ provider_options); |
} |
// Create an interceptor that serves a small fileset of ppd server files. |
void StartFakePpdServer() { |
ASSERT_TRUE(interceptor_temp_dir_.CreateUniqueTempDir()); |
interceptor_ = base::MakeUnique<net::TestURLRequestInterceptor>( |
- "https", kPpdServer, base::ThreadTaskRunnerHandle::Get(), |
- base::ThreadTaskRunnerHandle::Get()); |
+ "https", kPpdServer, scoped_task_environment_.GetMainThreadTaskRunner(), |
+ scoped_task_environment_.GetMainThreadTaskRunner()); |
// Use brace initialization to express the desired server contents as "url", |
// "contents" pairs. |
std::vector<std::pair<std::string, std::string>> server_contents = { |
@@ -157,7 +157,7 @@ class PpdProviderTest : public ::testing::Test { |
// Note this is harmless to call if we haven't started a fake ppd server. |
void StopFakePpdServer() { |
interceptor_.reset(); |
- base::RunLoop().RunUntilIdle(); |
+ scoped_task_environment_.RunUntilIdle(); |
} |
// Capture the result of a ResolveManufacturers() call. |
@@ -202,7 +202,7 @@ class PpdProviderTest : public ::testing::Test { |
auto provider = CreateProvider(browser_locale); |
provider->ResolveManufacturers(base::Bind( |
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this))); |
- base::RunLoop().RunUntilIdle(); |
+ scoped_task_environment_.RunUntilIdle(); |
provider = nullptr; |
ASSERT_EQ(captured_resolve_manufacturers_.size(), 1UL); |
EXPECT_EQ(captured_resolve_manufacturers_[0].first, PpdProvider::SUCCESS); |
@@ -216,20 +216,8 @@ class PpdProviderTest : public ::testing::Test { |
result_vec.end()); |
} |
- // Drain tasks both on the loop we use for network/disk activity and the |
- // top-level loop that we're using in the test itself. Unfortunately, even |
- // thought the TestURLRequestContextGetter tells the url fetcher to run on the |
- // current message loop, some deep backend processes can get put into other |
- // loops, which means we can't just trust RunLoop::RunUntilIdle() to drain |
- // outstanding work. |
- void Drain(const PpdProvider& provider) { |
- do { |
- base::RunLoop().RunUntilIdle(); |
- } while (!provider.Idle()); |
- } |
- |
- // Message loop that runs on the current thread. |
- base::TestMessageLoop loop_; |
+ // Environment for task schedulers. |
+ base::test::ScopedTaskEnvironment scoped_task_environment_; |
std::vector< |
std::pair<PpdProvider::CallbackResultCode, std::vector<std::string>>> |
@@ -271,7 +259,7 @@ TEST_F(PpdProviderTest, ManufacturersFetch) { |
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this))); |
provider->ResolveManufacturers(base::Bind( |
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(2UL, captured_resolve_manufacturers_.size()); |
std::vector<std::string> expected_result( |
{"manufacturer_a_en", "manufacturer_b_en"}); |
@@ -291,7 +279,7 @@ TEST_F(PpdProviderTest, ManufacturersFetchNoServer) { |
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this))); |
provider->ResolveManufacturers(base::Bind( |
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(2UL, captured_resolve_manufacturers_.size()); |
EXPECT_EQ(PpdProvider::SERVER_ERROR, |
captured_resolve_manufacturers_[0].first); |
@@ -337,7 +325,7 @@ TEST_F(PpdProviderTest, UsbResolution) { |
provider->ResolveUsbIds(1234, 1782, |
base::Bind(&PpdProviderTest::CaptureResolveUsbIds, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(captured_resolve_usb_ids_.size(), static_cast<size_t>(4)); |
EXPECT_EQ(captured_resolve_usb_ids_[0].first, PpdProvider::SUCCESS); |
@@ -365,7 +353,7 @@ TEST_F(PpdProviderTest, ResolvePrinters) { |
// should be in it and we check that elsewhere. We just need to run the |
// resolve to populate the internal PpdProvider structures. |
provider->ResolveManufacturers(base::Bind(&ResolveManufacturersNop)); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
provider->ResolvePrinters("manufacturer_a_en", |
base::Bind(&PpdProviderTest::CaptureResolvePrinters, |
@@ -373,7 +361,7 @@ TEST_F(PpdProviderTest, ResolvePrinters) { |
provider->ResolvePrinters("manufacturer_b_en", |
base::Bind(&PpdProviderTest::CaptureResolvePrinters, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(2UL, captured_resolve_printers_.size()); |
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_printers_[0].first); |
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_printers_[1].first); |
@@ -396,12 +384,12 @@ TEST_F(PpdProviderTest, ResolvePrintersBadReference) { |
StartFakePpdServer(); |
auto provider = CreateProvider("en"); |
provider->ResolveManufacturers(base::Bind(&ResolveManufacturersNop)); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
provider->ResolvePrinters("bogus_doesnt_exist", |
base::Bind(&PpdProviderTest::CaptureResolvePrinters, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(1UL, captured_resolve_printers_.size()); |
EXPECT_EQ(PpdProvider::INTERNAL_ERROR, captured_resolve_printers_[0].first); |
} |
@@ -411,7 +399,7 @@ TEST_F(PpdProviderTest, ResolvePrintersNoServer) { |
StartFakePpdServer(); |
auto provider = CreateProvider("en"); |
provider->ResolveManufacturers(base::Bind(&ResolveManufacturersNop)); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
StopFakePpdServer(); |
@@ -421,7 +409,7 @@ TEST_F(PpdProviderTest, ResolvePrintersNoServer) { |
provider->ResolvePrinters("manufacturer_b_en", |
base::Bind(&PpdProviderTest::CaptureResolvePrinters, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(2UL, captured_resolve_printers_.size()); |
EXPECT_EQ(PpdProvider::SERVER_ERROR, captured_resolve_printers_[0].first); |
EXPECT_EQ(PpdProvider::SERVER_ERROR, captured_resolve_printers_[1].first); |
@@ -438,7 +426,7 @@ TEST_F(PpdProviderTest, ResolveServerKeyPpd) { |
ref.effective_make_and_model = "printer_c_ref"; |
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(2UL, captured_resolve_ppd_.size()); |
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code); |
@@ -460,7 +448,7 @@ TEST_F(PpdProviderTest, ResolveUserSuppliedUrlPpdFromNetworkFails) { |
"https://%s/user_supplied_ppd_directory/user_supplied.ppd", kPpdServer); |
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(1UL, captured_resolve_ppd_.size()); |
EXPECT_EQ(PpdProvider::INTERNAL_ERROR, captured_resolve_ppd_[0].code); |
@@ -487,7 +475,7 @@ TEST_F(PpdProviderTest, ResolveUserSuppliedUrlPpdFromFile) { |
base::StringPrintf("file://%s", filename.MaybeAsASCII().c_str()); |
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(1UL, captured_resolve_ppd_.size()); |
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code); |
@@ -513,7 +501,7 @@ TEST_F(PpdProviderTest, ResolvedPpdsGetCached) { |
base::StringPrintf("file://%s", filename.MaybeAsASCII().c_str()); |
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(1UL, captured_resolve_ppd_.size()); |
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code); |
@@ -532,7 +520,7 @@ TEST_F(PpdProviderTest, ResolvedPpdsGetCached) { |
// Re-resolve. |
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(1UL, captured_resolve_ppd_.size()); |
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code); |
@@ -551,7 +539,7 @@ TEST_F(PpdProviderTest, ExtractPpdFilters) { |
ref.effective_make_and_model = "printer_b_ref"; |
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd, |
base::Unretained(this))); |
- Drain(*provider); |
+ scoped_task_environment_.RunUntilIdle(); |
ASSERT_EQ(2UL, captured_resolve_ppd_.size()); |
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code); |