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

Unified Diff: webkit/media/buffered_resource_loader.cc

Issue 10694138: Collapse Should{Enable,Disable}Defer() into ShouldDefer() + simplify some other code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: rebase Created 8 years, 5 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 | « webkit/media/buffered_resource_loader.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/media/buffered_resource_loader.cc
diff --git a/webkit/media/buffered_resource_loader.cc b/webkit/media/buffered_resource_loader.cc
index c859f5e6d207c799e43deb2413b171c7d20a88ae..2b86d26bacbb1531d50babe65a20574097f305eb 100644
--- a/webkit/media/buffered_resource_loader.cc
+++ b/webkit/media/buffered_resource_loader.cc
@@ -299,11 +299,9 @@ void BufferedResourceLoader::Read(
}
// Make sure we stop deferring now that there's additional capacity.
- if (active_loader_->deferred())
- SetDeferred(false);
-
- DCHECK(!ShouldEnableDefer())
+ DCHECK(!ShouldDefer())
<< "Capacity was not adjusted properly to prevent deferring.";
+ UpdateDeferBehavior();
return;
}
@@ -606,61 +604,31 @@ void BufferedResourceLoader::UpdateDeferBehavior() {
if (!active_loader_.get())
return;
- // If necessary, toggle defer state and continue/pause downloading data
- // accordingly.
- if (ShouldEnableDefer() || ShouldDisableDefer())
- SetDeferred(!active_loader_->deferred());
+ SetDeferred(ShouldDefer());
}
void BufferedResourceLoader::SetDeferred(bool deferred) {
+ if (active_loader_->deferred() == deferred)
+ return;
+
active_loader_->SetDeferred(deferred);
loading_cb_.Run(deferred ? kLoadingDeferred : kLoading);
}
-bool BufferedResourceLoader::ShouldEnableDefer() const {
- // If we're already deferring, then enabling makes no sense.
- if (active_loader_->deferred())
- return false;
-
+bool BufferedResourceLoader::ShouldDefer() const {
switch(defer_strategy_) {
- // Never defer at all, so never enable defer.
case kNeverDefer:
return false;
- // Defer if nothing is being requested.
case kReadThenDefer:
+ DCHECK(read_cb_.is_null() || last_offset_ > buffer_.forward_bytes())
+ << "We shouldn't stop deferring if we can fulfill the read";
return read_cb_.is_null();
- // Defer if we've reached max capacity.
case kCapacityDefer:
return buffer_.forward_bytes() >= buffer_.forward_capacity();
}
- // Otherwise don't enable defer.
- return false;
-}
-
-bool BufferedResourceLoader::ShouldDisableDefer() const {
- // If we're not deferring, then disabling makes no sense.
- if (!active_loader_->deferred())
- return false;
-
- switch(defer_strategy_) {
- // Always disable deferring.
- case kNeverDefer:
- return true;
-
- // We have an outstanding read request, and we have not buffered enough
- // yet to fulfill the request; disable defer to get more data.
- case kReadThenDefer:
- return !read_cb_.is_null() && last_offset_ > buffer_.forward_bytes();
-
- // Disable deferring whenever our forward-buffered amount falls beneath our
- // capacity.
- case kCapacityDefer:
- return buffer_.forward_bytes() < buffer_.forward_capacity();
- }
-
- // Otherwise keep deferring.
+ NOTREACHED();
return false;
}
« no previous file with comments | « webkit/media/buffered_resource_loader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698