Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Unified Diff: chrome/renderer/gpu_video_decoder_host_unittest.cc

Issue 6713005: Move a bunch of gpu/worker/plugin renderer code to content. I temporarily disabled the sad plugi... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/gpu_video_decoder_host.cc ('k') | chrome/renderer/gpu_video_service_host.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/gpu_video_decoder_host_unittest.cc
===================================================================
--- chrome/renderer/gpu_video_decoder_host_unittest.cc (revision 78516)
+++ chrome/renderer/gpu_video_decoder_host_unittest.cc (working copy)
@@ -1,265 +0,0 @@
-// Copyright (c) 2011 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/message_loop.h"
-#include "chrome/renderer/gpu_video_decoder_host.h"
-#include "content/common/message_router.h"
-#include "content/common/gpu_messages.h"
-#include "media/base/pipeline.h"
-#include "media/video/video_mock_objects.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using testing::_;
-using testing::DoAll;
-using testing::NotNull;
-using testing::Return;
-using testing::SetArgumentPointee;
-
-static const int kContextRouteId = 50;
-static const int kDecoderHostId = 51;
-static const int kDecoderId = 51;
-static const int kVideoFrames = 3;
-static const int kWidth = 320;
-static const int kHeight = 240;
-static const int kFrameRateNumerator = 25;
-static const int kFrameRateDenominator = 1;
-static const int kTransportBufferSize = 1024;
-
-ACTION_P(SimulateAllocateVideoFrames, frames) {
- // Fake some texture IDs here.
- media::VideoFrame::GlTexture textures[] = {4, 5, 6};
- for (int i = 0; i < kVideoFrames; ++i) {
- scoped_refptr<media::VideoFrame> frame;
- media::VideoFrame::CreateFrameGlTexture(media::VideoFrame::YV12,
- kWidth, kHeight, textures,
- &frame);
- frames->push_back(frame);
- arg4->push_back(frame);
- }
-
- // Execute the callback to complete the task.
- arg5->Run();
- delete arg5;
-}
-
-ACTION_P2(SendMessage, handler, msg) {
- handler->OnMessageReceived(msg);
-}
-
-class GpuVideoDecoderHostTest : public testing::Test,
- public IPC::Message::Sender,
- public media::VideoDecodeEngine::EventHandler {
- public:
- // This method is used to dispatch IPC messages to mock methods.
- virtual bool Send(IPC::Message* msg) {
- EXPECT_TRUE(msg);
- if (!msg)
- return false;
-
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(GpuVideoDecoderHostTest, *msg)
- IPC_MESSAGE_HANDLER(GpuChannelMsg_CreateVideoDecoder,
- OnCreateVideoDecoder)
- IPC_MESSAGE_HANDLER(GpuVideoDecoderMsg_Initialize,
- OnInitialize)
- IPC_MESSAGE_HANDLER(GpuVideoDecoderMsg_Destroy,
- OnDestroy)
- IPC_MESSAGE_HANDLER(GpuVideoDecoderMsg_Flush,
- OnFlush)
- IPC_MESSAGE_HANDLER(GpuVideoDecoderMsg_EmptyThisBuffer,
- OnEmptyThisBuffer)
- IPC_MESSAGE_HANDLER(GpuVideoDecoderMsg_VideoFrameAllocated,
- OnVideoFrameAllocated)
- IPC_MESSAGE_HANDLER(GpuVideoDecoderMsg_ProduceVideoFrame,
- OnProduceVideoFrame)
- IPC_MESSAGE_UNHANDLED_ERROR()
- IPC_END_MESSAGE_MAP()
- EXPECT_TRUE(handled);
- delete msg;
- return true;
- }
-
- // Mock methods for outgoing messages.
- MOCK_METHOD1(OnInitialize, void(GpuVideoDecoderInitParam param));
- MOCK_METHOD0(OnDestroy, void());
- MOCK_METHOD0(OnFlush, void());
- MOCK_METHOD1(OnEmptyThisBuffer,
- void(GpuVideoDecoderInputBufferParam param));
- MOCK_METHOD1(OnProduceVideoFrame, void(int32 frame_id));
- MOCK_METHOD2(OnVideoFrameAllocated,
- void(int32 frame_id, std::vector<uint32> textures));
- MOCK_METHOD2(OnCreateVideoDecoder,
- void(int32 context_route_id, int32 decoder_host_id));
-
- // Mock methods for VideoDecodeEngine::EventHandler.
- MOCK_METHOD1(ProduceVideoSample,
- void(scoped_refptr<media::Buffer> buffer));
- MOCK_METHOD2(ConsumeVideoFrame,
- void(scoped_refptr<media::VideoFrame> frame,
- const media::PipelineStatistics& statistics));
- MOCK_METHOD1(OnInitializeComplete,
- void(const media::VideoCodecInfo& info));
- MOCK_METHOD0(OnUninitializeComplete, void());
- MOCK_METHOD0(OnFlushComplete, void());
- MOCK_METHOD0(OnSeekComplete, void());
- MOCK_METHOD0(OnError, void());
- MOCK_METHOD1(OnFormatChange,
- void(media::VideoStreamInfo stream_info));
-
- void Initialize() {
- decoder_host_.reset(
- new GpuVideoDecoderHost(&router_, this, kContextRouteId,
- kDecoderHostId));
- shared_memory_.reset(new base::SharedMemory());
- shared_memory_->CreateAnonymous(kTransportBufferSize);
-
- GpuVideoDecoderHostMsg_CreateVideoDecoderDone msg1(kDecoderHostId,
- kDecoderId);
- EXPECT_CALL(*this, OnCreateVideoDecoder(kContextRouteId, kDecoderHostId))
- .WillOnce(SendMessage(decoder_host_.get(), msg1));
-
- GpuVideoDecoderInitDoneParam param;
- param.success = true;
- param.input_buffer_size = kTransportBufferSize;
- param.input_buffer_handle = shared_memory_->handle();
-
- GpuVideoDecoderHostMsg_InitializeACK msg2(kDecoderHostId, param);
- EXPECT_CALL(*this, OnInitialize(_))
- .WillOnce(SendMessage(decoder_host_.get(), msg2));
- EXPECT_CALL(*this, OnInitializeComplete(_));
-
- media::VideoCodecConfig config(
- media::kCodecH264,
- kWidth,
- kHeight,
- kFrameRateNumerator,
- kFrameRateDenominator,
- NULL,
- 0);
- decoder_host_->Initialize(&message_loop_, this, &context_, config);
- message_loop_.RunAllPending();
- }
-
- void Uninitialize() {
- // A message is sent to GPU process to destroy the decoder.
- GpuVideoDecoderHostMsg_DestroyACK msg(kDecoderHostId);
- EXPECT_CALL(*this, OnDestroy())
- .WillOnce(SendMessage(decoder_host_.get(), msg));
- EXPECT_CALL(context_, ReleaseAllVideoFrames());
- EXPECT_CALL(*this, OnUninitializeComplete());
- decoder_host_->Uninitialize();
- }
-
- void AllocateVideoFrames() {
- // Expect context is called to allocate video frames.
- EXPECT_CALL(context_,
- AllocateVideoFrames(kVideoFrames, kWidth, kHeight,
- media::VideoFrame::YV12,
- NotNull(), NotNull()))
- .WillOnce(SimulateAllocateVideoFrames(&frames_))
- .RetiresOnSaturation();
-
- // Expect that we send the video frames to the GPU process.
- EXPECT_CALL(*this, OnVideoFrameAllocated(_, _))
- .Times(kVideoFrames)
- .RetiresOnSaturation();
-
- // Pretend that a message is sent to GpuVideoDecoderHost to allocate
- // video frames.
- GpuVideoDecoderHostMsg_AllocateVideoFrames msg(
- kDecoderHostId, kVideoFrames, kWidth, kHeight,
- static_cast<int32>(media::VideoFrame::YV12));
- decoder_host_->OnMessageReceived(msg);
- }
-
- void ReleaseVideoFrames() {
- // Expect that context is called to release all video frames.
- EXPECT_CALL(context_, ReleaseAllVideoFrames())
- .RetiresOnSaturation();
-
- // Pretend a message is sent to release all video frames.
- GpuVideoDecoderHostMsg_ReleaseAllVideoFrames msg(kDecoderHostId);
- decoder_host_->OnMessageReceived(msg);
-
- // Clear the list of video frames allocated.
- frames_.clear();
- }
-
- void ProduceVideoFrame(int first_frame_id) {
- for (int i = 0; i < kVideoFrames; ++i) {
- // Expect that a request is received to produce a video frame.
- GpuVideoDecoderHostMsg_ConsumeVideoFrame msg(
- kDecoderHostId, first_frame_id + i, 0, 0, 0);
- EXPECT_CALL(*this, OnProduceVideoFrame(first_frame_id + i))
- .WillOnce(SendMessage(decoder_host_.get(), msg))
- .RetiresOnSaturation();
-
- // Expect that a reply is made when a video frame is ready.
- EXPECT_CALL(*this, ConsumeVideoFrame(frames_[i], _))
- .RetiresOnSaturation();
-
- // Use the allocated video frames to make a request.
- decoder_host_->ProduceVideoFrame(frames_[i]);
- }
- }
-
- private:
- MessageLoop message_loop_;
- MessageRouter router_;
- media::MockVideoDecodeContext context_;
-
- scoped_ptr<GpuVideoDecoderHost> decoder_host_;
- scoped_ptr<base::SharedMemory> shared_memory_;
-
- // Keeps the video frames allocated.
- std::vector<scoped_refptr<media::VideoFrame> > frames_;
-};
-
-// Test that when we initialize GpuVideoDecoderHost the corresponding
-// IPC messages are sent and at the end OnInitializeComplete() is
-// called with the right parameters.
-TEST_F(GpuVideoDecoderHostTest, Initialize) {
- Initialize();
-}
-
-// Test that the sequence of method calls and IPC messages is correct.
-// And at the end OnUninitializeComplete() is called.
-TEST_F(GpuVideoDecoderHostTest, Uninitialize) {
- Initialize();
- Uninitialize();
-}
-
-// Test that IPC messages are sent to GpuVideoDecoderHost and it
-// calls VideoDecodeContext to allocate textures and send these
-// textures back to the GPU process by IPC messages.
-TEST_F(GpuVideoDecoderHostTest, AllocateVideoFrames) {
- Initialize();
- AllocateVideoFrames();
- Uninitialize();
-}
-
-// Test that IPC messages are sent to GpuVideoDecoderHost to
-// release textures and VideoDecodeContext is called correctly.
-TEST_F(GpuVideoDecoderHostTest, ReleaseVideoFrames) {
- Initialize();
- AllocateVideoFrames();
- ReleaseVideoFrames();
- AllocateVideoFrames();
- ReleaseVideoFrames();
- Uninitialize();
-}
-
-// Test the sequence of IPC messages and methods calls for a decode
-// routine. This tests the output port only.
-TEST_F(GpuVideoDecoderHostTest, ProduceVideoFrame) {
- Initialize();
- AllocateVideoFrames();
- ProduceVideoFrame(0);
- ReleaseVideoFrames();
- AllocateVideoFrames();
- ProduceVideoFrame(kVideoFrames);
- ReleaseVideoFrames();
- Uninitialize();
-}
« no previous file with comments | « chrome/renderer/gpu_video_decoder_host.cc ('k') | chrome/renderer/gpu_video_service_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698