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

Side by Side Diff: content/renderer/media/render_media_log.cc

Issue 2837133002: To M59: Add MediaError.message (Closed)
Patch Set: Created 3 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
« no previous file with comments | « content/renderer/media/render_media_log.h ('k') | content/renderer/media/webmediaplayer_ms.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer/media/render_media_log.h" 5 #include "content/renderer/media/render_media_log.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 // SendQueuedMediaEvents() will enqueue the most recent event of this 71 // SendQueuedMediaEvents() will enqueue the most recent event of this
72 // kind, if any, prior to sending the event batch. 72 // kind, if any, prior to sending the event batch.
73 break; 73 break;
74 74
75 case media::MediaLogEvent::DURATION_SET: 75 case media::MediaLogEvent::DURATION_SET:
76 // Similar to the extents changed message, this may fire many times for 76 // Similar to the extents changed message, this may fire many times for
77 // badly muxed media. Suppress within our rate limits here. 77 // badly muxed media. Suppress within our rate limits here.
78 last_duration_changed_event_.swap(event); 78 last_duration_changed_event_.swap(event);
79 break; 79 break;
80 80
81 // Hold onto the most recent PIPELINE_ERROR and MEDIA_LOG_ERROR_ENTRY for 81 // Hold onto the most recent PIPELINE_ERROR and the first, if any,
82 // use in GetLastErrorMessage(). 82 // MEDIA_LOG_ERROR_ENTRY for use in GetErrorMessage().
83 case media::MediaLogEvent::PIPELINE_ERROR: 83 case media::MediaLogEvent::PIPELINE_ERROR:
84 queued_media_events_.push_back(*event); 84 queued_media_events_.push_back(*event);
85 last_pipeline_error_.swap(event); 85 last_pipeline_error_.swap(event);
86 break; 86 break;
87 case media::MediaLogEvent::MEDIA_ERROR_LOG_ENTRY: 87 case media::MediaLogEvent::MEDIA_ERROR_LOG_ENTRY:
88 queued_media_events_.push_back(*event); 88 queued_media_events_.push_back(*event);
89 last_media_error_log_entry_.swap(event); 89 if (!cached_media_error_for_message_)
90 cached_media_error_for_message_ = std::move(event);
90 break; 91 break;
91 92
92 // Just enqueue all other event types for throttled transmission. 93 // Just enqueue all other event types for throttled transmission.
93 default: 94 default:
94 queued_media_events_.push_back(*event); 95 queued_media_events_.push_back(*event);
95 } 96 }
96 97
97 if (ipc_send_pending_) 98 if (ipc_send_pending_)
98 return; 99 return;
99 100
(...skipping 11 matching lines...) Expand all
111 112
112 // It's been more than a second so send ASAP. 113 // It's been more than a second so send ASAP.
113 if (task_runner_->BelongsToCurrentThread()) { 114 if (task_runner_->BelongsToCurrentThread()) {
114 SendQueuedMediaEvents(); 115 SendQueuedMediaEvents();
115 return; 116 return;
116 } 117 }
117 task_runner_->PostTask( 118 task_runner_->PostTask(
118 FROM_HERE, base::Bind(&RenderMediaLog::SendQueuedMediaEvents, this)); 119 FROM_HERE, base::Bind(&RenderMediaLog::SendQueuedMediaEvents, this));
119 } 120 }
120 121
121 std::string RenderMediaLog::GetLastErrorMessage() { 122 std::string RenderMediaLog::GetErrorMessage() {
122 base::AutoLock auto_lock(lock_); 123 base::AutoLock auto_lock(lock_);
123 124
124 // Return the conditional concatenation of the last pipeline error and the 125 // Keep message structure in sync with
125 // last media error log. 126 // HTMLMediaElement::BuildElementErrorMessage().
127
126 std::stringstream result; 128 std::stringstream result;
127 if (last_pipeline_error_) { 129 if (last_pipeline_error_)
128 result << MediaEventToLogString(*last_pipeline_error_) 130 result << MediaEventToMessageString(*last_pipeline_error_);
129 << (last_media_error_log_entry_ ? ", " : ""); 131
132 if (cached_media_error_for_message_) {
133 DCHECK(last_pipeline_error_)
134 << "Message with detail should be associated with a pipeline error";
135 // This ':' lets web apps extract the UA-specific-error-code from the
136 // MediaError.message prefix.
137 result << ": "
138 << MediaEventToMessageString(*cached_media_error_for_message_);
130 } 139 }
131 if (last_media_error_log_entry_) 140
132 result << MediaEventToLogString(*last_media_error_log_entry_);
133 return result.str(); 141 return result.str();
134 } 142 }
135 143
136 void RenderMediaLog::RecordRapporWithSecurityOrigin(const std::string& metric) { 144 void RenderMediaLog::RecordRapporWithSecurityOrigin(const std::string& metric) {
137 if (!task_runner_->BelongsToCurrentThread()) { 145 if (!task_runner_->BelongsToCurrentThread()) {
138 task_runner_->PostTask( 146 task_runner_->PostTask(
139 FROM_HERE, base::Bind(&RenderMediaLog::RecordRapporWithSecurityOrigin, 147 FROM_HERE, base::Bind(&RenderMediaLog::RecordRapporWithSecurityOrigin,
140 this, metric)); 148 this, metric));
141 return; 149 return;
142 } 150 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 tick_clock_.swap(tick_clock); 188 tick_clock_.swap(tick_clock);
181 last_ipc_send_time_ = tick_clock_->NowTicks(); 189 last_ipc_send_time_ = tick_clock_->NowTicks();
182 } 190 }
183 191
184 void RenderMediaLog::SetTaskRunnerForTesting( 192 void RenderMediaLog::SetTaskRunnerForTesting(
185 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { 193 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) {
186 task_runner_ = task_runner; 194 task_runner_ = task_runner;
187 } 195 }
188 196
189 } // namespace content 197 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/render_media_log.h ('k') | content/renderer/media/webmediaplayer_ms.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698