Index: content/common/gpu/gpu_channel_test_common.cc |
diff --git a/content/common/gpu/gpu_channel_test_common.cc b/content/common/gpu/gpu_channel_test_common.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fe6f700014dca4e232da161ef52cd0e9b759b2bf |
--- /dev/null |
+++ b/content/common/gpu/gpu_channel_test_common.cc |
@@ -0,0 +1,169 @@ |
+// Copyright (c) 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 "content/common/gpu/gpu_channel_test_common.h" |
+ |
+#include "base/test/test_simple_task_runner.h" |
+#include "base/thread_task_runner_handle.h" |
+#include "content/common/gpu/gpu_channel_manager_delegate.h" |
+#include "gpu/command_buffer/service/sync_point_manager.h" |
+#include "ipc/ipc_test_sink.h" |
+#include "url/gurl.h" |
+ |
+namespace content { |
+ |
+TestGpuChannelManagerDelegate::TestGpuChannelManagerDelegate() {} |
+ |
+TestGpuChannelManagerDelegate::~TestGpuChannelManagerDelegate() {} |
+ |
+void TestGpuChannelManagerDelegate::SetActiveURL(const GURL& url) {} |
+ |
+void TestGpuChannelManagerDelegate::AddSubscription(int32_t client_id, |
+ unsigned int target) {} |
+ |
+void TestGpuChannelManagerDelegate::DidCreateOffscreenContext( |
+ const GURL& active_url) {} |
+ |
+void TestGpuChannelManagerDelegate::DidDestroyChannel(int client_id) {} |
+ |
+void TestGpuChannelManagerDelegate::DidDestroyOffscreenContext( |
+ const GURL& active_url) {} |
+ |
+void TestGpuChannelManagerDelegate::DidLoseContext( |
+ bool offscreen, |
+ gpu::error::ContextLostReason reason, |
+ const GURL& active_url) {} |
+ |
+void TestGpuChannelManagerDelegate::GpuMemoryUmaStats( |
+ const gpu::GPUMemoryUmaStats& params) {} |
+ |
+void TestGpuChannelManagerDelegate::RemoveSubscription(int32_t client_id, |
+ unsigned int target) {} |
+ |
+void TestGpuChannelManagerDelegate::StoreShaderToDisk( |
+ int32_t client_id, |
+ const std::string& key, |
+ const std::string& shader) {} |
+ |
+#if defined(OS_MACOSX) |
+void TestGpuChannelManagerDelegate::SendAcceleratedSurfaceBuffersSwapped( |
+ int32_t surface_id, |
+ CAContextID ca_context_id, |
+ const gfx::ScopedRefCountedIOSurfaceMachPort& io_surface, |
+ const gfx::Size& size, |
+ float scale_factor, |
+ std::vector<ui::LatencyInfo> latency_info) {} |
+#endif |
+ |
+#if defined(OS_WIN) |
+void TestGpuChannelManagerDelegate::SendAcceleratedSurfaceCreatedChildWindow( |
+ gpu::SurfaceHandle parent_window, |
+ gpu::SurfaceHandle child_window) {} |
+#endif |
+ |
+TestGpuChannelManager::TestGpuChannelManager( |
+ const gpu::GpuPreferences& gpu_preferences, |
+ GpuChannelManagerDelegate* delegate, |
+ base::SingleThreadTaskRunner* task_runner, |
+ base::SingleThreadTaskRunner* io_task_runner, |
+ gpu::SyncPointManager* sync_point_manager, |
+ GpuMemoryBufferFactory* gpu_memory_buffer_factory) |
+ : GpuChannelManager(gpu_preferences, |
+ delegate, |
+ nullptr, |
+ task_runner, |
+ io_task_runner, |
+ nullptr, |
+ sync_point_manager, |
+ gpu_memory_buffer_factory) {} |
+ |
+TestGpuChannelManager::~TestGpuChannelManager() { |
+ // Clear gpu channels here so that any IPC messages sent are handled using the |
+ // overridden Send method. |
+ gpu_channels_.clear(); |
+} |
+ |
+scoped_ptr<GpuChannel> TestGpuChannelManager::CreateGpuChannel( |
+ int client_id, |
+ uint64_t client_tracing_id, |
+ bool preempts, |
+ bool allow_view_command_buffers, |
+ bool allow_real_time_streams) { |
+ return make_scoped_ptr(new TestGpuChannel( |
+ this, sync_point_manager(), share_group(), mailbox_manager(), |
+ preempts ? preemption_flag() : nullptr, |
+ preempts ? nullptr : preemption_flag(), task_runner_.get(), |
+ io_task_runner_.get(), client_id, client_tracing_id, |
+ allow_view_command_buffers, allow_real_time_streams)); |
+} |
+ |
+TestGpuChannel::TestGpuChannel(GpuChannelManager* gpu_channel_manager, |
+ gpu::SyncPointManager* sync_point_manager, |
+ gfx::GLShareGroup* share_group, |
+ gpu::gles2::MailboxManager* mailbox_manager, |
+ gpu::PreemptionFlag* preempting_flag, |
+ gpu::PreemptionFlag* preempted_flag, |
+ base::SingleThreadTaskRunner* task_runner, |
+ base::SingleThreadTaskRunner* io_task_runner, |
+ int client_id, |
+ uint64_t client_tracing_id, |
+ bool allow_view_command_buffers, |
+ bool allow_real_time_streams) |
+ : GpuChannel(gpu_channel_manager, |
+ sync_point_manager, |
+ nullptr, |
+ share_group, |
+ mailbox_manager, |
+ preempting_flag, |
+ preempted_flag, |
+ task_runner, |
+ io_task_runner, |
+ client_id, |
+ client_tracing_id, |
+ allow_view_command_buffers, |
+ allow_real_time_streams) {} |
+ |
+TestGpuChannel::~TestGpuChannel() { |
+ // Call stubs here so that any IPC messages sent are handled using the |
+ // overridden Send method. |
+ stubs_.clear(); |
+} |
+ |
+base::ProcessId TestGpuChannel::GetClientPID() const { |
+ return base::kNullProcessId; |
+} |
+ |
+IPC::ChannelHandle TestGpuChannel::Init(base::WaitableEvent* shutdown_event) { |
+ filter_->OnFilterAdded(&sink_); |
+ return IPC::ChannelHandle(channel_id()); |
+} |
+ |
+bool TestGpuChannel::Send(IPC::Message* msg) { |
+ DCHECK(!msg->is_sync()); |
+ return sink_.Send(msg); |
+} |
+ |
+// TODO(sunnyps): Use a mock memory buffer factory when necessary. |
+GpuChannelTestCommon::GpuChannelTestCommon() |
+ : task_runner_(new base::TestSimpleTaskRunner), |
+ io_task_runner_(new base::TestSimpleTaskRunner), |
+ sync_point_manager_(new gpu::SyncPointManager(false)), |
+ channel_manager_delegate_(new TestGpuChannelManagerDelegate()), |
+ channel_manager_( |
+ new TestGpuChannelManager(gpu_preferences_, |
+ channel_manager_delegate_.get(), |
+ task_runner_.get(), |
+ io_task_runner_.get(), |
+ sync_point_manager_.get(), |
+ nullptr)) {} |
+ |
+GpuChannelTestCommon::~GpuChannelTestCommon() { |
+ // Destroying channels causes tasks to run on the IO task runner. |
+ channel_manager_ = nullptr; |
+ // Clear pending tasks to avoid refptr cycles that get flagged by ASAN. |
+ task_runner_->ClearPendingTasks(); |
+ io_task_runner_->ClearPendingTasks(); |
+} |
+ |
+} // namespace content |