| Index: content/renderer/media/media_stream_video_source.cc | 
| diff --git a/content/renderer/media/media_stream_video_source.cc b/content/renderer/media/media_stream_video_source.cc | 
| index 73313d6e4aae1a611576e7cedb4565da6e4253fb..59fdaae86a50e715bc5fbad8f8513db16a35907a 100644 | 
| --- a/content/renderer/media/media_stream_video_source.cc | 
| +++ b/content/renderer/media/media_stream_video_source.cc | 
| @@ -12,6 +12,7 @@ | 
| #include "base/logging.h" | 
| #include "base/strings/string_number_conversions.h" | 
| #include "content/child/child_process.h" | 
| +#include "content/renderer/media/media_stream_constraints_util.h" | 
| #include "content/renderer/media/media_stream_dependency_factory.h" | 
| #include "content/renderer/media/media_stream_video_track.h" | 
| #include "content/renderer/media/video_frame_deliverer.h" | 
| @@ -45,8 +46,6 @@ const int MediaStreamVideoSource::kDefaultHeight = 480; | 
| const int MediaStreamVideoSource::kDefaultFrameRate = 30; | 
|  | 
| namespace { | 
| -// Constraints keys for http://dev.w3.org/2011/webrtc/editor/getusermedia.html | 
| -const char kSourceId[] = "sourceId"; | 
|  | 
| // Google-specific key prefix. Constraints with this prefix are ignored if they | 
| // are unknown. | 
| @@ -78,7 +77,7 @@ bool UpdateFormatForConstraint( | 
| return true; | 
| } | 
|  | 
| -  if (constraint_name == kSourceId) { | 
| +  if (constraint_name == MediaStreamSource::kSourceId) { | 
| // This is a constraint that doesn't affect the format. | 
| return true; | 
| } | 
| @@ -206,18 +205,6 @@ media::VideoCaptureFormats FilterFormats( | 
| return candidates; | 
| } | 
|  | 
| -bool GetConstraintValue(const blink::WebMediaConstraints& constraints, | 
| -                        bool mandatory, const blink::WebString& name, | 
| -                        int* value) { | 
| -  blink::WebString value_str; | 
| -  bool ret = mandatory ? | 
| -      constraints.getMandatoryConstraintValue(name, value_str) : | 
| -      constraints.getOptionalConstraintValue(name, value_str); | 
| -  if (ret) | 
| -    base::StringToInt(value_str.utf8(), value); | 
| -  return ret; | 
| -} | 
| - | 
| // Returns true if |constraint| has mandatory constraints. | 
| bool HasMandatoryConstraints(const blink::WebMediaConstraints& constraints) { | 
| blink::WebVector<blink::WebMediaConstraint> mandatory_constraints; | 
| @@ -228,19 +215,21 @@ bool HasMandatoryConstraints(const blink::WebMediaConstraints& constraints) { | 
| // Retrieve the desired max width and height from |constraints|. | 
| void GetDesiredMaxWidthAndHeight(const blink::WebMediaConstraints& constraints, | 
| int* desired_width, int* desired_height) { | 
| -  bool mandatory = GetConstraintValue(constraints, true, | 
| -                                      MediaStreamVideoSource::kMaxWidth, | 
| -                                      desired_width); | 
| -  mandatory |= GetConstraintValue(constraints, true, | 
| -                                  MediaStreamVideoSource::kMaxHeight, | 
| -                                  desired_height); | 
| +  bool mandatory = GetMandatoryConstraintValueAsInteger( | 
| +      constraints, MediaStreamVideoSource::kMaxWidth, desired_width); | 
| +  mandatory |= GetMandatoryConstraintValueAsInteger( | 
| +      constraints, MediaStreamVideoSource::kMaxHeight, desired_height); | 
| +  // Skip the optional constraints if any of the mandatory constraint is | 
| +  // specified. | 
| if (mandatory) | 
| return; | 
|  | 
| -  GetConstraintValue(constraints, false, MediaStreamVideoSource::kMaxWidth, | 
| -                     desired_width); | 
| -  GetConstraintValue(constraints, false, MediaStreamVideoSource::kMaxHeight, | 
| -                     desired_height); | 
| +  GetOptionalConstraintValueAsInteger(constraints, | 
| +                                      MediaStreamVideoSource::kMaxWidth, | 
| +                                      desired_width); | 
| +  GetOptionalConstraintValueAsInteger(constraints, | 
| +                                      MediaStreamVideoSource::kMaxHeight, | 
| +                                      desired_height); | 
| } | 
|  | 
| const media::VideoCaptureFormat& GetBestFormatBasedOnArea( | 
| @@ -417,10 +406,12 @@ void MediaStreamVideoSource::AddTrack( | 
| // Tab capture and Screen capture needs the maximum requested height | 
| // and width to decide on the resolution. | 
| int max_requested_width = 0; | 
| -      GetConstraintValue(constraints, true, kMaxWidth, &max_requested_width); | 
| +      GetMandatoryConstraintValueAsInteger(constraints, kMaxWidth, | 
| +                                           &max_requested_width); | 
|  | 
| int max_requested_height = 0; | 
| -      GetConstraintValue(constraints, true, kMaxHeight, &max_requested_height); | 
| +      GetMandatoryConstraintValueAsInteger(constraints, kMaxHeight, | 
| +                                           &max_requested_height); | 
|  | 
| state_ = RETRIEVING_CAPABILITIES; | 
| GetCurrentSupportedFormats( | 
|  |