| Index: webkit/glue/media/buffered_resource_loader.h | 
| diff --git a/webkit/glue/media/buffered_resource_loader.h b/webkit/glue/media/buffered_resource_loader.h | 
| index 3e04b43d166104f0e22187951516244a24edf539..22b8bd1b95706ea6cfa8abf8c2bee1396498f89a 100644 | 
| --- a/webkit/glue/media/buffered_resource_loader.h | 
| +++ b/webkit/glue/media/buffered_resource_loader.h | 
| @@ -36,6 +36,15 @@ class BufferedResourceLoader : | 
| public base::RefCountedThreadSafe<BufferedResourceLoader>, | 
| public WebKit::WebURLLoaderClient { | 
| public: | 
| +  // kNeverDefer - Aggresively buffer; never defer loading while paused. | 
| +  // kReadThenDefer - Request only enough data to fulfill read requests. | 
| +  // kThresholdDefer - Try to keep amount of buffered data at a threshold. | 
| +  enum DeferStrategy { | 
| +    kNeverDefer, | 
| +    kReadThenDefer, | 
| +    kThresholdDefer, | 
| +  }; | 
| + | 
| typedef Callback0::Type NetworkEventCallback; | 
|  | 
| // |url| - URL for the resource to be loaded. | 
| @@ -85,9 +94,6 @@ class BufferedResourceLoader : | 
| // |kPositionNotSpecified| if such value is not available. | 
| virtual int64 GetBufferedPosition(); | 
|  | 
| -  // Sets whether deferring data is allowed or disallowed. | 
| -  virtual void SetAllowDefer(bool is_allowed); | 
| - | 
| // Gets the content length in bytes of the instance after this loader has been | 
| // started. If this value is |kPositionNotSpecified|, then content length is | 
| // unknown. | 
| @@ -149,19 +155,30 @@ class BufferedResourceLoader : | 
|  | 
| bool HasSingleOrigin() const; | 
|  | 
| +  // Sets the defer strategy to the given value. | 
| +  void UpdateDeferStrategy(DeferStrategy strategy); | 
| + | 
| protected: | 
| friend class base::RefCountedThreadSafe<BufferedResourceLoader>; | 
| - | 
| virtual ~BufferedResourceLoader(); | 
|  | 
| private: | 
| friend class BufferedResourceLoaderTest; | 
|  | 
| -  // Defer the resource loading if the buffer is full. | 
| -  void EnableDeferIfNeeded(); | 
| +  // Toggles whether the resource loading is deferred or not. | 
| +  // Returns true if a network event was fired. | 
| +  bool ToggleDeferring(); | 
| + | 
| +  // Returns true if we should defer resource loading, based | 
| +  // on current buffering scheme. | 
| +  bool ShouldEnableDefer(); | 
| + | 
| +  // Returns true if we should enable resource loading, based | 
| +  // on current buffering scheme. | 
| +  bool ShouldDisableDefer(); | 
|  | 
| -  // Disable defer loading if we are under-buffered. | 
| -  void DisableDeferIfNeeded(); | 
| +  // Updates deferring behavior based on current buffering scheme. | 
| +  void UpdateDeferBehavior(); | 
|  | 
| // Returns true if the current read request can be fulfilled by what is in | 
| // the buffer. | 
| @@ -204,8 +221,8 @@ class BufferedResourceLoader : | 
| // True if resource loading was deferred. | 
| bool deferred_; | 
|  | 
| -  // True if resource loader is allowed to defer, false otherwise. | 
| -  bool defer_allowed_; | 
| +  // Current buffering algorithm in place for resource loading. | 
| +  DeferStrategy defer_strategy_; | 
|  | 
| // True if resource loading has completed. | 
| bool completed_; | 
|  |