blob: 810f1c96d0875938de0b2460aaddcb4eaf4568f4 [file] [log] [blame]
// Copyright 2015 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.
#include "base/test/test_simple_task_runner.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/compositor/compositor.h"
#include "ui/compositor/test/context_factories_for_test.h"
namespace ui {
namespace {
// Test fixture for tests that require a ui::Compositor with a real task
// runner.
class CompositorTest : public testing::Test {
public:
CompositorTest() {}
~CompositorTest() override {}
void SetUp() override {
task_runner_ = new base::TestSimpleTaskRunner;
ui::ContextFactory* context_factory =
ui::InitializeContextFactoryForTests(false);
compositor_.reset(new ui::Compositor(gfx::kNullAcceleratedWidget,
context_factory, task_runner_));
}
void TearDown() override {
compositor_.reset();
ui::TerminateContextFactoryForTests();
}
protected:
base::TestSimpleTaskRunner* task_runner() { return task_runner_.get(); }
ui::Compositor* compositor() { return compositor_.get(); }
private:
scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
scoped_ptr<ui::Compositor> compositor_;
DISALLOW_COPY_AND_ASSIGN(CompositorTest);
};
} // namespace
TEST_F(CompositorTest, LocksTimeOut) {
scoped_refptr<ui::CompositorLock> lock;
// Ensure that the lock times out by default.
lock = compositor()->GetCompositorLock();
EXPECT_TRUE(compositor()->IsLocked());
task_runner()->RunUntilIdle();
EXPECT_FALSE(compositor()->IsLocked());
// Ensure that the lock does not time out when set.
compositor()->SetLocksWillTimeOut(false);
lock = compositor()->GetCompositorLock();
EXPECT_TRUE(compositor()->IsLocked());
task_runner()->RunUntilIdle();
EXPECT_TRUE(compositor()->IsLocked());
}
} // namespace ui