OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/debug/trace_event_impl.h" | 6 #include "base/debug/trace_event_impl.h" |
7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #include "base/test/trace_event_analyzer.h" | 9 #include "base/test/trace_event_analyzer.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 base::debug::TraceLog::RECORDING_MODE, | 89 base::debug::TraceLog::RECORDING_MODE, |
90 trace_options); | 90 trace_options); |
91 // Check that we are indeed recording. | 91 // Check that we are indeed recording. |
92 EXPECT_EQ(trace_log_->GetNumTracesRecorded(), 1); | 92 EXPECT_EQ(trace_log_->GetNumTracesRecorded(), 1); |
93 } | 93 } |
94 | 94 |
95 void StopTracing() { | 95 void StopTracing() { |
96 CHECK(message_loop_runner_.get() == NULL) | 96 CHECK(message_loop_runner_.get() == NULL) |
97 << "Calling StopTracing more than once"; | 97 << "Calling StopTracing more than once"; |
98 trace_log_->SetDisabled(); | 98 trace_log_->SetDisabled(); |
| 99 message_loop_proxy_ = base::MessageLoopProxy::current(); |
99 message_loop_runner_ = new MessageLoopRunner; | 100 message_loop_runner_ = new MessageLoopRunner; |
100 trace_log_->Flush(base::Bind( | 101 trace_log_->Flush(base::Bind( |
101 &WebRtcGetUserMediaBrowserTest::OnTraceDataCollected, | 102 &WebRtcGetUserMediaBrowserTest::OnTraceDataCollected, |
102 base::Unretained(this))); | 103 base::Unretained(this))); |
103 message_loop_runner_->Run(); | 104 message_loop_runner_->Run(); |
104 } | 105 } |
105 | 106 |
106 void OnTraceDataCollected( | 107 void OnTraceDataCollected( |
107 const scoped_refptr<base::RefCountedString>& events_str_ptr, | 108 const scoped_refptr<base::RefCountedString>& events_str_ptr, |
108 bool has_more_events) { | 109 bool has_more_events) { |
109 CHECK(!has_more_events); | 110 CHECK(!has_more_events); |
| 111 if (!message_loop_proxy_->BelongsToCurrentThread()) { |
| 112 message_loop_proxy_->PostTask( |
| 113 FROM_HERE, |
| 114 Bind(&WebRtcGetUserMediaBrowserTest::OnTraceDataCollected, |
| 115 base::Unretained(this), events_str_ptr, has_more_events)); |
| 116 return; |
| 117 } |
110 recorded_trace_data_ = events_str_ptr; | 118 recorded_trace_data_ = events_str_ptr; |
111 message_loop_runner_->Quit(); | 119 message_loop_runner_->Quit(); |
112 } | 120 } |
113 | 121 |
114 TraceAnalyzer* CreateTraceAnalyzer() { | 122 TraceAnalyzer* CreateTraceAnalyzer() { |
115 return TraceAnalyzer::Create("[" + recorded_trace_data_->data() + "]"); | 123 return TraceAnalyzer::Create("[" + recorded_trace_data_->data() + "]"); |
116 } | 124 } |
117 | 125 |
118 void RunGetUserMediaAndCollectMeasures(const int time_to_sample_secs, | 126 void RunGetUserMediaAndCollectMeasures(const int time_to_sample_secs, |
119 const std::string& measure_filter, | 127 const std::string& measure_filter, |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 } | 235 } |
228 } | 236 } |
229 ASSERT_FALSE(audio_ids->empty()); | 237 ASSERT_FALSE(audio_ids->empty()); |
230 ASSERT_FALSE(video_ids->empty()); | 238 ASSERT_FALSE(video_ids->empty()); |
231 } | 239 } |
232 | 240 |
233 private: | 241 private: |
234 base::debug::TraceLog* trace_log_; | 242 base::debug::TraceLog* trace_log_; |
235 scoped_refptr<base::RefCountedString> recorded_trace_data_; | 243 scoped_refptr<base::RefCountedString> recorded_trace_data_; |
236 scoped_refptr<MessageLoopRunner> message_loop_runner_; | 244 scoped_refptr<MessageLoopRunner> message_loop_runner_; |
| 245 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; |
237 }; | 246 }; |
238 | 247 |
239 // These tests will all make a getUserMedia call with different constraints and | 248 // These tests will all make a getUserMedia call with different constraints and |
240 // see that the success callback is called. If the error callback is called or | 249 // see that the success callback is called. If the error callback is called or |
241 // none of the callbacks are called the tests will simply time out and fail. | 250 // none of the callbacks are called the tests will simply time out and fail. |
242 IN_PROC_BROWSER_TEST_F(WebRtcGetUserMediaBrowserTest, GetVideoStreamAndStop) { | 251 IN_PROC_BROWSER_TEST_F(WebRtcGetUserMediaBrowserTest, GetVideoStreamAndStop) { |
243 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 252 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
244 | 253 |
245 GURL url(embedded_test_server()->GetURL("/media/getusermedia.html")); | 254 GURL url(embedded_test_server()->GetURL("/media/getusermedia.html")); |
246 NavigateToURL(shell(), url); | 255 NavigateToURL(shell(), url); |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 {640, 640, 360, 360, 10, 30}, | 659 {640, 640, 360, 360, 10, 30}, |
651 {640, 640, 480, 480, 10, 30}, | 660 {640, 640, 480, 480, 10, 30}, |
652 {960, 960, 720, 720, 10, 30}, | 661 {960, 960, 720, 720, 10, 30}, |
653 {1280, 1280, 720, 720, 10, 30}}; | 662 {1280, 1280, 720, 720, 10, 30}}; |
654 | 663 |
655 INSTANTIATE_TEST_CASE_P(UserMedia, | 664 INSTANTIATE_TEST_CASE_P(UserMedia, |
656 WebRtcConstraintsBrowserTest, | 665 WebRtcConstraintsBrowserTest, |
657 testing::ValuesIn(kAllUserMediaSizes)); | 666 testing::ValuesIn(kAllUserMediaSizes)); |
658 | 667 |
659 } // namespace content | 668 } // namespace content |
OLD | NEW |