| Index: ash/display/display_color_manager_chromeos_unittest.cc
|
| diff --git a/ash/display/display_color_manager_chromeos_unittest.cc b/ash/display/display_color_manager_chromeos_unittest.cc
|
| index 081042e8a6c9018434b992bee9ca55f068d5e9ba..f99db713f976a2ef748db55a8ff777ae037ddb5b 100644
|
| --- a/ash/display/display_color_manager_chromeos_unittest.cc
|
| +++ b/ash/display/display_color_manager_chromeos_unittest.cc
|
| @@ -13,6 +13,8 @@
|
| #include "base/test/scoped_path_override.h"
|
| #include "base/test/sequenced_worker_pool_owner.h"
|
| #include "chromeos/chromeos_paths.h"
|
| +#include "components/quirks/quirks_manager.h"
|
| +#include "net/url_request/url_request_context_getter.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "ui/display/chromeos/test/action_logger_util.h"
|
| #include "ui/display/chromeos/test/test_display_snapshot.h"
|
| @@ -22,30 +24,79 @@ namespace ash {
|
|
|
| namespace {
|
|
|
| -// Monitors if any task is processed by the message loop.
|
| -class TaskObserver : public base::MessageLoop::TaskObserver {
|
| +const char kSetGammaAction[] =
|
| + "set_gamma_ramp(id=123,rgb[0]*rgb[255]=???????????\?)";
|
| +
|
| +class DisplayColorManagerForTest : public DisplayColorManager {
|
| public:
|
| - TaskObserver() { base::MessageLoop::current()->AddTaskObserver(this); }
|
| - ~TaskObserver() override {
|
| - base::MessageLoop::current()->RemoveTaskObserver(this);
|
| - }
|
| + DisplayColorManagerForTest(ui::DisplayConfigurator* configurator,
|
| + base::SequencedWorkerPool* blocking_pool)
|
| + : DisplayColorManager(configurator, blocking_pool) {}
|
|
|
| - // MessageLoop::TaskObserver overrides.
|
| - void WillProcessTask(const base::PendingTask& pending_task) override {}
|
| - void DidProcessTask(const base::PendingTask& pending_task) override {
|
| - base::MessageLoop::current()->QuitWhenIdle();
|
| + void SetOnFinishedForTest(base::Closure on_finished_for_test) {
|
| + on_finished_for_test_ = on_finished_for_test;
|
| }
|
|
|
| private:
|
| - DISALLOW_COPY_AND_ASSIGN(TaskObserver);
|
| + void FinishLoadCalibrationForDisplay(int64_t display_id,
|
| + int64_t product_id,
|
| + ui::DisplayConnectionType type,
|
| + const base::FilePath& path,
|
| + bool file_downloaded) override {
|
| + DisplayColorManager::FinishLoadCalibrationForDisplay(
|
| + display_id, product_id, type, path, file_downloaded);
|
| + // If path is empty, there is no icc file, and the DCM's work is done.
|
| + if (path.empty() && !on_finished_for_test_.is_null()) {
|
| + on_finished_for_test_.Run();
|
| + on_finished_for_test_.Reset();
|
| + }
|
| + }
|
| +
|
| + void UpdateCalibrationData(int64_t display_id,
|
| + int64_t product_id,
|
| + scoped_ptr<ColorCalibrationData> data) override {
|
| + DisplayColorManager::UpdateCalibrationData(display_id, product_id,
|
| + std::move(data));
|
| + if (!on_finished_for_test_.is_null()) {
|
| + on_finished_for_test_.Run();
|
| + on_finished_for_test_.Reset();
|
| + }
|
| + }
|
| +
|
| + base::Closure on_finished_for_test_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DisplayColorManagerForTest);
|
| };
|
|
|
| -// Run at least one task. WARNING: Will not return unless there is at least one
|
| -// task to be processed.
|
| -void RunBlockingPoolTask() {
|
| - TaskObserver task_observer;
|
| - base::RunLoop().Run();
|
| -}
|
| +// Implementation of QuirksManager::Delegate to fake chrome-restricted parts.
|
| +class QuirksManagerDelegateTestImpl : public quirks::QuirksManager::Delegate {
|
| + public:
|
| + QuirksManagerDelegateTestImpl(base::FilePath color_path)
|
| + : color_path_(color_path) {}
|
| +
|
| + // Unused by these tests.
|
| + std::string GetApiKey() const override { return std::string(); }
|
| +
|
| + base::FilePath GetBuiltInDisplayProfileDirectory() const override {
|
| + return color_path_;
|
| + }
|
| +
|
| + // Unused by these tests.
|
| + base::FilePath GetDownloadDisplayProfileDirectory() const override {
|
| + return base::FilePath();
|
| + }
|
| +
|
| + // Unused by these tests.
|
| + void GetDaysSinceOobe(
|
| + quirks::QuirksManager::DaysSinceOobeCallback callback) const override {}
|
| +
|
| + private:
|
| + ~QuirksManagerDelegateTestImpl() override = default;
|
| +
|
| + base::FilePath color_path_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(QuirksManagerDelegateTestImpl);
|
| +};
|
|
|
| } // namespace
|
|
|
| @@ -61,8 +112,8 @@ class DisplayColorManagerTest : public testing::Test {
|
| configurator_.SetDelegateForTesting(
|
| scoped_ptr<ui::NativeDisplayDelegate>(native_display_delegate_));
|
|
|
| - color_manager_.reset(
|
| - new DisplayColorManager(&configurator_, pool_owner_->pool().get()));
|
| + color_manager_.reset(new DisplayColorManagerForTest(
|
| + &configurator_, pool_owner_->pool().get()));
|
|
|
| EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &color_path_));
|
|
|
| @@ -71,9 +122,23 @@ class DisplayColorManagerTest : public testing::Test {
|
| .Append(FILE_PATH_LITERAL("test_data"));
|
| path_override_.reset(new base::ScopedPathOverride(
|
| chromeos::DIR_DEVICE_COLOR_CALIBRATION_PROFILES, color_path_));
|
| +
|
| + quirks::QuirksManager::Initialize(
|
| + scoped_ptr<quirks::QuirksManager::Delegate>(
|
| + new QuirksManagerDelegateTestImpl(color_path_)),
|
| + pool_owner_->pool().get(), nullptr, nullptr);
|
| + }
|
| +
|
| + void TearDown() override {
|
| + quirks::QuirksManager::Shutdown();
|
| + pool_owner_->pool()->Shutdown();
|
| }
|
|
|
| - void TearDown() override { pool_owner_->pool()->Shutdown(); }
|
| + void WaitOnColorCalibration() {
|
| + base::RunLoop run_loop;
|
| + color_manager_->SetOnFinishedForTest(run_loop.QuitClosure());
|
| + run_loop.Run();
|
| + }
|
|
|
| DisplayColorManagerTest() : test_api_(&configurator_) {}
|
| ~DisplayColorManagerTest() override {}
|
| @@ -85,7 +150,7 @@ class DisplayColorManagerTest : public testing::Test {
|
| ui::DisplayConfigurator configurator_;
|
| ui::DisplayConfigurator::TestApi test_api_;
|
| ui::test::TestNativeDisplayDelegate* native_display_delegate_; // not owned
|
| - scoped_ptr<DisplayColorManager> color_manager_;
|
| + scoped_ptr<DisplayColorManagerForTest> color_manager_;
|
|
|
| base::MessageLoopForUI ui_message_loop_;
|
| scoped_ptr<base::SequencedWorkerPoolOwner> pool_owner_;
|
| @@ -114,13 +179,10 @@ TEST_F(DisplayColorManagerTest, VCGTOnly) {
|
|
|
| configurator_.OnConfigurationChanged();
|
| EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
|
| - log_->GetActionsAndClear();
|
| -
|
| - RunBlockingPoolTask();
|
|
|
| - EXPECT_TRUE(base::MatchPattern(
|
| - log_->GetActionsAndClear(),
|
| - "set_gamma_ramp(id=123,rgb[0]*rgb[255]=???????????\?)"));
|
| + log_->GetActionsAndClear();
|
| + WaitOnColorCalibration();
|
| + EXPECT_TRUE(base::MatchPattern(log_->GetActionsAndClear(), kSetGammaAction));
|
| }
|
|
|
| TEST_F(DisplayColorManagerTest, NoMatchProductID) {
|
| @@ -145,7 +207,7 @@ TEST_F(DisplayColorManagerTest, NoMatchProductID) {
|
| EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
|
|
|
| log_->GetActionsAndClear();
|
| - RunBlockingPoolTask();
|
| + WaitOnColorCalibration();
|
| EXPECT_STREQ("", log_->GetActionsAndClear().c_str());
|
| }
|
|
|
| @@ -171,7 +233,7 @@ TEST_F(DisplayColorManagerTest, NoVCGT) {
|
| EXPECT_TRUE(test_api_.TriggerConfigureTimeout());
|
|
|
| log_->GetActionsAndClear();
|
| - RunBlockingPoolTask();
|
| + WaitOnColorCalibration();
|
| EXPECT_STREQ("", log_->GetActionsAndClear().c_str());
|
| }
|
|
|
|
|