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

Unified Diff: content/renderer/media/buffered_resource_loader.h

Issue 495353003: Move WebMediaPlayerImpl and its dependencies to media/blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 3 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: content/renderer/media/buffered_resource_loader.h
diff --git a/content/renderer/media/buffered_resource_loader.h b/content/renderer/media/buffered_resource_loader.h
deleted file mode 100644
index 3bdf1388c7f6c00c7d0c88628aca4bb9e5b63b25..0000000000000000000000000000000000000000
--- a/content/renderer/media/buffered_resource_loader.h
+++ /dev/null
@@ -1,323 +0,0 @@
-// Copyright 2013 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.
-
-#ifndef CONTENT_RENDERER_MEDIA_BUFFERED_RESOURCE_LOADER_H_
-#define CONTENT_RENDERER_MEDIA_BUFFERED_RESOURCE_LOADER_H_
-
-#include <string>
-
-#include "base/callback.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/timer/timer.h"
-#include "content/common/content_export.h"
-#include "content/renderer/media/active_loader.h"
-#include "media/base/seekable_buffer.h"
-#include "third_party/WebKit/public/platform/WebURLLoader.h"
-#include "third_party/WebKit/public/platform/WebURLLoaderClient.h"
-#include "third_party/WebKit/public/platform/WebURLRequest.h"
-#include "third_party/WebKit/public/web/WebFrame.h"
-#include "url/gurl.h"
-
-namespace media {
-class MediaLog;
-class SeekableBuffer;
-}
-
-namespace content {
-
-const int64 kPositionNotSpecified = -1;
-
-// BufferedResourceLoader is single threaded and must be accessed on the
-// render thread. It wraps a WebURLLoader and does in-memory buffering,
-// pausing resource loading when the in-memory buffer is full and resuming
-// resource loading when there is available capacity.
-class CONTENT_EXPORT BufferedResourceLoader
- : NON_EXPORTED_BASE(public blink::WebURLLoaderClient) {
- public:
- // kNeverDefer - Aggresively buffer; never defer loading while paused.
- // kReadThenDefer - Request only enough data to fulfill read requests.
- // kCapacityDefer - Try to keep amount of buffered data at capacity.
- enum DeferStrategy {
- kNeverDefer,
- kReadThenDefer,
- kCapacityDefer,
- };
-
- // Status codes for start/read operations on BufferedResourceLoader.
- enum Status {
- // Everything went as planned.
- kOk,
-
- // The operation failed, which may have been due to:
- // - Page navigation
- // - Server replied 4xx/5xx
- // - The response was invalid
- // - Connection was terminated
- //
- // At this point you should delete the loader.
- kFailed,
-
- // The loader will never be able to satisfy the read request. Please stop,
- // delete, create a new loader, and try again.
- kCacheMiss,
- };
-
- // Keep in sync with WebMediaPlayer::CORSMode.
- enum CORSMode { kUnspecified, kAnonymous, kUseCredentials };
-
- enum LoadingState {
- kLoading, // Actively attempting to download data.
- kLoadingDeferred, // Loading intentionally deferred.
- kLoadingFinished, // Loading finished normally; no more data will arrive.
- kLoadingFailed, // Loading finished abnormally; no more data will arrive.
- };
-
- // |url| - URL for the resource to be loaded.
- // |cors_mode| - HTML media element's crossorigin attribute.
- // |first_byte_position| - First byte to start loading from,
- // |kPositionNotSpecified| for not specified.
- // |last_byte_position| - Last byte to be loaded,
- // |kPositionNotSpecified| for not specified.
- // |strategy| is the initial loading strategy to use.
- // |bitrate| is the bitrate of the media, 0 if unknown.
- // |playback_rate| is the current playback rate of the media.
- BufferedResourceLoader(
- const GURL& url,
- CORSMode cors_mode,
- int64 first_byte_position,
- int64 last_byte_position,
- DeferStrategy strategy,
- int bitrate,
- float playback_rate,
- media::MediaLog* media_log);
- virtual ~BufferedResourceLoader();
-
- // Start the resource loading with the specified URL and range.
- //
- // |loading_cb| is executed when the loading state has changed.
- // |progress_cb| is executed when additional data has arrived.
- typedef base::Callback<void(Status)> StartCB;
- typedef base::Callback<void(LoadingState)> LoadingStateChangedCB;
- typedef base::Callback<void(int64)> ProgressCB;
- void Start(const StartCB& start_cb,
- const LoadingStateChangedCB& loading_cb,
- const ProgressCB& progress_cb,
- blink::WebFrame* frame);
-
- // Stops everything associated with this loader, including active URL loads
- // and pending callbacks.
- //
- // It is safe to delete a BufferedResourceLoader after calling Stop().
- void Stop();
-
- // Copies |read_size| bytes from |position| into |buffer|, executing |read_cb|
- // when the operation has completed.
- //
- // The callback will contain the number of bytes read iff the status is kOk,
- // zero otherwise.
- //
- // If necessary will temporarily increase forward capacity of buffer to
- // accomodate an unusually large read.
- typedef base::Callback<void(Status, int)> ReadCB;
- void Read(int64 position, int read_size,
- uint8* buffer, const ReadCB& read_cb);
-
- // 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.
- int64 content_length();
-
- // Gets the original size of the file requested. If this value is
- // |kPositionNotSpecified|, then the size is unknown.
- int64 instance_size();
-
- // Returns true if the server supports byte range requests.
- bool range_supported();
-
- // blink::WebURLLoaderClient implementation.
- virtual void willSendRequest(
- blink::WebURLLoader* loader,
- blink::WebURLRequest& newRequest,
- const blink::WebURLResponse& redirectResponse);
- virtual void didSendData(
- blink::WebURLLoader* loader,
- unsigned long long bytesSent,
- unsigned long long totalBytesToBeSent);
- virtual void didReceiveResponse(
- blink::WebURLLoader* loader,
- const blink::WebURLResponse& response);
- virtual void didDownloadData(
- blink::WebURLLoader* loader,
- int data_length,
- int encoded_data_length);
- virtual void didReceiveData(
- blink::WebURLLoader* loader,
- const char* data,
- int data_length,
- int encoded_data_length);
- virtual void didReceiveCachedMetadata(
- blink::WebURLLoader* loader,
- const char* data, int dataLength);
- virtual void didFinishLoading(
- blink::WebURLLoader* loader,
- double finishTime,
- int64_t total_encoded_data_length);
- virtual void didFail(
- blink::WebURLLoader* loader,
- const blink::WebURLError&);
-
- // Returns true if the media resource has a single origin, false otherwise.
- // Only valid to call after Start() has completed.
- bool HasSingleOrigin() const;
-
- // Returns true if the media resource passed a CORS access control check.
- // Only valid to call after Start() has completed.
- bool DidPassCORSAccessCheck() const;
-
- // Sets the defer strategy to the given value unless it seems unwise.
- // Specifically downgrade kNeverDefer to kCapacityDefer if we know the
- // current response will not be used to satisfy future requests (the cache
- // won't help us).
- void UpdateDeferStrategy(DeferStrategy strategy);
-
- // Sets the playback rate to the given value and updates buffer window
- // accordingly.
- void SetPlaybackRate(float playback_rate);
-
- // Sets the bitrate to the given value and updates buffer window
- // accordingly.
- void SetBitrate(int bitrate);
-
- // Return the |first_byte_position| passed into the ctor.
- int64 first_byte_position() const;
-
- // Parse a Content-Range header into its component pieces and return true if
- // each of the expected elements was found & parsed correctly.
- // |*instance_size| may be set to kPositionNotSpecified if the range ends in
- // "/*".
- // NOTE: only public for testing! This is an implementation detail of
- // VerifyPartialResponse (a private method).
- static bool ParseContentRange(
- const std::string& content_range_str, int64* first_byte_position,
- int64* last_byte_position, int64* instance_size);
-
- private:
- friend class BufferedDataSourceTest;
- friend class BufferedResourceLoaderTest;
- friend class MockBufferedDataSource;
-
- // Updates the |buffer_|'s forward and backward capacities.
- void UpdateBufferWindow();
-
- // Updates deferring behavior based on current buffering scheme.
- void UpdateDeferBehavior();
-
- // Sets |active_loader_|'s defer state and fires |loading_cb_| if the state
- // changed.
- void SetDeferred(bool deferred);
-
- // Returns true if we should defer resource loading based on the current
- // buffering scheme.
- bool ShouldDefer() const;
-
- // Returns true if the current read request can be fulfilled by what is in
- // the buffer.
- bool CanFulfillRead() const;
-
- // Returns true if the current read request will be fulfilled in the future.
- bool WillFulfillRead() const;
-
- // Method that does the actual read and calls the |read_cb_|, assuming the
- // request range is in |buffer_|.
- void ReadInternal();
-
- // If we have made a range request, verify the response from the server.
- bool VerifyPartialResponse(const blink::WebURLResponse& response);
-
- // Done with read. Invokes the read callback and reset parameters for the
- // read request.
- void DoneRead(Status status, int bytes_read);
-
- // Done with start. Invokes the start callback and reset it.
- void DoneStart(Status status);
-
- bool HasPendingRead() { return !read_cb_.is_null(); }
-
- // Helper function that returns true if a range request was specified.
- bool IsRangeRequest() const;
-
- // Log everything interesting to |media_log_|.
- void Log();
-
- // A sliding window of buffer.
- media::SeekableBuffer buffer_;
-
- // Keeps track of an active WebURLLoader and associated state.
- scoped_ptr<ActiveLoader> active_loader_;
-
- // Tracks if |active_loader_| failed. If so, then all calls to Read() will
- // fail.
- bool loader_failed_;
-
- // Current buffering algorithm in place for resource loading.
- DeferStrategy defer_strategy_;
-
- // True if the currently-reading response might be used to satisfy a future
- // request from the cache.
- bool might_be_reused_from_cache_in_future_;
-
- // True if Range header is supported.
- bool range_supported_;
-
- // Forward capacity to reset to after an extension.
- size_t saved_forward_capacity_;
-
- GURL url_;
- CORSMode cors_mode_;
- const int64 first_byte_position_;
- const int64 last_byte_position_;
- bool single_origin_;
-
- // Executed whenever the state of resource loading has changed.
- LoadingStateChangedCB loading_cb_;
-
- // Executed whenever additional data has been downloaded and reports the
- // zero-indexed file offset of the furthest buffered byte.
- ProgressCB progress_cb_;
-
- // Members used during request start.
- StartCB start_cb_;
- int64 offset_;
- int64 content_length_;
- int64 instance_size_;
-
- // Members used during a read operation. They should be reset after each
- // read has completed or failed.
- ReadCB read_cb_;
- int64 read_position_;
- int read_size_;
- uint8* read_buffer_;
-
- // Offsets of the requested first byte and last byte in |buffer_|. They are
- // written by Read().
- int first_offset_;
- int last_offset_;
-
- // Injected WebURLLoader instance for testing purposes.
- scoped_ptr<blink::WebURLLoader> test_loader_;
-
- // Bitrate of the media. Set to 0 if unknown.
- int bitrate_;
-
- // Playback rate of the media.
- float playback_rate_;
-
- scoped_refptr<media::MediaLog> media_log_;
-
- DISALLOW_COPY_AND_ASSIGN(BufferedResourceLoader);
-};
-
-} // namespace content
-
-#endif // CONTENT_RENDERER_MEDIA_BUFFERED_RESOURCE_LOADER_H_
« no previous file with comments | « content/renderer/media/buffered_data_source_unittest.cc ('k') | content/renderer/media/buffered_resource_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698