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

Unified Diff: content/browser/renderer_host/media/media_stream_device_settings_unittest.cc

Issue 10829190: Resolve the problems where we can leak the system tray UI (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed testbots. Created 8 years, 4 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/browser/renderer_host/media/media_stream_device_settings_unittest.cc
diff --git a/content/browser/renderer_host/media/media_stream_device_settings_unittest.cc b/content/browser/renderer_host/media/media_stream_device_settings_unittest.cc
index c8c2061361bfaf571d27b82fd48fc7ab8f29bc41..a8df32dc0dd5afc7fb73c7d421c3fa8705cad40a 100644
--- a/content/browser/renderer_host/media/media_stream_device_settings_unittest.cc
+++ b/content/browser/renderer_host/media/media_stream_device_settings_unittest.cc
@@ -15,6 +15,7 @@
using content::BrowserThread;
using content::BrowserThreadImpl;
+using testing::_;
namespace media_stream {
@@ -23,7 +24,7 @@ class MediaStreamDeviceSettingsTest
: public ::testing::Test,
public SettingsRequester {
public:
- MediaStreamDeviceSettingsTest() : label_("dummy_stream") {}
+ MediaStreamDeviceSettingsTest() {}
// Mock implementation of SettingsRequester;
MOCK_METHOD2(DevicesAccepted, void(const std::string&,
@@ -44,18 +45,25 @@ class MediaStreamDeviceSettingsTest
message_loop_->RunAllPending();
}
- void CreateDummyRequest() {
+ void CreateDummyRequest(const std::string& label, bool audio, bool video) {
int dummy_render_process_id = 1;
int dummy_render_view_id = 1;
- StreamOptions components(true, false);
+ StreamOptions components(audio, video);
GURL security_origin;
- device_settings_->RequestCaptureDeviceUsage(label_,
+ device_settings_->RequestCaptureDeviceUsage(label,
dummy_render_process_id,
dummy_render_view_id,
components,
security_origin);
+ if (audio)
+ CreateAudioDeviceForRequset(label);
- // Setup the dummy available device for the reqest.
+ if (video)
+ CreateVideoDeviceForRequset(label);
+ }
+
+ void CreateAudioDeviceForRequset(const std::string& label) {
+ // Setup the dummy available device for the request.
media_stream::StreamDeviceInfoArray audio_device_array(1);
media_stream::StreamDeviceInfo dummy_audio_device;
dummy_audio_device.name = "Microphone";
@@ -63,35 +71,105 @@ class MediaStreamDeviceSettingsTest
content::MEDIA_STREAM_DEVICE_TYPE_AUDIO_CAPTURE;
dummy_audio_device.session_id = 1;
audio_device_array[0] = dummy_audio_device;
- device_settings_->AvailableDevices(label_,
+ device_settings_->AvailableDevices(label,
dummy_audio_device.stream_type,
audio_device_array);
}
+ void CreateVideoDeviceForRequset(const std::string& label) {
+ // Setup the dummy available device for the request.
+ media_stream::StreamDeviceInfoArray video_device_array(1);
+ media_stream::StreamDeviceInfo dummy_video_device;
+ dummy_video_device.name = "camera";
+ dummy_video_device.stream_type =
+ content::MEDIA_STREAM_DEVICE_TYPE_VIDEO_CAPTURE;
+ dummy_video_device.session_id = 1;
+ video_device_array[0] = dummy_video_device;
+ device_settings_->AvailableDevices(label,
+ dummy_video_device.stream_type,
+ video_device_array);
+ }
+
scoped_ptr<MessageLoop> message_loop_;
scoped_ptr<BrowserThreadImpl> ui_thread_;
scoped_ptr<BrowserThreadImpl> io_thread_;
scoped_ptr<MediaStreamDeviceSettings> device_settings_;
- const std::string label_;
private:
DISALLOW_COPY_AND_ASSIGN(MediaStreamDeviceSettingsTest);
};
TEST_F(MediaStreamDeviceSettingsTest, GenerateRequest) {
- CreateDummyRequest();
+ const std::string label = "dummy_label";
+ CreateDummyRequest(label, true, false);
// Expecting an error callback triggered by the non-existing
// RenderViewHostImpl.
- EXPECT_CALL(*this, SettingsError(label_))
- .Times(1);
+ EXPECT_CALL(*this, SettingsError(label));
}
TEST_F(MediaStreamDeviceSettingsTest, GenerateAndRemoveRequest) {
- CreateDummyRequest();
+ const std::string label = "label";
+ CreateDummyRequest(label, true, false);
+
+ // Remove the current request, it should not crash.
+ device_settings_->RemovePendingCaptureRequest(label);
+}
+
+TEST_F(MediaStreamDeviceSettingsTest, HandleRequestUsingFakeUI) {
+ device_settings_->UseFakeUI();
+
+ const std::string label = "label";
+ CreateDummyRequest(label, true, true);
// Remove the current request, it should not crash.
- device_settings_->RemovePendingCaptureRequest(label_);
+ EXPECT_CALL(*this, DevicesAccepted(label, _));
+}
+
+TEST_F(MediaStreamDeviceSettingsTest, CreateMultipleRequestsAndCancelTheFirst) {
+ device_settings_->UseFakeUI();
+
+ // Create the first audio request.
+ const std::string label_1 = "label_1";
+ CreateDummyRequest(label_1, true, false);
+
+ // Create the second video request.
+ const std::string label_2 = "label_2";
+ CreateDummyRequest(label_2, false, true);
+
+ // Create the third audio and video request.
+ const std::string label_3 = "label_3";
+ CreateDummyRequest(label_3, true, true);
+
+ // Remove the first request which has been brought to the UI.
+ device_settings_->RemovePendingCaptureRequest(label_1);
+
+ // We should get callbacks from the rest of the requests.
+ EXPECT_CALL(*this, DevicesAccepted(label_2, _));
+ EXPECT_CALL(*this, DevicesAccepted(label_3, _));
+}
+
+TEST_F(MediaStreamDeviceSettingsTest, CreateMultipleRequestsAndCancelTheLast) {
+ device_settings_->UseFakeUI();
+
+ // Create the first audio request.
+ const std::string label_1 = "label_1";
+ CreateDummyRequest(label_1, true, false);
+
+ // Create the second video request.
+ const std::string label_2 = "label_2";
+ CreateDummyRequest(label_2, false, true);
+
+ // Create the third audio and video request.
+ const std::string label_3 = "label_3";
+ CreateDummyRequest(label_3, true, true);
+
+ // Remove the last request which is pending in the queue.
+ device_settings_->RemovePendingCaptureRequest(label_3);
+
+ // We should get callbacks from the rest of the requests.
+ EXPECT_CALL(*this, DevicesAccepted(label_1, _));
+ EXPECT_CALL(*this, DevicesAccepted(label_2, _));
}
} // namespace media_stream

Powered by Google App Engine
This is Rietveld 408576698