| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/webrtc/media_stream_track_metrics.h" | 5 #include "content/renderer/media/webrtc/media_stream_track_metrics.h" |
| 6 | 6 |
| 7 #include <inttypes.h> | 7 #include <inttypes.h> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 stream_type == RECEIVED_STREAM)); | 359 stream_type == RECEIVED_STREAM)); |
| 360 } else { | 360 } else { |
| 361 DCHECK_EQ(DISCONNECTED, event); | 361 DCHECK_EQ(DISCONNECTED, event); |
| 362 RenderThreadImpl::current()->Send( | 362 RenderThreadImpl::current()->Send( |
| 363 new MediaStreamTrackMetricsHost_RemoveTrack( | 363 new MediaStreamTrackMetricsHost_RemoveTrack( |
| 364 MakeUniqueId(track_id, stream_type))); | 364 MakeUniqueId(track_id, stream_type))); |
| 365 } | 365 } |
| 366 } | 366 } |
| 367 } | 367 } |
| 368 | 368 |
| 369 uint64 MediaStreamTrackMetrics::MakeUniqueIdImpl(uint64 pc_id, | 369 uint64_t MediaStreamTrackMetrics::MakeUniqueIdImpl(uint64_t pc_id, |
| 370 const std::string& track_id, | 370 const std::string& track_id, |
| 371 StreamType stream_type) { | 371 StreamType stream_type) { |
| 372 // We use a hash over the |track| pointer and the PeerConnection ID, | 372 // We use a hash over the |track| pointer and the PeerConnection ID, |
| 373 // plus a boolean flag indicating whether the track is remote (since | 373 // plus a boolean flag indicating whether the track is remote (since |
| 374 // you might conceivably have a remote track added back as a sent | 374 // you might conceivably have a remote track added back as a sent |
| 375 // track) as the unique ID. | 375 // track) as the unique ID. |
| 376 // | 376 // |
| 377 // We don't need a cryptographically secure hash (which MD5 should | 377 // We don't need a cryptographically secure hash (which MD5 should |
| 378 // no longer be considered), just one with virtually zero chance of | 378 // no longer be considered), just one with virtually zero chance of |
| 379 // collisions when faced with non-malicious data. | 379 // collisions when faced with non-malicious data. |
| 380 std::string unique_id_string = | 380 std::string unique_id_string = |
| 381 base::StringPrintf("%" PRIu64 " %s %d", | 381 base::StringPrintf("%" PRIu64 " %s %d", |
| 382 pc_id, | 382 pc_id, |
| 383 track_id.c_str(), | 383 track_id.c_str(), |
| 384 stream_type == RECEIVED_STREAM ? 1 : 0); | 384 stream_type == RECEIVED_STREAM ? 1 : 0); |
| 385 | 385 |
| 386 base::MD5Context ctx; | 386 base::MD5Context ctx; |
| 387 base::MD5Init(&ctx); | 387 base::MD5Init(&ctx); |
| 388 base::MD5Update(&ctx, unique_id_string); | 388 base::MD5Update(&ctx, unique_id_string); |
| 389 base::MD5Digest digest; | 389 base::MD5Digest digest; |
| 390 base::MD5Final(&digest, &ctx); | 390 base::MD5Final(&digest, &ctx); |
| 391 | 391 |
| 392 static_assert(sizeof(digest.a) > sizeof(uint64), "need a bigger digest"); | 392 static_assert(sizeof(digest.a) > sizeof(uint64_t), "need a bigger digest"); |
| 393 return *reinterpret_cast<uint64*>(digest.a); | 393 return *reinterpret_cast<uint64_t*>(digest.a); |
| 394 } | 394 } |
| 395 | 395 |
| 396 uint64 MediaStreamTrackMetrics::MakeUniqueId(const std::string& track_id, | 396 uint64_t MediaStreamTrackMetrics::MakeUniqueId(const std::string& track_id, |
| 397 StreamType stream_type) { | 397 StreamType stream_type) { |
| 398 return MakeUniqueIdImpl( | 398 return MakeUniqueIdImpl( |
| 399 reinterpret_cast<uint64>(reinterpret_cast<void*>(this)), | 399 reinterpret_cast<uint64_t>(reinterpret_cast<void*>(this)), track_id, |
| 400 track_id, | |
| 401 stream_type); | 400 stream_type); |
| 402 } | 401 } |
| 403 | 402 |
| 404 } // namespace content | 403 } // namespace content |
| OLD | NEW |