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

Unified Diff: webkit/glue/media/buffered_data_source.cc

Issue 216022: Allow <audio> to work in extension (Closed)
Patch Set: omments Created 11 years, 3 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
« no previous file with comments | « chrome/renderer/renderer_glue.cc ('k') | webkit/glue/webkit_glue.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « chrome/renderer/renderer_glue.cc ('k') | webkit/glue/webkit_glue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698