| 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
|
| + };
|
| +
|
| 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_;
|
|
|