| Index: webkit/glue/media/buffered_data_source.cc
|
| diff --git a/webkit/glue/media/buffered_data_source.cc b/webkit/glue/media/buffered_data_source.cc
|
| index d9ae59c3424718d05eddede96cdf3b972ec3da16..36e43d0035298633268a96bde15c43784248c652 100644
|
| --- a/webkit/glue/media/buffered_data_source.cc
|
| +++ b/webkit/glue/media/buffered_data_source.cc
|
| @@ -13,6 +13,7 @@
|
| #include "net/base/net_errors.h"
|
| #include "net/http/http_response_headers.h"
|
| #include "webkit/glue/media/buffered_data_source.h"
|
| +#include "webkit/glue/webkit_glue.h"
|
|
|
| namespace {
|
|
|
| @@ -149,7 +150,7 @@ void BufferedResourceLoader::Read(int64 position,
|
| DCHECK(read_callback);
|
| DCHECK(buffer);
|
|
|
| - // Saves the parameter of reading.
|
| + // Save the parameter of reading.
|
| read_callback_.reset(read_callback);
|
| read_position_ = position;
|
| read_size_ = read_size;
|
| @@ -198,13 +199,19 @@ bool BufferedResourceLoader::OnReceivedRedirect(
|
| const webkit_glue::ResourceLoaderBridge::ResponseInfo& info) {
|
| DCHECK(bridge_.get());
|
|
|
| - // Saves the new URL.
|
| + // Save the new URL.
|
| url_ = new_url;
|
|
|
| // The load may have been stopped and |start_callback| is destroyed.
|
| // In this case we shouldn't do anything.
|
| if (!start_callback_.get())
|
| return true;
|
| +
|
| + if (!IsProtocolSupportedForMedia(new_url)) {
|
| + DoneStart(net::ERR_ADDRESS_INVALID);
|
| + Stop();
|
| + return false;
|
| + }
|
| return true;
|
| }
|
|
|
| @@ -483,12 +490,21 @@ base::TimeDelta BufferedDataSource::GetTimeoutMilliseconds() {
|
| // BufferedDataSource, media::MediaFilter implementation
|
| void BufferedDataSource::Initialize(const std::string& url,
|
| media::FilterCallback* callback) {
|
| - DCHECK(callback);
|
| - initialize_callback_.reset(callback);
|
| -
|
| // Saves the url.
|
| url_ = GURL(url);
|
|
|
| + if (!IsProtocolSupportedForMedia(url_)) {
|
| + // This method is called on the thread where host() lives so it is safe
|
| + // to make this call.
|
| + host()->SetError(media::PIPELINE_ERROR_NETWORK);
|
| + callback->Run();
|
| + delete callback;
|
| + return;
|
| + }
|
| +
|
| + DCHECK(callback);
|
| + initialize_callback_.reset(callback);
|
| +
|
| media_format_.SetAsString(media::MediaFormat::kMimeType,
|
| media::mime_type::kApplicationOctetStream);
|
| media_format_.SetAsString(media::MediaFormat::kURL, url);
|
|
|