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

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: Move cancelation. 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
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..29515dc003e2633a1c07c567083ff6f2b7dba8bd 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_|.
@@ -573,6 +574,10 @@ void BufferedResourceLoader::UpdateDeferStrategy(DeferStrategy strategy) {
void BufferedResourceLoader::SetPlaybackRate(float playback_rate) {
playback_rate_ = playback_rate;
+ // Abort any cancellations in progress if playback starts.
+ if (playback_rate_ > 0 && cancel_upon_deferral_)
+ cancel_upon_deferral_ = false;
xhwang 2015/03/26 07:21:55 Move this block to l.585?
DaleCurtis 2015/03/26 17:22:00 Done.
+
// This is a pause so don't bother updating the buffer window as we'll likely
// get unpaused in the future.
if (playback_rate_ == 0.0)
@@ -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;

Powered by Google App Engine
This is Rietveld 408576698