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

Unified Diff: media/blink/buffered_resource_loader.cc

Issue 1029763002: Introduce CancelUponDeferral() to buffered media loaders. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments Created 5 years, 9 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 | « media/blink/buffered_resource_loader.h ('k') | media/blink/buffered_resource_loader_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/blink/buffered_resource_loader.cc
diff --git a/media/blink/buffered_resource_loader.cc b/media/blink/buffered_resource_loader.cc
index d88266d06b22dbe60cd90967b7de340973b58806..b2598eaee8579c1f69f85450cd1a79af7344f652 100644
--- a/media/blink/buffered_resource_loader.cc
+++ b/media/blink/buffered_resource_loader.cc
@@ -124,7 +124,8 @@ BufferedResourceLoader::BufferedResourceLoader(
last_offset_(0),
bitrate_(bitrate),
playback_rate_(playback_rate),
- media_log_(media_log) {
+ media_log_(media_log),
+ cancel_upon_deferral_(false) {
// Set the initial capacity of |buffer_| based on |bitrate_| and
// |playback_rate_|.
@@ -578,6 +579,10 @@ void BufferedResourceLoader::SetPlaybackRate(float playback_rate) {
if (playback_rate_ == 0.0)
return;
+ // Abort any cancellations in progress if playback starts.
+ if (playback_rate_ > 0 && cancel_upon_deferral_)
+ cancel_upon_deferral_ = false;
+
UpdateBufferWindow();
}
@@ -616,6 +621,9 @@ void BufferedResourceLoader::SetDeferred(bool deferred) {
active_loader_->SetDeferred(deferred);
loading_cb_.Run(deferred ? kLoadingDeferred : kLoading);
+
+ if (deferred && cancel_upon_deferral_)
+ CancelUponDeferral();
}
bool BufferedResourceLoader::ShouldDefer() const {
@@ -732,6 +740,12 @@ bool BufferedResourceLoader::ParseContentRange(
return true;
}
+void BufferedResourceLoader::CancelUponDeferral() {
+ cancel_upon_deferral_ = true;
+ if (active_loader_ && active_loader_->deferred())
+ active_loader_.reset();
+}
+
bool BufferedResourceLoader::VerifyPartialResponse(
const WebURLResponse& response) {
int64 first_byte_position, last_byte_position, instance_size;
« no previous file with comments | « media/blink/buffered_resource_loader.h ('k') | media/blink/buffered_resource_loader_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698