Index: webkit/media/webmediaplayer_util.cc |
diff --git a/webkit/media/webmediaplayer_util.cc b/webkit/media/webmediaplayer_util.cc |
index ebac0f88f84a754a9da3a4838120746ca234ecc6..49aa4827f4a4b812c34f3eac89ca539b4f6aaa2f 100644 |
--- a/webkit/media/webmediaplayer_util.cc |
+++ b/webkit/media/webmediaplayer_util.cc |
@@ -24,4 +24,43 @@ WebKit::WebTimeRanges ConvertToWebTimeRanges( |
return result; |
} |
+WebKit::WebMediaPlayer::NetworkState PipelineErrorToNetworkState( |
+ media::PipelineStatus error) { |
+ DCHECK_NE(error, media::PIPELINE_OK); |
+ |
+ switch (error) { |
+ case media::PIPELINE_ERROR_NETWORK: |
+ case media::PIPELINE_ERROR_READ: |
+ return WebKit::WebMediaPlayer::NetworkStateNetworkError; |
+ |
+ // TODO(vrk): Because OnPipelineInitialize() directly reports the |
+ // NetworkStateFormatError instead of calling OnPipelineError(), I believe |
+ // this block can be deleted. Should look into it! (crbug.com/126070) |
+ case media::PIPELINE_ERROR_INITIALIZATION_FAILED: |
+ case media::PIPELINE_ERROR_COULD_NOT_RENDER: |
+ case media::PIPELINE_ERROR_URL_NOT_FOUND: |
+ case media::DEMUXER_ERROR_COULD_NOT_OPEN: |
+ case media::DEMUXER_ERROR_COULD_NOT_PARSE: |
+ case media::DEMUXER_ERROR_NO_SUPPORTED_STREAMS: |
+ case media::DECODER_ERROR_NOT_SUPPORTED: |
+ return WebKit::WebMediaPlayer::NetworkStateFormatError; |
+ |
+ case media::PIPELINE_ERROR_DECODE: |
+ case media::PIPELINE_ERROR_ABORT: |
+ case media::PIPELINE_ERROR_OPERATION_PENDING: |
+ case media::PIPELINE_ERROR_INVALID_STATE: |
+ return WebKit::WebMediaPlayer::NetworkStateDecodeError; |
+ |
+ case media::PIPELINE_ERROR_DECRYPT: |
+ // TODO(xhwang): Change to use NetworkStateDecryptError once it's added in |
+ // Webkit (see http://crbug.com/124486). |
+ return WebKit::WebMediaPlayer::NetworkStateDecodeError; |
+ |
+ case media::PIPELINE_OK: |
+ case media::PIPELINE_STATUS_MAX: |
+ NOTREACHED() << "Unexpected status! " << error; |
+ } |
+ return WebKit::WebMediaPlayer::NetworkStateFormatError; |
+} |
+ |
} // namespace webkit_media |