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

Unified Diff: content/renderer/media/video_capture_message_filter_unittest.cc

Issue 23551011: From Video Capture, abolish OnFrameInfo and enable resolution changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix constant declaration issue. Created 7 years, 2 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
Index: content/renderer/media/video_capture_message_filter_unittest.cc
diff --git a/content/renderer/media/video_capture_message_filter_unittest.cc b/content/renderer/media/video_capture_message_filter_unittest.cc
index 3dec39d5de3ecd7035f81f86a75e611df2b555c4..069673fb818f5aeb75699cefd316904f05c1b999 100644
--- a/content/renderer/media/video_capture_message_filter_unittest.cc
+++ b/content/renderer/media/video_capture_message_filter_unittest.cc
@@ -3,125 +3,68 @@
// found in the LICENSE file.
#include "base/memory/shared_memory.h"
-#include "base/message_loop/message_loop.h"
#include "content/common/media/video_capture_messages.h"
#include "content/renderer/media/video_capture_message_filter.h"
+#include "ipc/ipc_test_sink.h"
+#include "media/video/capture/video_capture_types.h"
+#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+using ::testing::_;
+using ::testing::AllOf;
+using ::testing::AnyNumber;
+using ::testing::Field;
+using ::testing::Mock;
+using ::testing::Return;
+using ::testing::StrictMock;
+
namespace content {
namespace {
class MockVideoCaptureDelegate : public VideoCaptureMessageFilter::Delegate {
public:
- MockVideoCaptureDelegate() {
- Reset();
- device_id_received_ = false;
- device_id_ = 0;
- }
-
- virtual void OnBufferCreated(base::SharedMemoryHandle handle,
- int length, int buffer_id) OVERRIDE {
- buffer_created_ = true;
- handle_ = handle;
- }
-
- // Called when a video frame buffer is received from the browser process.
- virtual void OnBufferReceived(int buffer_id, base::Time timestamp) OVERRIDE {
- buffer_received_ = true;
- buffer_id_ = buffer_id;
- timestamp_ = timestamp;
- }
-
- virtual void OnStateChanged(VideoCaptureState state) OVERRIDE {
- state_changed_received_ = true;
- state_ = state;
- }
-
- virtual void OnDeviceInfoReceived(
- const media::VideoCaptureParams& params) OVERRIDE {
- device_info_received_ = true;
- params_.width = params.width;
- params_.height = params.height;
- params_.frame_rate = params.frame_rate;
- }
+ MockVideoCaptureDelegate() : device_id_(0) {}
+
+ // VideoCaptureMessageFilter::Delegate implementation.
+ MOCK_METHOD3(OnBufferCreated, void(base::SharedMemoryHandle handle,
+ int length,
+ int buffer_id));
+ MOCK_METHOD1(OnBufferDestroyed, void(int buffer_id));
+ MOCK_METHOD3(OnBufferReceived, void(int buffer_id,
+ base::Time timestamp,
+ const media::VideoCaptureFormat& format));
+ MOCK_METHOD1(OnStateChanged, void(VideoCaptureState state));
virtual void OnDelegateAdded(int32 device_id) OVERRIDE {
- device_id_received_ = true;
+ ASSERT_TRUE(device_id != 0);
+ ASSERT_TRUE(device_id_ == 0);
device_id_ = device_id;
}
- void Reset() {
- buffer_created_ = false;
- handle_ = base::SharedMemory::NULLHandle();
-
- buffer_received_ = false;
- buffer_id_ = -1;
- timestamp_ = base::Time();
-
- state_changed_received_ = false;
- state_ = VIDEO_CAPTURE_STATE_ERROR;
-
- device_info_received_ = false;
- params_.width = 0;
- params_.height = 0;
- params_.frame_rate = 0;
- }
-
- bool buffer_created() { return buffer_created_; }
- base::SharedMemoryHandle received_buffer_handle() { return handle_; }
-
- bool buffer_received() { return buffer_received_; }
- int received_buffer_id() { return buffer_id_; }
- base::Time received_buffer_ts() { return timestamp_; }
-
- bool state_changed_received() { return state_changed_received_; }
- VideoCaptureState state() { return state_; }
-
- bool device_info_receive() { return device_info_received_; }
- const media::VideoCaptureParams& received_device_info() { return params_; }
-
- int32 device_id() { return device_id_; }
+ int device_id() { return device_id_; }
private:
- bool buffer_created_;
- base::SharedMemoryHandle handle_;
-
- bool buffer_received_;
- int buffer_id_;
- base::Time timestamp_;
-
- bool state_changed_received_;
- VideoCaptureState state_;
-
- bool device_info_received_;
- media::VideoCaptureParams params_;
-
- bool device_id_received_;
- int32 device_id_;
-
- DISALLOW_COPY_AND_ASSIGN(MockVideoCaptureDelegate);
+ int device_id_;
};
} // namespace
TEST(VideoCaptureMessageFilterTest, Basic) {
- base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
-
scoped_refptr<VideoCaptureMessageFilter> filter(
new VideoCaptureMessageFilter());
- filter->channel_ = reinterpret_cast<IPC::Channel*>(1);
+ IPC::TestSink channel;
+ filter->OnFilterAdded(&channel);
MockVideoCaptureDelegate delegate;
filter->AddDelegate(&delegate);
+ ASSERT_EQ(1, delegate.device_id());
// VideoCaptureMsg_StateChanged
- EXPECT_FALSE(delegate.state_changed_received());
+ EXPECT_CALL(delegate, OnStateChanged(VIDEO_CAPTURE_STATE_STARTED));
filter->OnMessageReceived(
VideoCaptureMsg_StateChanged(delegate.device_id(),
VIDEO_CAPTURE_STATE_STARTED));
- EXPECT_TRUE(delegate.state_changed_received());
- EXPECT_TRUE(VIDEO_CAPTURE_STATE_STARTED == delegate.state());
- delegate.Reset();
+ Mock::VerifyAndClearExpectations(&delegate);
// VideoCaptureMsg_NewBuffer
const base::SharedMemoryHandle handle =
@@ -130,92 +73,70 @@ TEST(VideoCaptureMessageFilterTest, Basic) {
#else
base::SharedMemoryHandle(10, true);
#endif
- EXPECT_FALSE(delegate.buffer_created());
+ EXPECT_CALL(delegate, OnBufferCreated(handle, 100, 1));
filter->OnMessageReceived(VideoCaptureMsg_NewBuffer(
- delegate.device_id(), handle, 1, 1));
- EXPECT_TRUE(delegate.buffer_created());
- EXPECT_EQ(handle, delegate.received_buffer_handle());
- delegate.Reset();
+ delegate.device_id(), handle, 100, 1));
+ Mock::VerifyAndClearExpectations(&delegate);
// VideoCaptureMsg_BufferReady
- int buffer_id = 1;
+ int buffer_id = 22;
base::Time timestamp = base::Time::FromInternalValue(1);
- EXPECT_FALSE(delegate.buffer_received());
+ media::VideoCaptureFormat format(234, 512, 30,
+ media::ConstantResolutionVideoCaptureDevice);
+ EXPECT_CALL(delegate, OnBufferReceived(buffer_id, timestamp,
+ AllOf(Field(&media::VideoCaptureFormat::width, 234),
+ Field(&media::VideoCaptureFormat::height, 512),
+ Field(&media::VideoCaptureFormat::frame_rate, 30))));
filter->OnMessageReceived(VideoCaptureMsg_BufferReady(
- delegate.device_id(), buffer_id, timestamp));
- EXPECT_TRUE(delegate.buffer_received());
- EXPECT_EQ(buffer_id, delegate.received_buffer_id());
- EXPECT_TRUE(timestamp == delegate.received_buffer_ts());
- delegate.Reset();
-
- // VideoCaptureMsg_DeviceInfo
- media::VideoCaptureParams params;
- params.width = 320;
- params.height = 240;
- params.frame_rate = 30;
-
- EXPECT_FALSE(delegate.device_info_receive());
- filter->OnMessageReceived(VideoCaptureMsg_DeviceInfo(
- delegate.device_id(), params));
- EXPECT_TRUE(delegate.device_info_receive());
- EXPECT_EQ(params.width, delegate.received_device_info().width);
- EXPECT_EQ(params.height, delegate.received_device_info().height);
- EXPECT_EQ(params.frame_rate,
- delegate.received_device_info().frame_rate);
- delegate.Reset();
-
- message_loop.RunUntilIdle();
+ delegate.device_id(), buffer_id, timestamp, format));
+ Mock::VerifyAndClearExpectations(&delegate);
+
+ // VideoCaptureMsg_FreeBuffer
+ EXPECT_CALL(delegate, OnBufferDestroyed(buffer_id));
+ filter->OnMessageReceived(VideoCaptureMsg_FreeBuffer(
+ delegate.device_id(), buffer_id));
+ Mock::VerifyAndClearExpectations(&delegate);
}
TEST(VideoCaptureMessageFilterTest, Delegates) {
- base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
-
scoped_refptr<VideoCaptureMessageFilter> filter(
new VideoCaptureMessageFilter());
- filter->channel_ = reinterpret_cast<IPC::Channel*>(1);
- MockVideoCaptureDelegate delegate1;
- MockVideoCaptureDelegate delegate2;
+ IPC::TestSink channel;
+ filter->OnFilterAdded(&channel);
+
+ StrictMock<MockVideoCaptureDelegate> delegate1;
+ StrictMock<MockVideoCaptureDelegate> delegate2;
filter->AddDelegate(&delegate1);
filter->AddDelegate(&delegate2);
+ ASSERT_EQ(1, delegate1.device_id());
+ ASSERT_EQ(2, delegate2.device_id());
// Send an IPC message. Make sure the correct delegate gets called.
- EXPECT_FALSE(delegate1.state_changed_received());
- EXPECT_FALSE(delegate2.state_changed_received());
+ EXPECT_CALL(delegate1, OnStateChanged(VIDEO_CAPTURE_STATE_STARTED));
filter->OnMessageReceived(
VideoCaptureMsg_StateChanged(delegate1.device_id(),
VIDEO_CAPTURE_STATE_STARTED));
- EXPECT_TRUE(delegate1.state_changed_received());
- EXPECT_FALSE(delegate2.state_changed_received());
- delegate1.Reset();
+ Mock::VerifyAndClearExpectations(&delegate1);
- EXPECT_FALSE(delegate1.state_changed_received());
- EXPECT_FALSE(delegate2.state_changed_received());
+ EXPECT_CALL(delegate2, OnStateChanged(VIDEO_CAPTURE_STATE_STARTED));
filter->OnMessageReceived(
VideoCaptureMsg_StateChanged(delegate2.device_id(),
VIDEO_CAPTURE_STATE_STARTED));
- EXPECT_FALSE(delegate1.state_changed_received());
- EXPECT_TRUE(delegate2.state_changed_received());
- delegate2.Reset();
+ Mock::VerifyAndClearExpectations(&delegate2);
// Remove the delegates. Make sure they won't get called.
filter->RemoveDelegate(&delegate1);
- EXPECT_FALSE(delegate1.state_changed_received());
filter->OnMessageReceived(
VideoCaptureMsg_StateChanged(delegate1.device_id(),
- VIDEO_CAPTURE_STATE_STARTED));
- EXPECT_FALSE(delegate1.state_changed_received());
+ VIDEO_CAPTURE_STATE_ENDED));
filter->RemoveDelegate(&delegate2);
- EXPECT_FALSE(delegate2.state_changed_received());
filter->OnMessageReceived(
VideoCaptureMsg_StateChanged(delegate2.device_id(),
- VIDEO_CAPTURE_STATE_STARTED));
- EXPECT_FALSE(delegate2.state_changed_received());
-
- message_loop.RunUntilIdle();
+ VIDEO_CAPTURE_STATE_ENDED));
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698