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

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

Issue 1000373002: favor DCHECK_CURRENTLY_ON for better logs in content/browser/[f-p]* (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase on master Created 5 years, 9 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_internals.h" 5 #include "content/browser/media/webrtc_internals.h"
6 6
7 #include "base/strings/string_number_conversions.h" 7 #include "base/strings/string_number_conversions.h"
8 #include "content/browser/media/webrtc_internals_ui_observer.h" 8 #include "content/browser/media/webrtc_internals_ui_observer.h"
9 #include "content/browser/web_contents/web_contents_view.h" 9 #include "content/browser/web_contents/web_contents_view.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 WebRTCInternals* WebRTCInternals::GetInstance() { 66 WebRTCInternals* WebRTCInternals::GetInstance() {
67 return g_webrtc_internals.Pointer(); 67 return g_webrtc_internals.Pointer();
68 } 68 }
69 69
70 void WebRTCInternals::OnAddPeerConnection(int render_process_id, 70 void WebRTCInternals::OnAddPeerConnection(int render_process_id,
71 ProcessId pid, 71 ProcessId pid,
72 int lid, 72 int lid,
73 const string& url, 73 const string& url,
74 const string& rtc_configuration, 74 const string& rtc_configuration,
75 const string& constraints) { 75 const string& constraints) {
76 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 76 DCHECK_CURRENTLY_ON(BrowserThread::UI);
77 77
78 base::DictionaryValue* dict = new base::DictionaryValue(); 78 base::DictionaryValue* dict = new base::DictionaryValue();
79 if (!dict) 79 if (!dict)
80 return; 80 return;
81 81
82 dict->SetInteger("rid", render_process_id); 82 dict->SetInteger("rid", render_process_id);
83 dict->SetInteger("pid", static_cast<int>(pid)); 83 dict->SetInteger("pid", static_cast<int>(pid));
84 dict->SetInteger("lid", lid); 84 dict->SetInteger("lid", lid);
85 dict->SetString("rtcConfiguration", rtc_configuration); 85 dict->SetString("rtcConfiguration", rtc_configuration);
86 dict->SetString("constraints", constraints); 86 dict->SetString("constraints", constraints);
87 dict->SetString("url", url); 87 dict->SetString("url", url);
88 peer_connection_data_.Append(dict); 88 peer_connection_data_.Append(dict);
89 CreateOrReleasePowerSaveBlocker(); 89 CreateOrReleasePowerSaveBlocker();
90 90
91 if (observers_.might_have_observers()) 91 if (observers_.might_have_observers())
92 SendUpdate("addPeerConnection", dict); 92 SendUpdate("addPeerConnection", dict);
93 } 93 }
94 94
95 void WebRTCInternals::OnRemovePeerConnection(ProcessId pid, int lid) { 95 void WebRTCInternals::OnRemovePeerConnection(ProcessId pid, int lid) {
96 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 96 DCHECK_CURRENTLY_ON(BrowserThread::UI);
97 for (size_t i = 0; i < peer_connection_data_.GetSize(); ++i) { 97 for (size_t i = 0; i < peer_connection_data_.GetSize(); ++i) {
98 base::DictionaryValue* dict = NULL; 98 base::DictionaryValue* dict = NULL;
99 peer_connection_data_.GetDictionary(i, &dict); 99 peer_connection_data_.GetDictionary(i, &dict);
100 100
101 int this_pid = 0; 101 int this_pid = 0;
102 int this_lid = 0; 102 int this_lid = 0;
103 dict->GetInteger("pid", &this_pid); 103 dict->GetInteger("pid", &this_pid);
104 dict->GetInteger("lid", &this_lid); 104 dict->GetInteger("lid", &this_lid);
105 105
106 if (this_pid != static_cast<int>(pid) || this_lid != lid) 106 if (this_pid != static_cast<int>(pid) || this_lid != lid)
107 continue; 107 continue;
108 108
109 peer_connection_data_.Remove(i, NULL); 109 peer_connection_data_.Remove(i, NULL);
110 CreateOrReleasePowerSaveBlocker(); 110 CreateOrReleasePowerSaveBlocker();
111 111
112 if (observers_.might_have_observers()) { 112 if (observers_.might_have_observers()) {
113 base::DictionaryValue id; 113 base::DictionaryValue id;
114 id.SetInteger("pid", static_cast<int>(pid)); 114 id.SetInteger("pid", static_cast<int>(pid));
115 id.SetInteger("lid", lid); 115 id.SetInteger("lid", lid);
116 SendUpdate("removePeerConnection", &id); 116 SendUpdate("removePeerConnection", &id);
117 } 117 }
118 break; 118 break;
119 } 119 }
120 } 120 }
121 121
122 void WebRTCInternals::OnUpdatePeerConnection( 122 void WebRTCInternals::OnUpdatePeerConnection(
123 ProcessId pid, int lid, const string& type, const string& value) { 123 ProcessId pid, int lid, const string& type, const string& value) {
124 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 124 DCHECK_CURRENTLY_ON(BrowserThread::UI);
125 125
126 for (size_t i = 0; i < peer_connection_data_.GetSize(); ++i) { 126 for (size_t i = 0; i < peer_connection_data_.GetSize(); ++i) {
127 base::DictionaryValue* record = NULL; 127 base::DictionaryValue* record = NULL;
128 peer_connection_data_.GetDictionary(i, &record); 128 peer_connection_data_.GetDictionary(i, &record);
129 129
130 int this_pid = 0, this_lid = 0; 130 int this_pid = 0, this_lid = 0;
131 record->GetInteger("pid", &this_pid); 131 record->GetInteger("pid", &this_pid);
132 record->GetInteger("lid", &this_lid); 132 record->GetInteger("lid", &this_lid);
133 133
134 if (this_pid != static_cast<int>(pid) || this_lid != lid) 134 if (this_pid != static_cast<int>(pid) || this_lid != lid)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 SendUpdate("addStats", &dict); 180 SendUpdate("addStats", &dict);
181 } 181 }
182 182
183 void WebRTCInternals::OnGetUserMedia(int rid, 183 void WebRTCInternals::OnGetUserMedia(int rid,
184 base::ProcessId pid, 184 base::ProcessId pid,
185 const std::string& origin, 185 const std::string& origin,
186 bool audio, 186 bool audio,
187 bool video, 187 bool video,
188 const std::string& audio_constraints, 188 const std::string& audio_constraints,
189 const std::string& video_constraints) { 189 const std::string& video_constraints) {
190 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 190 DCHECK_CURRENTLY_ON(BrowserThread::UI);
191 191
192 base::DictionaryValue* dict = new base::DictionaryValue(); 192 base::DictionaryValue* dict = new base::DictionaryValue();
193 dict->SetInteger("rid", rid); 193 dict->SetInteger("rid", rid);
194 dict->SetInteger("pid", static_cast<int>(pid)); 194 dict->SetInteger("pid", static_cast<int>(pid));
195 dict->SetString("origin", origin); 195 dict->SetString("origin", origin);
196 if (audio) 196 if (audio)
197 dict->SetString("audio", audio_constraints); 197 dict->SetString("audio", audio_constraints);
198 if (video) 198 if (video)
199 dict->SetString("video", video_constraints); 199 dict->SetString("video", video_constraints);
200 200
201 get_user_media_requests_.Append(dict); 201 get_user_media_requests_.Append(dict);
202 202
203 if (observers_.might_have_observers()) 203 if (observers_.might_have_observers())
204 SendUpdate("addGetUserMedia", dict); 204 SendUpdate("addGetUserMedia", dict);
205 } 205 }
206 206
207 void WebRTCInternals::AddObserver(WebRTCInternalsUIObserver *observer) { 207 void WebRTCInternals::AddObserver(WebRTCInternalsUIObserver *observer) {
208 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 208 DCHECK_CURRENTLY_ON(BrowserThread::UI);
209 observers_.AddObserver(observer); 209 observers_.AddObserver(observer);
210 } 210 }
211 211
212 void WebRTCInternals::RemoveObserver(WebRTCInternalsUIObserver *observer) { 212 void WebRTCInternals::RemoveObserver(WebRTCInternalsUIObserver *observer) {
213 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 213 DCHECK_CURRENTLY_ON(BrowserThread::UI);
214 observers_.RemoveObserver(observer); 214 observers_.RemoveObserver(observer);
215 215
216 // Disables the AEC recording if it is enabled and the last webrtc-internals 216 // Disables the AEC recording if it is enabled and the last webrtc-internals
217 // page is going away. 217 // page is going away.
218 if (aec_dump_enabled_ && !observers_.might_have_observers()) 218 if (aec_dump_enabled_ && !observers_.might_have_observers())
219 DisableAecDump(); 219 DisableAecDump();
220 } 220 }
221 221
222 void WebRTCInternals::UpdateObserver(WebRTCInternalsUIObserver* observer) { 222 void WebRTCInternals::UpdateObserver(WebRTCInternalsUIObserver* observer) {
223 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 223 DCHECK_CURRENTLY_ON(BrowserThread::UI);
224 if (peer_connection_data_.GetSize() > 0) 224 if (peer_connection_data_.GetSize() > 0)
225 observer->OnUpdate("updateAllPeerConnections", &peer_connection_data_); 225 observer->OnUpdate("updateAllPeerConnections", &peer_connection_data_);
226 226
227 for (base::ListValue::iterator it = get_user_media_requests_.begin(); 227 for (base::ListValue::iterator it = get_user_media_requests_.begin();
228 it != get_user_media_requests_.end(); 228 it != get_user_media_requests_.end();
229 ++it) { 229 ++it) {
230 observer->OnUpdate("addGetUserMedia", *it); 230 observer->OnUpdate("addGetUserMedia", *it);
231 } 231 }
232 } 232 }
233 233
(...skipping 25 matching lines...) Expand all
259 259
260 for (RenderProcessHost::iterator i( 260 for (RenderProcessHost::iterator i(
261 content::RenderProcessHost::AllHostsIterator()); 261 content::RenderProcessHost::AllHostsIterator());
262 !i.IsAtEnd(); i.Advance()) { 262 !i.IsAtEnd(); i.Advance()) {
263 i.GetCurrentValue()->DisableAecDump(); 263 i.GetCurrentValue()->DisableAecDump();
264 } 264 }
265 #endif 265 #endif
266 } 266 }
267 267
268 void WebRTCInternals::ResetForTesting() { 268 void WebRTCInternals::ResetForTesting() {
269 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 269 DCHECK_CURRENTLY_ON(BrowserThread::UI);
270 observers_.Clear(); 270 observers_.Clear();
271 peer_connection_data_.Clear(); 271 peer_connection_data_.Clear();
272 CreateOrReleasePowerSaveBlocker(); 272 CreateOrReleasePowerSaveBlocker();
273 get_user_media_requests_.Clear(); 273 get_user_media_requests_.Clear();
274 aec_dump_enabled_ = false; 274 aec_dump_enabled_ = false;
275 } 275 }
276 276
277 void WebRTCInternals::SendUpdate(const string& command, base::Value* value) { 277 void WebRTCInternals::SendUpdate(const string& command, base::Value* value) {
278 DCHECK(observers_.might_have_observers()); 278 DCHECK(observers_.might_have_observers());
279 279
280 FOR_EACH_OBSERVER(WebRTCInternalsUIObserver, 280 FOR_EACH_OBSERVER(WebRTCInternalsUIObserver,
281 observers_, 281 observers_,
282 OnUpdate(command, value)); 282 OnUpdate(command, value));
283 } 283 }
284 284
285 void WebRTCInternals::Observe(int type, 285 void WebRTCInternals::Observe(int type,
286 const NotificationSource& source, 286 const NotificationSource& source,
287 const NotificationDetails& details) { 287 const NotificationDetails& details) {
288 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 288 DCHECK_CURRENTLY_ON(BrowserThread::UI);
289 DCHECK_EQ(type, NOTIFICATION_RENDERER_PROCESS_TERMINATED); 289 DCHECK_EQ(type, NOTIFICATION_RENDERER_PROCESS_TERMINATED);
290 OnRendererExit(Source<RenderProcessHost>(source)->GetID()); 290 OnRendererExit(Source<RenderProcessHost>(source)->GetID());
291 } 291 }
292 292
293 void WebRTCInternals::FileSelected(const base::FilePath& path, 293 void WebRTCInternals::FileSelected(const base::FilePath& path,
294 int /* unused_index */, 294 int /* unused_index */,
295 void* /*unused_params */) { 295 void* /*unused_params */) {
296 #if defined(ENABLE_WEBRTC) 296 #if defined(ENABLE_WEBRTC)
297 aec_dump_file_path_ = path; 297 aec_dump_file_path_ = path;
298 EnableAecDumpOnAllRenderProcessHosts(); 298 EnableAecDumpOnAllRenderProcessHosts();
299 #endif 299 #endif
300 } 300 }
301 301
302 void WebRTCInternals::FileSelectionCanceled(void* params) { 302 void WebRTCInternals::FileSelectionCanceled(void* params) {
303 #if defined(ENABLE_WEBRTC) 303 #if defined(ENABLE_WEBRTC)
304 SendUpdate("aecRecordingFileSelectionCancelled", NULL); 304 SendUpdate("aecRecordingFileSelectionCancelled", NULL);
305 #endif 305 #endif
306 } 306 }
307 307
308 void WebRTCInternals::OnRendererExit(int render_process_id) { 308 void WebRTCInternals::OnRendererExit(int render_process_id) {
309 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 309 DCHECK_CURRENTLY_ON(BrowserThread::UI);
310 310
311 // Iterates from the end of the list to remove the PeerConnections created 311 // Iterates from the end of the list to remove the PeerConnections created
312 // by the exitting renderer. 312 // by the exitting renderer.
313 for (int i = peer_connection_data_.GetSize() - 1; i >= 0; --i) { 313 for (int i = peer_connection_data_.GetSize() - 1; i >= 0; --i) {
314 base::DictionaryValue* record = NULL; 314 base::DictionaryValue* record = NULL;
315 peer_connection_data_.GetDictionary(i, &record); 315 peer_connection_data_.GetDictionary(i, &record);
316 316
317 int this_rid = 0; 317 int this_rid = 0;
318 record->GetInteger("rid", &this_rid); 318 record->GetInteger("rid", &this_rid);
319 319
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 aec_dump_enabled_ = true; 361 aec_dump_enabled_ = true;
362 for (RenderProcessHost::iterator i( 362 for (RenderProcessHost::iterator i(
363 content::RenderProcessHost::AllHostsIterator()); 363 content::RenderProcessHost::AllHostsIterator());
364 !i.IsAtEnd(); i.Advance()) { 364 !i.IsAtEnd(); i.Advance()) {
365 i.GetCurrentValue()->EnableAecDump(aec_dump_file_path_); 365 i.GetCurrentValue()->EnableAecDump(aec_dump_file_path_);
366 } 366 }
367 } 367 }
368 #endif 368 #endif
369 369
370 void WebRTCInternals::CreateOrReleasePowerSaveBlocker() { 370 void WebRTCInternals::CreateOrReleasePowerSaveBlocker() {
371 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 371 DCHECK_CURRENTLY_ON(BrowserThread::UI);
372 372
373 if (peer_connection_data_.empty() && power_save_blocker_) { 373 if (peer_connection_data_.empty() && power_save_blocker_) {
374 DVLOG(1) << ("Releasing the block on application suspension since no " 374 DVLOG(1) << ("Releasing the block on application suspension since no "
375 "PeerConnections are active anymore."); 375 "PeerConnections are active anymore.");
376 power_save_blocker_.reset(); 376 power_save_blocker_.reset();
377 } else if (!peer_connection_data_.empty() && !power_save_blocker_) { 377 } else if (!peer_connection_data_.empty() && !power_save_blocker_) {
378 DVLOG(1) << ("Preventing the application from being suspended while one or " 378 DVLOG(1) << ("Preventing the application from being suspended while one or "
379 "more PeerConnections are active."); 379 "more PeerConnections are active.");
380 power_save_blocker_ = 380 power_save_blocker_ =
381 content::PowerSaveBlocker::Create( 381 content::PowerSaveBlocker::Create(
382 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, 382 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension,
383 PowerSaveBlocker::kReasonOther, 383 PowerSaveBlocker::kReasonOther,
384 "WebRTC has active PeerConnections").Pass(); 384 "WebRTC has active PeerConnections").Pass();
385 } 385 }
386 } 386 }
387 387
388 } // namespace content 388 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/media/webrtc_identity_store_backend.cc ('k') | content/browser/media/webrtc_internals_message_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698