| Index: content/renderer/media/android/webmediaplayer_android.cc | 
| diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc | 
| index e7520665b1e7e9b47c761b7e1821503476dcbccb..e79793ca029eb47c263c844ffdeebb7597193472 100644 | 
| --- a/content/renderer/media/android/webmediaplayer_android.cc | 
| +++ b/content/renderer/media/android/webmediaplayer_android.cc | 
| @@ -147,6 +147,7 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid( | 
| media_log_(media_log), | 
| web_cdm_(NULL), | 
| allow_stored_credentials_(false), | 
| +      is_local_resource_(false), | 
| weak_factory_(this) { | 
| DCHECK(player_manager_); | 
| DCHECK(cdm_manager_); | 
| @@ -217,6 +218,7 @@ void WebMediaPlayerAndroid::load(LoadType load_type, | 
| } | 
|  | 
| url_ = url; | 
| +  is_local_resource_ = IsLocalResource(); | 
| int demuxer_client_id = 0; | 
| if (player_type_ != MEDIA_PLAYER_TYPE_URL) { | 
| RendererDemuxerAndroid* demuxer = | 
| @@ -278,6 +280,19 @@ void WebMediaPlayerAndroid::DidLoadMediaInfo( | 
| UpdateNetworkState(WebMediaPlayer::NetworkStateIdle); | 
| } | 
|  | 
| +bool WebMediaPlayerAndroid::IsLocalResource() { | 
| +  if (url_.SchemeIsFile() || url_.SchemeIsBlob()) | 
| +    return true; | 
| + | 
| +  std::string host = url_.host(); | 
| +  if (!host.compare("localhost") || !host.compare("127.0.0.1") || | 
| +      !host.compare("[::1]")) { | 
| +    return true; | 
| +  } | 
| + | 
| +  return false; | 
| +} | 
| + | 
| void WebMediaPlayerAndroid::play() { | 
| DCHECK(main_thread_checker_.CalledOnValidThread()); | 
|  | 
| @@ -691,7 +706,7 @@ void WebMediaPlayerAndroid::OnMediaMetadataChanged( | 
| DCHECK(main_thread_checker_.CalledOnValidThread()); | 
| bool need_to_signal_duration_changed = false; | 
|  | 
| -  if (url_.SchemeIs("file")) | 
| +  if (is_local_resource_) | 
| UpdateNetworkState(WebMediaPlayer::NetworkStateLoaded); | 
|  | 
| // Update duration, if necessary, prior to ready state updates that may | 
| @@ -849,6 +864,8 @@ void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) { | 
| void WebMediaPlayerAndroid::OnTimeUpdate(const base::TimeDelta& current_time) { | 
| DCHECK(main_thread_checker_.CalledOnValidThread()); | 
| current_time_ = current_time.InSecondsF(); | 
| +  if (is_local_resource_ && current_time_ <= duration()) | 
| +    buffered_[0].end = current_time_; | 
| } | 
|  | 
| void WebMediaPlayerAndroid::OnConnectedToRemoteDevice( | 
|  |