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

Unified Diff: content/browser/renderer_host/media/media_stream_manager.cc

Issue 143003031: Allow retrieval of media device ID salt even after ResourceContext has gone away. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add TODO about proper fix. Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/media/media_stream_manager.cc
diff --git a/content/browser/renderer_host/media/media_stream_manager.cc b/content/browser/renderer_host/media/media_stream_manager.cc
index fdb3b2c8c5e03c8b69578e4b5f072389d17ecc91..26aa2b60ffea6384f48776a68e2cc896dc0196a0 100644
--- a/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/content/browser/renderer_host/media/media_stream_manager.cc
@@ -145,6 +145,11 @@ std::string GetLogMessageString(MediaStreamType stream_type,
return output_string;
}
+// Needed for MediaStreamManager::GenerateStream below.
+std::string ReturnEmptySalt() {
+ return std::string();
+}
+
} // namespace
@@ -163,7 +168,7 @@ class MediaStreamManager::DeviceRequest {
const GURL& security_origin,
MediaStreamRequestType request_type,
const StreamOptions& options,
- ResourceContext* resource_context)
+ const ResourceContext::SaltCallback& salt_callback)
: requester(requester),
requesting_process_id(requesting_process_id),
requesting_view_id(requesting_view_id),
@@ -171,7 +176,7 @@ class MediaStreamManager::DeviceRequest {
security_origin(security_origin),
request_type(request_type),
options(options),
- resource_context(resource_context),
+ salt_callback(salt_callback),
state_(NUM_MEDIA_TYPES, MEDIA_REQUEST_STATE_NOT_REQUESTED),
audio_type_(MEDIA_NO_SERVICE),
video_type_(MEDIA_NO_SERVICE) {
@@ -291,7 +296,7 @@ class MediaStreamManager::DeviceRequest {
const StreamOptions options;
- ResourceContext* resource_context;
+ ResourceContext::SaltCallback salt_callback;
StreamDeviceInfoArray devices;
@@ -379,7 +384,7 @@ std::string MediaStreamManager::MakeMediaAccessRequest(
security_origin,
MEDIA_DEVICE_ACCESS,
options,
- NULL);
+ base::Bind(&ReturnEmptySalt));
const std::string& label = AddRequest(request);
@@ -399,7 +404,7 @@ std::string MediaStreamManager::MakeMediaAccessRequest(
void MediaStreamManager::GenerateStream(MediaStreamRequester* requester,
int render_process_id,
int render_view_id,
- ResourceContext* rc,
+ const ResourceContext::SaltCallback& sc,
int page_request_id,
const StreamOptions& options,
const GURL& security_origin) {
@@ -417,7 +422,7 @@ void MediaStreamManager::GenerateStream(MediaStreamRequester* requester,
security_origin,
MEDIA_GENERATE_STREAM,
options,
- rc);
+ sc);
const std::string& label = AddRequest(request);
@@ -593,7 +598,7 @@ std::string MediaStreamManager::EnumerateDevices(
MediaStreamRequester* requester,
int render_process_id,
int render_view_id,
- ResourceContext* rc,
+ const ResourceContext::SaltCallback& sc,
int page_request_id,
MediaStreamType type,
const GURL& security_origin) {
@@ -609,7 +614,7 @@ std::string MediaStreamManager::EnumerateDevices(
security_origin,
MEDIA_ENUMERATE_DEVICES,
StreamOptions(),
- rc);
+ sc);
if (IsAudioMediaType(type))
request->SetAudioType(type);
else if (IsVideoMediaType(type))
@@ -660,7 +665,7 @@ void MediaStreamManager::DoEnumerateDevices(const std::string& label) {
void MediaStreamManager::OpenDevice(MediaStreamRequester* requester,
int render_process_id,
int render_view_id,
- ResourceContext* rc,
+ const ResourceContext::SaltCallback& sc,
int page_request_id,
const std::string& device_id,
MediaStreamType type,
@@ -688,7 +693,7 @@ void MediaStreamManager::OpenDevice(MediaStreamRequester* requester,
security_origin,
MEDIA_OPEN_DEVICE,
options,
- rc);
+ sc);
const std::string& label = AddRequest(request);
// Post a task and handle the request asynchronously. The reason is that the
@@ -716,8 +721,8 @@ void MediaStreamManager::StopRemovedDevices(
for (StreamDeviceInfoArray::const_iterator old_dev_it = old_devices.begin();
old_dev_it != old_devices.end(); ++old_dev_it) {
bool device_found = false;
- for (StreamDeviceInfoArray::const_iterator new_dev_it = new_devices.begin();
- new_dev_it != new_devices.end(); ++new_dev_it) {
+ StreamDeviceInfoArray::const_iterator new_dev_it = new_devices.begin();
+ for (; new_dev_it != new_devices.end(); ++new_dev_it) {
if (old_dev_it->device.id == new_dev_it->device.id) {
device_found = true;
break;
@@ -741,7 +746,7 @@ void MediaStreamManager::StopRemovedDevice(const MediaStreamDevice& device) {
request->devices.begin();
device_it != request->devices.end(); ++device_it) {
std::string source_id = content::GetHMACForMediaDeviceID(
- request->resource_context,
+ request->salt_callback,
request->security_origin,
device.id);
if (device_it->device.id == source_id &&
@@ -816,7 +821,7 @@ bool MediaStreamManager::GetRequestedDeviceCaptureId(
// id.
if (source_ids.size() == 1 &&
!TranslateSourceIdToDeviceId(type,
- request->resource_context,
+ request->salt_callback,
request->security_origin,
source_ids[0], device_id)) {
LOG(WARNING) << "Invalid mandatory " << kMediaStreamSourceInfoId
@@ -833,7 +838,7 @@ bool MediaStreamManager::GetRequestedDeviceCaptureId(
for (std::vector<std::string>::const_iterator it = source_ids.begin();
it != source_ids.end(); ++it) {
if (TranslateSourceIdToDeviceId(type,
- request->resource_context,
+ request->salt_callback,
request->security_origin,
*it,
device_id)) {
@@ -850,7 +855,7 @@ void MediaStreamManager::TranslateDeviceIdToSourceId(
if (request->audio_type() == MEDIA_DEVICE_AUDIO_CAPTURE ||
request->video_type() == MEDIA_DEVICE_VIDEO_CAPTURE) {
device->id = content::GetHMACForMediaDeviceID(
- request->resource_context,
+ request->salt_callback,
request->security_origin,
device->id);
}
@@ -858,7 +863,7 @@ void MediaStreamManager::TranslateDeviceIdToSourceId(
bool MediaStreamManager::TranslateSourceIdToDeviceId(
MediaStreamType stream_type,
- ResourceContext* rc,
+ const ResourceContext::SaltCallback& sc,
const GURL& security_origin,
const std::string& source_id,
std::string* device_id) const {
@@ -879,7 +884,7 @@ bool MediaStreamManager::TranslateSourceIdToDeviceId(
for (StreamDeviceInfoArray::const_iterator it = cache->devices.begin();
it != cache->devices.end();
++it) {
- if (content::DoesMediaDeviceIDMatchHMAC(rc, security_origin, source_id,
+ if (content::DoesMediaDeviceIDMatchHMAC(sc, security_origin, source_id,
it->device.id)) {
*device_id = it->device.id;
return true;
@@ -1216,7 +1221,7 @@ bool MediaStreamManager::FindExistingRequestedDeviceInfo(
DCHECK(existing_request_state);
std::string source_id = content::GetHMACForMediaDeviceID(
- new_request.resource_context,
+ new_request.salt_callback,
new_request.security_origin,
new_device_info.id);

Powered by Google App Engine
This is Rietveld 408576698