Index: content/renderer/media/render_media_log.h |
diff --git a/content/renderer/media/render_media_log.h b/content/renderer/media/render_media_log.h |
index 80316e60bcd77740d0ac0b67f0d80bedac360954..3e31cb9acd2a87c4dd9a9e40c271ea06f293c778 100644 |
--- a/content/renderer/media/render_media_log.h |
+++ b/content/renderer/media/render_media_log.h |
@@ -5,6 +5,7 @@ |
#ifndef CONTENT_RENDERER_MEDIA_RENDER_MEDIA_LOG_H_ |
#define CONTENT_RENDERER_MEDIA_RENDER_MEDIA_LOG_H_ |
+#include <string> |
#include <vector> |
#include "base/macros.h" |
@@ -22,6 +23,9 @@ namespace content { |
// RenderMediaLog is an implementation of MediaLog that forwards events to the |
// browser process, throttling as necessary. |
// |
+// It also caches the last error events to support renderer-side reporting to |
+// entities like HTMLMediaElement and devtools console. |
+// |
// To minimize the number of events sent over the wire, only the latest event |
// added is sent for high frequency events (e.g., BUFFERED_EXTENTS_CHANGED). |
// |
@@ -32,6 +36,7 @@ class CONTENT_EXPORT RenderMediaLog : public media::MediaLog { |
// MediaLog implementation. |
void AddEvent(scoped_ptr<media::MediaLogEvent> event) override; |
+ std::string GetLastErrorMessage() override; |
// Will reset |last_ipc_send_time_| with the value of NowTicks(). |
void SetTickClockForTesting(scoped_ptr<base::TickClock> tick_clock); |
@@ -47,11 +52,10 @@ class CONTENT_EXPORT RenderMediaLog : public media::MediaLog { |
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
- // |lock_| serializes access to |tick_clock_|, |last_ipc_send_time_|, |
- // |queued_media_events_|, |ipc_send_pending_| and |
- // |last_buffered_extents_changed_event_|. It allows any render process thread |
- // to AddEvent(), while preserving their sequence for throttled send on |
- // |task_runner_|. |
+ // |lock_| protects access to all of the following member variables. It |
+ // allows any render process thread to AddEvent(), while preserving their |
+ // sequence for throttled send on |task_runner_| and coherent retrieval by |
+ // GetLastErrorMessage(). |
mutable base::Lock lock_; |
scoped_ptr<base::TickClock> tick_clock_; |
base::TimeTicks last_ipc_send_time_; |
@@ -63,6 +67,12 @@ class CONTENT_EXPORT RenderMediaLog : public media::MediaLog { |
// Limits the number buffered extents changed events we send over IPC to one. |
scoped_ptr<media::MediaLogEvent> last_buffered_extents_changed_event_; |
+ // Holds a copy of the most recent MEDIA_ERROR_LOG_ENTRY, if any. |
+ scoped_ptr<media::MediaLogEvent> last_media_error_log_entry_; |
+ |
+ // Holds a copy of the most recent PIPELINE_ERROR, if any. |
+ scoped_ptr<media::MediaLogEvent> last_pipeline_error_; |
+ |
DISALLOW_COPY_AND_ASSIGN(RenderMediaLog); |
}; |