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 |