Chromium Code Reviews| 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 fe01fb4d3cfa88be1f84f7b73cfc9b1f077fff97..bcb19be8ecd1ee6e31a4084e252e62d29e3e42ce 100644 |
| --- a/webkit/glue/media/buffered_resource_loader.h |
| +++ b/webkit/glue/media/buffered_resource_loader.h |
| @@ -1,4 +1,4 @@ |
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| @@ -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 |
|
scherkus (not reviewing)
2011/03/31 23:40:21
add trailing ,
vrk (LEFT CHROMIUM)
2011/04/01 22:52:12
Done.
|
| + }; |
| + |
| 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. |
| @@ -141,19 +147,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. |
| @@ -196,8 +213,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_; |