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

Side by Side Diff: chrome/renderer/media/chrome_webrtc_log_message_delegate.cc

Issue 218403004: Fix the timestamp generation for webrtc native log. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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 "chrome/renderer/media/chrome_webrtc_log_message_delegate.h" 5 #include "chrome/renderer/media/chrome_webrtc_log_message_delegate.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/message_loop/message_loop_proxy.h" 8 #include "base/message_loop/message_loop_proxy.h"
9 #include "chrome/common/partial_circular_buffer.h" 9 #include "chrome/common/partial_circular_buffer.h"
10 #include "chrome/renderer/media/webrtc_logging_message_filter.h" 10 #include "chrome/renderer/media/webrtc_logging_message_filter.h"
11 11
12 ChromeWebRtcLogMessageDelegate::ChromeWebRtcLogMessageDelegate( 12 ChromeWebRtcLogMessageDelegate::ChromeWebRtcLogMessageDelegate(
13 const scoped_refptr<base::MessageLoopProxy>& io_message_loop, 13 const scoped_refptr<base::MessageLoopProxy>& io_message_loop,
14 WebRtcLoggingMessageFilter* message_filter) 14 WebRtcLoggingMessageFilter* message_filter)
15 : io_message_loop_(io_message_loop), 15 : io_message_loop_(io_message_loop),
16 logging_started_(false), 16 logging_started_(false),
17 message_filter_(message_filter) { 17 message_filter_(message_filter) {
18 content::InitWebRtcLoggingDelegate(this); 18 content::InitWebRtcLoggingDelegate(this);
19 } 19 }
20 20
21 ChromeWebRtcLogMessageDelegate::~ChromeWebRtcLogMessageDelegate() { 21 ChromeWebRtcLogMessageDelegate::~ChromeWebRtcLogMessageDelegate() {
22 DCHECK(CalledOnValidThread()); 22 DCHECK(CalledOnValidThread());
23 } 23 }
24 24
25 void ChromeWebRtcLogMessageDelegate::LogMessage(const std::string& message) { 25 void ChromeWebRtcLogMessageDelegate::LogMessage(const std::string& message) {
26 WebRtcLoggingMessageData data(base::Time::Now(), message);
27
26 io_message_loop_->PostTask( 28 io_message_loop_->PostTask(
27 FROM_HERE, base::Bind( 29 FROM_HERE, base::Bind(
28 &ChromeWebRtcLogMessageDelegate::LogMessageOnIOThread, 30 &ChromeWebRtcLogMessageDelegate::LogMessageOnIOThread,
29 base::Unretained(this), 31 base::Unretained(this),
30 message)); 32 data));
31 } 33 }
32 34
33 void ChromeWebRtcLogMessageDelegate::LogMessageOnIOThread( 35 void ChromeWebRtcLogMessageDelegate::LogMessageOnIOThread(
34 const std::string& message) { 36 const WebRtcLoggingMessageData& message) {
35 DCHECK(CalledOnValidThread()); 37 DCHECK(CalledOnValidThread());
38
36 if (logging_started_ && message_filter_) { 39 if (logging_started_ && message_filter_) {
37 if (!log_buffer_.empty()) { 40 if (!log_buffer_.empty()) {
38 // A delayed task has already been posted for sending the buffer contents. 41 // A delayed task has already been posted for sending the buffer contents.
39 // Just add the message to the buffer. 42 // Just add the message to the buffer.
40 log_buffer_ += "\n" + message; 43 log_buffer_.push_back(message);
44 return;
45 }
46
47 log_buffer_.push_back(message);
48
49 if (base::TimeTicks::Now() - last_log_buffer_send_ >
50 base::TimeDelta::FromMilliseconds(100)) {
51 SendLogBuffer();
41 } else { 52 } else {
42 if (base::TimeTicks::Now() - last_log_buffer_send_ > 53 io_message_loop_->PostDelayedTask(
43 base::TimeDelta::FromMilliseconds(100)) { 54 FROM_HERE,
44 log_buffer_ = message; 55 base::Bind(&ChromeWebRtcLogMessageDelegate::SendLogBuffer,
45 SendLogBuffer(); 56 base::Unretained(this)),
46 } else { 57 base::TimeDelta::FromMilliseconds(200));
47 log_buffer_ = message;
48 io_message_loop_->PostDelayedTask(
49 FROM_HERE,
50 base::Bind(&ChromeWebRtcLogMessageDelegate::SendLogBuffer,
51 base::Unretained(this)),
52 base::TimeDelta::FromMilliseconds(200));
53 }
54 } 58 }
55 } 59 }
56 } 60 }
57 61
58 void ChromeWebRtcLogMessageDelegate::OnFilterRemoved() { 62 void ChromeWebRtcLogMessageDelegate::OnFilterRemoved() {
59 DCHECK(CalledOnValidThread()); 63 DCHECK(CalledOnValidThread());
60 message_filter_ = NULL; 64 message_filter_ = NULL;
61 } 65 }
62 66
63 void ChromeWebRtcLogMessageDelegate::OnStartLogging() { 67 void ChromeWebRtcLogMessageDelegate::OnStartLogging() {
64 DCHECK(CalledOnValidThread()); 68 DCHECK(CalledOnValidThread());
65 logging_started_ = true; 69 logging_started_ = true;
66 content::InitWebRtcLogging(); 70 content::InitWebRtcLogging();
67 } 71 }
68 72
69 void ChromeWebRtcLogMessageDelegate::OnStopLogging() { 73 void ChromeWebRtcLogMessageDelegate::OnStopLogging() {
70 DCHECK(CalledOnValidThread()); 74 DCHECK(CalledOnValidThread());
71 if (!log_buffer_.empty()) 75 if (!log_buffer_.empty())
72 SendLogBuffer(); 76 SendLogBuffer();
73 if (message_filter_) 77 if (message_filter_)
74 message_filter_->LoggingStopped(); 78 message_filter_->LoggingStopped();
75 logging_started_ = false; 79 logging_started_ = false;
76 } 80 }
77 81
78 void ChromeWebRtcLogMessageDelegate::SendLogBuffer() { 82 void ChromeWebRtcLogMessageDelegate::SendLogBuffer() {
79 DCHECK(CalledOnValidThread()); 83 DCHECK(CalledOnValidThread());
80 if (logging_started_ && message_filter_) { 84 if (logging_started_ && message_filter_) {
81 message_filter_->AddLogMessage(log_buffer_); 85 message_filter_->AddLogMessages(log_buffer_);
82 last_log_buffer_send_ = base::TimeTicks::Now(); 86 last_log_buffer_send_ = base::TimeTicks::Now();
83 } 87 }
84 log_buffer_.clear(); 88 log_buffer_.clear();
85 } 89 }
OLDNEW
« no previous file with comments | « chrome/renderer/media/chrome_webrtc_log_message_delegate.h ('k') | chrome/renderer/media/mock_webrtc_logging_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698