Chromium Code Reviews| Index: ui/aura/test/mus/test_context_factory.cc |
| diff --git a/ui/aura/test/mus/test_context_factory.cc b/ui/aura/test/mus/test_context_factory.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..c3df3dccde3cbe8794569e1a26124b3e22af811c |
| --- /dev/null |
| +++ b/ui/aura/test/mus/test_context_factory.cc |
| @@ -0,0 +1,86 @@ |
| +// Copyright 2017 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 "ui/aura/test/mus/test_context_factory.h" |
| + |
| +#include "base/threading/thread_task_runner_handle.h" |
| +#include "cc/output/compositor_frame.h" |
| +#include "cc/output/compositor_frame_sink_client.h" |
| +#include "cc/scheduler/begin_frame_source.h" |
| +#include "cc/scheduler/delay_based_time_source.h" |
| +#include "cc/test/fake_compositor_frame_sink.h" |
| + |
| +namespace aura { |
| +namespace test { |
| + |
| +namespace { |
| + |
| +class FakeCompositorFrameSink : public cc::FakeCompositorFrameSink { |
|
danakj
2017/03/17 14:10:57
Can this be cc/test/'s FakeCompositorFrameSink?
sadrul
2017/03/17 15:31:11
cc/test's FakeCompositorFrameSink does not install
danakj
2017/03/17 15:33:14
Ya sure! My high level theology here is that one f
sadrul
2017/03/17 16:50:29
Done.
|
| + public: |
| + FakeCompositorFrameSink() |
| + : cc::FakeCompositorFrameSink(cc::TestContextProvider::Create(), |
| + cc::TestContextProvider::CreateWorker()) {} |
| + ~FakeCompositorFrameSink() override = default; |
| + |
| + private: |
| + // cc::FakeCompositorFrameSink: |
| + bool BindToClient(cc::CompositorFrameSinkClient* client) override { |
| + if (!cc::FakeCompositorFrameSink::BindToClient(client)) |
| + return false; |
| + begin_frame_source_ = base::MakeUnique<cc::BackToBackBeginFrameSource>( |
| + base::MakeUnique<cc::DelayBasedTimeSource>( |
| + base::ThreadTaskRunnerHandle::Get().get())); |
| + client_->SetBeginFrameSource(begin_frame_source_.get()); |
| + return true; |
| + } |
| + |
| + std::unique_ptr<cc::BeginFrameSource> begin_frame_source_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(FakeCompositorFrameSink); |
| +}; |
| + |
| +} // namespace |
| + |
| +const cc::CompositorFrame& TestContextFactory::GetLastCompositorFrame() const { |
| + return *frame_sink_->last_sent_frame(); |
| +} |
| + |
| +void TestContextFactory::CreateCompositorFrameSink( |
|
danakj
2017/03/17 14:10:57
Can you put this in ui/compositor/test/ so we don'
sadrul
2017/03/17 16:50:29
Done.
|
| + base::WeakPtr<ui::Compositor> compositor) { |
| + auto frame_sink = base::MakeUnique<FakeCompositorFrameSink>(); |
| + frame_sink_ = frame_sink.get(); |
| + compositor->SetCompositorFrameSink(std::move(frame_sink)); |
| +} |
| + |
| +scoped_refptr<cc::ContextProvider> |
| +TestContextFactory::SharedMainThreadContextProvider() { |
| + return nullptr; |
| +} |
| + |
| +void TestContextFactory::RemoveCompositor(ui::Compositor* compositor) { |
| + frame_sink_ = nullptr; |
| +} |
| + |
| +bool TestContextFactory::DoesCreateTestContexts() { |
| + return true; |
| +} |
| + |
| +uint32_t TestContextFactory::GetImageTextureTarget(gfx::BufferFormat format, |
| + gfx::BufferUsage usage) { |
| + return GL_TEXTURE_2D; |
| +} |
| + |
| +gpu::GpuMemoryBufferManager* TestContextFactory::GetGpuMemoryBufferManager() { |
| + return &gpu_memory_buffer_manager_; |
| +} |
| + |
| +cc::TaskGraphRunner* TestContextFactory::GetTaskGraphRunner() { |
| + return &task_graph_runner_; |
| +} |
| + |
| +void TestContextFactory::AddObserver(ui::ContextFactoryObserver* observer) {} |
| +void TestContextFactory::RemoveObserver(ui::ContextFactoryObserver* observer) {} |
| + |
| +} // namespace test |
| +} // namespace aura |