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

Side by Side Diff: content/browser/media/webrtc/webrtc_internals.cc

Issue 1855193002: Move the call to enable the WebRTC event log from PeerConnectionFactory to PeerConnection. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Small bugfix and Tommi's comment. Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "content/browser/media/webrtc/webrtc_internals.h" 5 #include "content/browser/media/webrtc/webrtc_internals.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
11 #include "content/browser/media/webrtc/webrtc_internals_ui_observer.h" 11 #include "content/browser/media/webrtc/webrtc_internals_ui_observer.h"
12 #include "content/browser/renderer_host/render_process_host_impl.h"
12 #include "content/browser/web_contents/web_contents_view.h" 13 #include "content/browser/web_contents/web_contents_view.h"
13 #include "content/public/browser/browser_thread.h" 14 #include "content/public/browser/browser_thread.h"
14 #include "content/public/browser/content_browser_client.h" 15 #include "content/public/browser/content_browser_client.h"
15 #include "content/public/browser/power_save_blocker.h" 16 #include "content/public/browser/power_save_blocker.h"
16 #include "content/public/browser/render_process_host.h"
17 #include "content/public/browser/web_contents.h" 17 #include "content/public/browser/web_contents.h"
18 #include "ipc/ipc_platform_file.h"
19
20 #if defined(OS_WIN)
21 #define IntToStringType base::IntToString16
22 #else
23 #define IntToStringType base::IntToString
24 #endif
18 25
19 using base::ProcessId; 26 using base::ProcessId;
20 using std::string; 27 using std::string;
21 28
22 namespace content { 29 namespace content {
23 30
24 namespace { 31 namespace {
25 32
26 static base::LazyInstance<WebRTCInternals>::Leaky g_webrtc_internals = 33 static base::LazyInstance<WebRTCInternals>::Leaky g_webrtc_internals =
27 LAZY_INSTANCE_INITIALIZER; 34 LAZY_INSTANCE_INITIALIZER;
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 252
246 void WebRTCInternals::AddObserver(WebRTCInternalsUIObserver* observer) { 253 void WebRTCInternals::AddObserver(WebRTCInternalsUIObserver* observer) {
247 DCHECK_CURRENTLY_ON(BrowserThread::UI); 254 DCHECK_CURRENTLY_ON(BrowserThread::UI);
248 observers_.AddObserver(observer); 255 observers_.AddObserver(observer);
249 } 256 }
250 257
251 void WebRTCInternals::RemoveObserver(WebRTCInternalsUIObserver* observer) { 258 void WebRTCInternals::RemoveObserver(WebRTCInternalsUIObserver* observer) {
252 DCHECK_CURRENTLY_ON(BrowserThread::UI); 259 DCHECK_CURRENTLY_ON(BrowserThread::UI);
253 observers_.RemoveObserver(observer); 260 observers_.RemoveObserver(observer);
254 261
255 // Disables audio debug recordings if it is enabled and the last 262 // Disables event log and audio debug recordings if enabled and the last
256 // webrtc-internals page is going away. 263 // webrtc-internals page is going away.
257 if (audio_debug_recordings_ && !observers_.might_have_observers()) 264 if (!observers_.might_have_observers()) {
258 DisableAudioDebugRecordings(); 265 if (audio_debug_recordings_)
266 DisableAudioDebugRecordings();
267 SetEventLogRecordings(false, nullptr);
268 }
259 } 269 }
260 270
261 void WebRTCInternals::UpdateObserver(WebRTCInternalsUIObserver* observer) { 271 void WebRTCInternals::UpdateObserver(WebRTCInternalsUIObserver* observer) {
262 DCHECK_CURRENTLY_ON(BrowserThread::UI); 272 DCHECK_CURRENTLY_ON(BrowserThread::UI);
263 if (peer_connection_data_.GetSize() > 0) 273 if (peer_connection_data_.GetSize() > 0)
264 observer->OnUpdate("updateAllPeerConnections", &peer_connection_data_); 274 observer->OnUpdate("updateAllPeerConnections", &peer_connection_data_);
265 275
266 for (base::ListValue::iterator it = get_user_media_requests_.begin(); 276 for (base::ListValue::iterator it = get_user_media_requests_.begin();
267 it != get_user_media_requests_.end(); 277 it != get_user_media_requests_.end();
268 ++it) { 278 ++it) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 const base::FilePath& WebRTCInternals::GetAudioDebugRecordingsFilePath() const { 328 const base::FilePath& WebRTCInternals::GetAudioDebugRecordingsFilePath() const {
319 DCHECK_CURRENTLY_ON(BrowserThread::UI); 329 DCHECK_CURRENTLY_ON(BrowserThread::UI);
320 return audio_debug_recordings_file_path_; 330 return audio_debug_recordings_file_path_;
321 } 331 }
322 332
323 void WebRTCInternals::SetEventLogRecordings( 333 void WebRTCInternals::SetEventLogRecordings(
324 bool enable, 334 bool enable,
325 content::WebContents* web_contents) { 335 content::WebContents* web_contents) {
326 DCHECK_CURRENTLY_ON(BrowserThread::UI); 336 DCHECK_CURRENTLY_ON(BrowserThread::UI);
327 #if defined(ENABLE_WEBRTC) 337 #if defined(ENABLE_WEBRTC)
328 if (enable) { 338 if (enable) {
Henrik Grunell 2016/06/01 08:31:11 Nit: Better to have two separate functions instead
Ivo-OOO until feb 6 2016/06/02 14:43:39 I added it to the CL, I can't resist being called
Henrik Grunell 2016/06/03 07:40:52 Awesome! :D
329 #if defined(OS_ANDROID) 339 #if defined(OS_ANDROID)
330 EnableEventLogRecordingsOnAllRenderProcessHosts(); 340 EnableEventLogRecordingsOnAllRenderProcessHosts();
331 #else 341 #else
332 DCHECK(web_contents); 342 DCHECK(web_contents);
333 DCHECK(select_file_dialog_ == nullptr); 343 DCHECK(select_file_dialog_ == nullptr);
334 selecting_event_log_ = true; 344 selecting_event_log_ = true;
335 select_file_dialog_ = ui::SelectFileDialog::Create(this, nullptr); 345 select_file_dialog_ = ui::SelectFileDialog::Create(this, nullptr);
336 select_file_dialog_->SelectFile( 346 select_file_dialog_->SelectFile(
337 ui::SelectFileDialog::SELECT_SAVEAS_FILE, base::string16(), 347 ui::SelectFileDialog::SELECT_SAVEAS_FILE, base::string16(),
338 event_log_recordings_file_path_, nullptr, 0, FILE_PATH_LITERAL(""), 348 event_log_recordings_file_path_, nullptr, 0, FILE_PATH_LITERAL(""),
339 web_contents->GetTopLevelNativeWindow(), nullptr); 349 web_contents->GetTopLevelNativeWindow(), nullptr);
340 #endif 350 #endif
341 } else { 351 } else {
342 event_log_recordings_ = false; 352 event_log_recordings_ = false;
343 // Tear down the dialog since the user has unchecked the audio debug 353 // Tear down the dialog since the user has unchecked the audio debug
344 // recordings box. 354 // recordings box.
355 DCHECK(select_file_dialog_->HasOneRef());
345 select_file_dialog_ = nullptr; 356 select_file_dialog_ = nullptr;
346 DCHECK(select_file_dialog_->HasOneRef());
347 357
348 for (RenderProcessHost::iterator i( 358 for (RenderProcessHost::iterator i(
349 content::RenderProcessHost::AllHostsIterator()); 359 content::RenderProcessHost::AllHostsIterator());
350 !i.IsAtEnd(); i.Advance()) { 360 !i.IsAtEnd(); i.Advance())
351 i.GetCurrentValue()->DisableEventLogRecordings(); 361 i.GetCurrentValue()->StopWebRTCEventLog();
352 }
353 } 362 }
354 #endif 363 #endif
355 } 364 }
356 365
357 bool WebRTCInternals::IsEventLogRecordingsEnabled() const { 366 bool WebRTCInternals::IsEventLogRecordingsEnabled() const {
358 DCHECK_CURRENTLY_ON(BrowserThread::UI); 367 DCHECK_CURRENTLY_ON(BrowserThread::UI);
359 return event_log_recordings_; 368 return event_log_recordings_;
360 } 369 }
361 370
362 const base::FilePath& WebRTCInternals::GetEventLogRecordingsFilePath() const {
363 DCHECK_CURRENTLY_ON(BrowserThread::UI);
364 return event_log_recordings_file_path_;
365 }
366
367 void WebRTCInternals::SendUpdate(const string& command, 371 void WebRTCInternals::SendUpdate(const string& command,
368 std::unique_ptr<base::Value> value) { 372 std::unique_ptr<base::Value> value) {
369 DCHECK_CURRENTLY_ON(BrowserThread::UI); 373 DCHECK_CURRENTLY_ON(BrowserThread::UI);
370 DCHECK(observers_.might_have_observers()); 374 DCHECK(observers_.might_have_observers());
371 375
372 bool queue_was_empty = pending_updates_.empty(); 376 bool queue_was_empty = pending_updates_.empty();
373 pending_updates_.push(PendingUpdate(command, std::move(value))); 377 pending_updates_.push(PendingUpdate(command, std::move(value)));
374 378
375 if (queue_was_empty) { 379 if (queue_was_empty) {
376 BrowserThread::PostDelayedTask(BrowserThread::UI, FROM_HERE, 380 BrowserThread::PostDelayedTask(BrowserThread::UI, FROM_HERE,
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 audio_debug_recordings_file_path_); 482 audio_debug_recordings_file_path_);
479 } 483 }
480 } 484 }
481 485
482 void WebRTCInternals::EnableEventLogRecordingsOnAllRenderProcessHosts() { 486 void WebRTCInternals::EnableEventLogRecordingsOnAllRenderProcessHosts() {
483 DCHECK_CURRENTLY_ON(BrowserThread::UI); 487 DCHECK_CURRENTLY_ON(BrowserThread::UI);
484 488
485 event_log_recordings_ = true; 489 event_log_recordings_ = true;
486 for (RenderProcessHost::iterator i( 490 for (RenderProcessHost::iterator i(
487 content::RenderProcessHost::AllHostsIterator()); 491 content::RenderProcessHost::AllHostsIterator());
488 !i.IsAtEnd(); i.Advance()) { 492 !i.IsAtEnd(); i.Advance())
489 i.GetCurrentValue()->EnableEventLogRecordings( 493 i.GetCurrentValue()->StartWebRTCEventLog(event_log_recordings_file_path_);
490 event_log_recordings_file_path_);
491 }
492 } 494 }
493 #endif 495 #endif
494 496
495 void WebRTCInternals::CreateOrReleasePowerSaveBlocker() { 497 void WebRTCInternals::CreateOrReleasePowerSaveBlocker() {
496 DCHECK_CURRENTLY_ON(BrowserThread::UI); 498 DCHECK_CURRENTLY_ON(BrowserThread::UI);
497 499
498 if (peer_connection_data_.empty() && power_save_blocker_) { 500 if (peer_connection_data_.empty() && power_save_blocker_) {
499 DVLOG(1) << ("Releasing the block on application suspension since no " 501 DVLOG(1) << ("Releasing the block on application suspension since no "
500 "PeerConnections are active anymore."); 502 "PeerConnections are active anymore.");
501 power_save_blocker_.reset(); 503 power_save_blocker_.reset();
(...skipping 11 matching lines...) Expand all
513 while (!pending_updates_.empty()) { 515 while (!pending_updates_.empty()) {
514 const auto& update = pending_updates_.front(); 516 const auto& update = pending_updates_.front();
515 FOR_EACH_OBSERVER(WebRTCInternalsUIObserver, 517 FOR_EACH_OBSERVER(WebRTCInternalsUIObserver,
516 observers_, 518 observers_,
517 OnUpdate(update.command(), update.value())); 519 OnUpdate(update.command(), update.value()));
518 pending_updates_.pop(); 520 pending_updates_.pop();
519 } 521 }
520 } 522 }
521 523
522 } // namespace content 524 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698