OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <map> | 5 #include <map> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 int expected_size_; | 69 int expected_size_; |
70 }; | 70 }; |
71 | 71 |
72 class MockVideoCaptureHost : public VideoCaptureHost { | 72 class MockVideoCaptureHost : public VideoCaptureHost { |
73 public: | 73 public: |
74 MockVideoCaptureHost(content::ResourceContext* resource_context, | 74 MockVideoCaptureHost(content::ResourceContext* resource_context, |
75 media::AudioManager* audio_manager) | 75 media::AudioManager* audio_manager) |
76 : VideoCaptureHost(resource_context, audio_manager), | 76 : VideoCaptureHost(resource_context, audio_manager), |
77 return_buffers_(false), | 77 return_buffers_(false), |
78 dump_video_(false) {} | 78 dump_video_(false) {} |
79 virtual ~MockVideoCaptureHost() { | |
80 STLDeleteContainerPairSecondPointers(filled_dib_.begin(), | |
81 filled_dib_.end()); | |
82 } | |
83 | 79 |
84 // A list of mock methods. | 80 // A list of mock methods. |
85 MOCK_METHOD4(OnNewBufferCreated, | 81 MOCK_METHOD4(OnNewBufferCreated, |
86 void(int device_id, base::SharedMemoryHandle handle, | 82 void(int device_id, base::SharedMemoryHandle handle, |
87 int length, int buffer_id)); | 83 int length, int buffer_id)); |
88 MOCK_METHOD3(OnBufferFilled, | 84 MOCK_METHOD3(OnBufferFilled, |
89 void(int device_id, int buffer_id, base::Time timestamp)); | 85 void(int device_id, int buffer_id, base::Time timestamp)); |
90 MOCK_METHOD2(OnStateChanged, | 86 MOCK_METHOD2(OnStateChanged, |
91 void(int device_id, video_capture::State state)); | 87 void(int device_id, video_capture::State state)); |
92 MOCK_METHOD1(OnDeviceInfo, void(int device_id)); | 88 MOCK_METHOD1(OnDeviceInfo, void(int device_id)); |
93 | 89 |
94 // Use class DumpVideo to write I420 video to file. | 90 // Use class DumpVideo to write I420 video to file. |
95 void SetDumpVideo(bool enable) { | 91 void SetDumpVideo(bool enable) { |
96 dump_video_ = enable; | 92 dump_video_ = enable; |
97 } | 93 } |
| 94 |
98 void SetReturnReceviedDibs(bool enable) { | 95 void SetReturnReceviedDibs(bool enable) { |
99 return_buffers_ = enable; | 96 return_buffers_ = enable; |
100 } | 97 } |
101 | 98 |
102 // Return Dibs we currently have received. | 99 // Return Dibs we currently have received. |
103 void ReturnReceivedDibs(int device_id) { | 100 void ReturnReceivedDibs(int device_id) { |
104 int handle = GetReceivedDib(); | 101 int handle = GetReceivedDib(); |
105 while (handle) { | 102 while (handle) { |
106 this->OnReceiveEmptyBuffer(device_id, handle); | 103 this->OnReceiveEmptyBuffer(device_id, handle); |
107 handle = GetReceivedDib(); | 104 handle = GetReceivedDib(); |
108 } | 105 } |
109 } | 106 } |
| 107 |
110 int GetReceivedDib() { | 108 int GetReceivedDib() { |
111 if (filled_dib_.empty()) | 109 if (filled_dib_.empty()) |
112 return 0; | 110 return 0; |
113 std::map<int, base::SharedMemory*>::iterator it = filled_dib_.begin(); | 111 std::map<int, base::SharedMemory*>::iterator it = filled_dib_.begin(); |
114 int h = it->first; | 112 int h = it->first; |
115 delete it->second; | 113 delete it->second; |
116 filled_dib_.erase(it); | 114 filled_dib_.erase(it); |
117 | 115 |
118 return h; | 116 return h; |
119 } | 117 } |
120 | 118 |
121 private: | 119 private: |
| 120 virtual ~MockVideoCaptureHost() { |
| 121 STLDeleteContainerPairSecondPointers(filled_dib_.begin(), |
| 122 filled_dib_.end()); |
| 123 } |
| 124 |
122 // This method is used to dispatch IPC messages to the renderer. We intercept | 125 // This method is used to dispatch IPC messages to the renderer. We intercept |
123 // these messages here and dispatch to our mock methods to verify the | 126 // these messages here and dispatch to our mock methods to verify the |
124 // conversation between this object and the renderer. | 127 // conversation between this object and the renderer. |
125 virtual bool Send(IPC::Message* message) { | 128 virtual bool Send(IPC::Message* message) { |
126 CHECK(message); | 129 CHECK(message); |
127 | 130 |
128 // In this method we dispatch the messages to the according handlers as if | 131 // In this method we dispatch the messages to the according handlers as if |
129 // we are the renderer. | 132 // we are the renderer. |
130 bool handled = true; | 133 bool handled = true; |
131 IPC_BEGIN_MESSAGE_MAP(MockVideoCaptureHost, *message) | 134 IPC_BEGIN_MESSAGE_MAP(MockVideoCaptureHost, *message) |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 } | 400 } |
398 | 401 |
399 #ifdef DUMP_VIDEO | 402 #ifdef DUMP_VIDEO |
400 TEST_F(VideoCaptureHostTest, CaptureAndDumpVideoVga) { | 403 TEST_F(VideoCaptureHostTest, CaptureAndDumpVideoVga) { |
401 CaptureAndDumpVideo(640, 480, 30); | 404 CaptureAndDumpVideo(640, 480, 30); |
402 } | 405 } |
403 TEST_F(VideoCaptureHostTest, CaptureAndDump720P) { | 406 TEST_F(VideoCaptureHostTest, CaptureAndDump720P) { |
404 CaptureAndDumpVideo(1280, 720, 30); | 407 CaptureAndDumpVideo(1280, 720, 30); |
405 } | 408 } |
406 #endif | 409 #endif |
OLD | NEW |