Index: chrome/renderer/audio_message_filter.cc |
=================================================================== |
--- chrome/renderer/audio_message_filter.cc (revision 14824) |
+++ chrome/renderer/audio_message_filter.cc (working copy) |
@@ -2,10 +2,28 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/histogram.h" |
#include "base/message_loop.h" |
+#include "chrome/common/ipc_logging.h" |
#include "chrome/common/render_messages.h" |
#include "chrome/renderer/audio_message_filter.h" |
+namespace { |
+ |
+void RecordReceiveLatency(base::TimeDelta latency) { |
+ static ThreadSafeHistogram histogram("Audio.IPC_Renderer_ReceiveLatency", |
+ 1, 500, 100); |
+ histogram.AddTime(latency); |
+} |
+ |
+void RecordProcessTime(base::TimeDelta latency) { |
+ static ThreadSafeHistogram histogram("Audio.IPC_Renderer_ProcessTime", |
+ 1, 100, 100); |
+ histogram.AddTime(latency); |
+} |
+ |
+} // namespace |
+ |
AudioMessageFilter::AudioMessageFilter(int32 route_id) |
: channel_(NULL), |
route_id_(route_id), |
@@ -55,14 +73,31 @@ |
channel_ = NULL; |
} |
-void AudioMessageFilter::OnRequestPacket(int stream_id) { |
+void AudioMessageFilter::OnRequestPacket(const IPC::Message& msg, |
+ int stream_id) { |
Delegate* delegate = delegates_.Lookup(stream_id); |
if (!delegate) { |
DLOG(WARNING) << "Got audio packet request for a non-existent or removed" |
" audio renderer."; |
return; |
} |
+ |
+#ifdef IPC_MESSAGE_LOG_ENABLED |
+ IPC::Logging* logger = IPC::Logging::current(); |
+ if (logger->Enabled()) { |
+ RecordReceiveLatency(base::Time::FromInternalValue(msg.received_time()) - |
+ base::Time::FromInternalValue(msg.sent_time())); |
+ } |
+#endif |
+ |
delegate->OnRequestPacket(); |
+ |
+#ifdef IPC_MESSAGE_LOG_ENABLED |
+ if (logger->Enabled()) { |
+ RecordProcessTime(base::Time::Now() - |
+ base::Time::FromInternalValue(msg.received_time())); |
+ } |
+#endif |
} |
void AudioMessageFilter::OnStreamCreated(int stream_id, |